黑盒渗透测试的一些姿势和个人总结

安全 漏洞
对于“渗透测试”这个事,我也时常纠结,尤其在“度”的方面上,本文主要分享下一些姿势和个人总结,文章涉及的工具可能比较多,就不一一举例用法了。

对于“渗透测试”这个事,我也时常纠结,尤其在“度”的方面上,毕竟自己还很年轻。个人感觉,渗透是在不影响单位正常运营的前提下的一场完整攻击,目标是一个面不是一个点。但是,大家都懂得2333。

入坑以来,跟着网上师傅们分享的各种好文章划来划去,终于肚子里有点墨水挤出来了,水了一篇基于隐秘测试的黑盒渗透测试的小文分享一下。本文主要分享下一些姿势和个人总结,文章涉及的工具可能比较多,就不一一举例用法了,毕竟不想搞成一个工具使用说明文*(相关工具用法搜索一下就有了)*,也不提供下载链接了,毕竟我是好公民。

[[209259]]

一、个人准备

准备一套新win+lin虚拟机并安装常用工具,不要使用实体机。

白天好好睡觉,晚上干活,万一对服务造成伤害还可以降低影响。

二、信息搜集

1. 主动/被动搜集

信息搜集分为主动信息搜集和被动信息搜集。

主动信息搜集就是通过直接访问和扫描信息的方式进行收集信息,缺点是会记录自己的操作信息;被动信息搜集就是通过第三方服务进行信息搜集,缺点是收集信息有限。信息搜集是很重要的一部分,信息越全面对后面的攻击越有帮助,可以先尽最大努力的使用被动信息搜集方式最大效果的搜集信息,再使用主动信息搜集的方式搜集非被动搜集不到的信息。

2. 常用套路

  • 搜集网站单位信息。这项可以通过一些在线网站来查询,可以由此得到单位的基本信息。分享几个单位信息查询站点:天眼查、启信宝、企业信用信息公示系统、事业单位在线、
  • 搜集whois信息。一个网站的切入点,可以由此得到域名相关信息。列举几个whois查询站点:Chinaz、Aliyun、Whois365
  • 搜集网站备案信息:ICP备案查询网 、ICP/IP地址/域名信息备案管理系统
  • 搜集子域名信息。子域名往往是渗透过程中重点关注的对象,主站行不通的情况下往往首先想到子站入手。分享几个子域名搜集方法和工具:搜索引擎查询(Baidu、So、Bing、Google等)、DNS域传送漏洞、父站点爬取、IP反查、Forward-DNS 、子域名挖掘机、Host、Dig、Dnsenum、Dnsmap、Fierce
  • 搜集邮件系统信息。邮件系统也是需要重点关注的地方,在自建邮件服务情况下很好的利用邮件服务可以达到意想不到效果,并且在GET到某些邮件地址情况下进行钓鱼也不错的选择。可以先通过域名MX记录查看是否为自建邮件服务器,自建的情况下可以后续测试漏洞,通过TheHarvester可以进行邮箱挖掘,后续再爆破一波就美滋滋了。
  • 搜集真实IP地址。弄到藏在CDN后的真实IP的确是个头大的事情,师傅们分享的大多是通过多地ping的方式确定是否有CDN,再通过子站IP尝试和国外访问尝试的方式看看是否可获得IP,或通过历史域名解析记录寻找IP,或利用DNS查询IP、或利用邮件验证码之类功能获取邮件发送地址,或利用DDOS消耗CND进行IP泄漏。
  • 搜集旁站信息。主站搞不定的情况下搞下旁站也是一条路,毕竟目的是一个突破点。感谢师傅分享的旁站查询接口。
  • 搜集C段信息。一个单位不可能只买一个IP,很多都是大小段的买,所以从C段也能突破进单位,举例几个的查C段工具:Nmap、Zmap、Webscan、Hackmall
  • 搜集Web敏感文件。Web敏感文件比较多,日常留意多搜集。举几个例子:robots.txt、crossdomin.xml、sitemap.xml、源码泄漏文件
  • 搜集服务器和中间件信息。这一项也有多种方式,可以通过Zoomeye、Shodan等优秀的在线系统搜集,也可以利用Nmap、MSF、Zmap等端口和指纹识别功能搜集,也可以用NC和Telnet获取Banner信息进行识别,Web方面可以用Whatweb工具或者通过Headers信息。
  • 搜集WAF信息:WAF识别大多基于Headers头信息,有一个老工具Wafw00f可以用来探测一定的Waf,也可利用Sqlmap的waf脚本,也可使用Nmap的http-waf-detect和http-waf-fingerprint脚本,也可自己平时多收集Waf特征。
  • 搜集历史漏洞。若能够在根据已有信息情况下找到一枚历史漏洞将会是一个巨大的帮助。漏洞查询站点举例:exploitdb 、hackerone、CNVD 、0day5 、乌云漏洞库镜像站。

3. 从信息到规划

根据已搜集的信息进行梳理与分析,查找疏漏点进行搜集补充,从各个角度都整理一套渗透攻击步骤与思路的规划,优先以最擅长的方面切入,优先以最有把握的点切入,以不打草惊蛇为原则。

三、漏洞挖掘与利用

1. 漏洞挖掘

站点漏洞挖掘是大家都经常搞的了,挖洞技能全靠平时积累学习。看文章的师傅们水平目测都比我高,这里不班门弄斧了,只分享下一般站点漏洞挖掘的个人习惯(不对地方还请指出,3Q)。

  • 针对站点漏洞挖掘,我个人不喜欢直接上AWVS、Appscan、Nessus之类的重量级扫描器,一方面用重量级扫描器会很容易被负责的运维人员发现,这样无疑会增大接下来的渗透难度;另一方面会被绊IP,这样就损失部分代理或肉鸡;再一方面还有一定机率对站点数据和服务造成破坏,这也是渗透最不想看到的事;再者说现在的站点也没有能轻易被扫描器扫出来的Web漏洞。
  • 对一个站点,我一般会习惯性的按着从系统漏洞探测到中间件漏洞探测再到Web漏洞探测的过程。虽说大多数情况下系统漏洞和中间件漏洞碰到的不多,但万一走运了。对系统漏洞和中间件漏洞挖掘,常用Nmap脚本、MSF模块、F-MiddlewareScan框架等工具。对于Web漏洞探测,若是CMS站点首先去寻找版本漏洞,也可以WPScan、Joomscan、M7lrv-CMS之类工具扫一扫,也可以利用CMS-Exploit-Framework框架利用漏洞,但大多CMS攻击还需要靠自己积累学习(挖0day);若是自行开发的Web站点,那就需要发挥一个Web狗的特长了,先搞帐号熟悉一下基本功能和结构,重点地方重点排查,从注册到登录到功能到……从注入到跨站到第三方功能组件……多多探测,多多fuzz。
  • 主站搞不下搞旁站,旁站搞不下搞C段,只要得到一个突破口就够了。站点都不好弄情况下,还可以根据已有的信息进行社工以获得更多的信息,信息越多进行密码破解可能性越大,顺便分享个密码包(ps:忘了从哪掏的包了,感谢收集者。)。
  • 若对测试目标左挖右挖都挖不到能利用的点,那也不,还有一项:APT攻击。一个测试目标,即便站点维护强固,但也很难保证内部员工安全素质极高,一点小小的疏漏就给了攻击者可趁之机。做一个有深度的APT攻击是个很耗时耗力的事情,但对于测试目标安全性能底线而言,可以进行一个小型的APT攻击。现在常见的APT攻击手段就是水坑攻击和鱼叉式网络钓鱼。攻击的前提是社工得到足够的内部员工的体系结构、上网习性等信息,了解体系结构才能知道在哪里能够获得更有用的信息,了解上网习性才能利用习性漏洞进行开展入侵。一个软件使用版本、使用习惯都会给攻击者带来一个入侵点,但攻击者肚里也要有足够的量。反正只要能通过水坑攻击或鱼叉式钓鱼等方式搞到一台内部机,剩余的都是搞内网的事情了。

2. 漏洞利用

  • 利用挖掘出来的漏洞也要很小心,能把服务打瘫痪的漏洞就先不要尝试了。
  • 对于系统漏洞和中间件漏洞,自己常用的就是msf和exploitdb直接利用现成脚本工具打,但特别情况下也需要修改或自造脚本。
  • 对于逻辑漏洞、越权、CSRF/XSRF之类的漏洞,在没法扩大渗透深度的情况下就可以写这项的报告了。
  • 对于SSRF漏洞,环境允许的情况下可以很好的利用它进行内网探测与攻击,关于SSRF推荐猪猪侠师傅的《一个只影响有钱人的漏洞》文章。
  • 对于任意文件上传漏洞,能拿shell就可以做跳板搞内网了。
  • 对于任意文件包含和任意读取,一般就是远程包含拿shell,本地读取拿文件,特别情况下还可以扩大利用。
  • 对于SQL注入漏洞,注入要有“度”,能得到管理员密码进后台上shell就知足了,千万别动别的,利用方式上提倡自写脚本。
  • 对于XSS漏洞,不要习惯性的拿弹窗测试,不建议使用别人搭建的平台,可以利用BlueLotus_XSSReceiver搭建或者利用BeEF或者利用XSSer或者写个小脚本自建。

其他漏洞就不一一举例了,反正在隐秘测试的情况下,能悄悄的就悄悄的。

漏洞挖掘与利用辅助工具也就那些常用的那些,除了上面列举外再举例几个自己比较习惯的:Firefox插件(Hackbar、HackSearch、HttpRequester、Live Http headers、Modify Headers、Netcraft Anti-Phishing Toolbar、NoScript、Wappalyzer、Web Developer)、御剑、椰树、dirb、K8fly、Sqlmap、BurpSuite、AntSword、Hashcat、Hydra、Medusa。

四、提权与维权

1. 提升权限

虽说仅仅是个测试,但很多情况下提权还是要的,这是变点为面的前提。当然,提权也未必是在自己拿到的站点服务器或钓到的那个主机上提权,提权目的是有个高权限的机子来方便测试整个内网,比如可以以已有机器为跳板以远程提权方式来打到内网其他主机的高权限,所以只要在内网任意机器上拿到可进一步渗透利用的高级权限就够了。提权方法也有很多,不同环境下有不同的姿势。

  • 系统漏洞提权。windows下可以用systeminfo查看系统版本和补丁记录,利用没修补的漏洞提权,例如MS11080等;linux下可以用uname -a查看系统内核版本,利用系统内核漏洞提权(内核提权很容易导致系统崩溃,要小心),例如心脏出血等。
  • 数据库提权。一方面可以利用数据库漏洞得到数据库执行权的Shell;另一方面可以在站点数据库配置文件找数据库帐号密码,利用数据库系统命令执行功能获得数据库执行权的Shell。数据库漏洞上例如Mssql的JOB提权、Mysql的Mof提权。
  • Web中间件漏洞提权。通过Web服务的容器漏洞进行本地提权。例如IIS溢出、Tomcat提权等。
  • 第三方软件提权。很多开机自启的软件都会以system权限运行,或者使用者启动时使用了管理员权限运行。例如Radmin、Filezllia、搜狗拼音提权等
  • 系统错误配置提权。在windows下可以使用BeRoot工具进行系统配置检查,利用配置错误点进行提权。
  • 获取高权限账号提权。可以在控制机上利用LaZagne project(支持linux、windows、mac),可以抓取chats、mails、database、wifi、sysadmin、wallet、browsers、memory中的密码,可以利用抓取到的密码进行高权限帐号密码测试,也可以利用神器mimikatz和mimipenguin,不过在部分时候由于权限问题可能读取不到部分密码。

2. 维持权限

维权也是一个必须的点,好不容易搞到的跳板可不能轻易丢了。维权也就是所谓的留后门,无论windows下还是linux下留后门姿势都多种多样,我也就只列举几个吧。

  • 服务器站点可以采取构造Web漏洞方式维权。我感觉这种方式比放上个马可靠多,同时漏洞构造的隐蔽一些,让其他人给利用了就不好完了。比如可以构造复杂的文件包含漏洞包含放在某个系统目录下的木马图片来获取Shell,也可以构造SQL注入利用Sqlmap的--os-shell参数来执行Shell。
  • 服务器站点可以使用过狗过盾的复杂马维权。复杂马的构造需要私下自己多实验多构造了。
  • Linux、Windows账户维权。这个方法只适合没有做LDAP或堡垒机之类的SSO统一权限管理和没有屏蔽对外端口的情况,可以利用密码读取工具读取到的密码进行保持权限,也可以自建linux隐藏账户、windows隐藏账户的方式保持权限。
  • 工具法维权。工具概括来说就是主动反弹和被动连接两种。两种方式各有优缺点,例如:主动反弹方式既可以放在有公网IP的服务器站点也可以放在内网钓到的机子上,并且更方便规避防火墙、IPS等阻碍,但需要设定触发机制,不能做到想连就连;被动连接方式能够随时连,但无法利用在内网机子上(除非你拿了上层路由做了端口映射)。利用上例如msf生成后门、nc反弹,脚本反弹shell等。

3. 内网渗透

内网渗透基本都是依据当前所获得的网络环境进行策略制定,不同环境方式不同,但内网中能搞得也就常说的那些,在有比较靠谱的防火墙、NIDS、IPS的情况下内网就更加难搞了,时时刻刻还要提防它们。这里也就之列举一下常用的内网思路。

4. 常用套路

  • 网络拓扑探测。探测拓扑是个很头大的事,子内网和防火墙都会阻碍拓扑探测。大多也只能探测到上层网、公共网、内网服务器网的网络环境,再有些其他因素就导致探测的更少了。
  • 内网弱口令。内网弱口令其实还是蛮多的,可以对同子网个人电脑、内网服务器、交换机、路由器尝试弱口令破解。
  • 内网服务器漏洞。若在OA之类的内网办公通讯站点,可以挖到漏洞就可以获取到部分有助内网渗透的信息。
  • 内网路由器漏洞。无论是上层网路由还是内网服务器网路由,只要拿下路由器那就是个很大的帮助,这样就可以进一步做端口映射和转发,更好的其搜集其他内网信息,扩大了攻击面。
  • 内网个人电脑漏洞。例如利用17010之类的远程漏洞测试同子内网中的个人电脑,进而多搜集信息,以方便测试内网服务器。一个不错的内网信息搜集脚本:地址
  • 内网钓鱼。和一般钓鱼思路差不多,不过内网中更容易让别人信任,可以通过OA和办公邮件进行钓鱼。
  • 中间人攻击。不同环境下可以用不同的姿势,一般用的多的就是ARP欺骗、DNS欺骗、会话劫持,进行中间人攻击的前提是取得一定的内网权限。
  • 内网穿透。在进行部分攻击时候,可能需要让其他内网电脑穿过外网出口进行辅助测试,这里推荐一篇不错的穿越边界的姿势,另外经过Web站点做代理进行穿透时候还需要做Web端口复用。

五、后记

一场正规测试下清理痕迹就可以省了,所以这里也不写了,但还是需要老老实实供出在人家网络干了哪些事,以免以后出其他乱子扣在自己头上。另外还需要撰写漏洞报告,一个漂亮的报告是渗透测试的满意答卷,漏洞报告上不仅要体现出漏洞危害程度与漏洞细节,相应的修补建议尤其是内网修补建议要详细、规格、严谨。

责任编辑:赵宁宁 来源: 威客安全
相关推荐

2016-11-16 21:18:42

android日志

2019-12-23 14:47:19

漏洞渗透测试错误姿势

2019-12-24 13:34:24

渗透测试网络攻击漏洞

2011-11-28 15:57:26

MySQL数据库主从配置

2011-07-12 09:47:53

WebService

2009-06-22 15:36:00

如何学好java

2009-07-01 16:20:34

Flex垃圾回收性能优化

2009-09-27 11:09:42

API设计

2015-12-08 09:05:41

Java内部类

2009-07-15 16:16:22

JDBC下载

2009-06-04 09:14:32

struts学习struts常用属性

2017-11-03 09:40:27

数据库MySQLMHA

2018-01-03 10:32:21

面试经验套路

2009-11-26 10:32:57

PHP代码优化

2020-09-28 06:45:42

故障复盘修复

2012-07-03 13:55:00

ASP.NET

2013-12-24 14:50:39

Ember.js框架

2020-05-19 14:35:42

Shell脚本循环

2020-04-10 08:50:37

Shell脚本循环

2012-01-09 16:02:19

JavaJVM
点赞
收藏

51CTO技术栈公众号