经验分享|谈谈渗透测试中的信息搜集

更新时间:2018-08-06 11:21:48点击:184408 网络安全

最近找了一份安全实习,每天对着目标站点进行渗透测试。渗透测试的第一步是信息搜集,那么你的信息搜集完整性决定了你渗透测试的结果,”知己知彼,百战不殆”,在此,我分享下我信息搜集的一些经验。

0×01 前言

信息搜集分为主动信息搜集和被动信息搜集,主动信息搜集是与目标主机进行直接交互,从而拿到我们的目标信息,而被动信息搜集恰恰与主动信息搜集相反,不与目标主机进行直接交互,通过搜索引擎或者社交等方式间接的获取目标主机的信息。当我们拿到一个目标进行渗透测试的时候,我们关注目标主机的whois信息,子域名,目标IP,旁站C段查询,邮箱搜集,CMS类型,敏感目录,端口信息,服务器与中间件信息。针对上边的信息,网上有很多工具,但是,我们可以自己写一个工具得到所有的信息,方便渗透测试。

0×02 whois信息

whois信息可以获取关键注册人的信息,包括注册公司、注册邮箱、管理员邮箱、管理员联系手机等,对后期社工很有用。同时该工具还可以查询同一注册人注册的其他的域名,域名对应的NS记录、MX记录,自动识别国内常见的托管商(万网、新网等)。常用的工具有:chinaz,kali下的whois命令。

0×03 子域名

在渗透测试的时候,往往主站的防御会很强,常常无从下手,那么子站就是一个重要的突破口,因此子域名是渗透测试的主要关注对象,子域名搜集的越完整,那么挖到的漏洞就可能更多,甚至漏洞的级别也会更高。常用的工具有:搜索引擎(google,baidu,bing),DNS区域传送漏洞,子域名挖掘机Layer,subDomainsBrute,phpinfo.me,定制字典暴力破解。

0×04 目标IP

现在大部分网站都加了CDN,CDN的虚假IP干扰了我们的渗透测试,如何绕过CDN查找到目标的真实IP,对我们来说非常重要。首先,我们需要判断下是否存在CDN,方法很简单,只要在不同地区进行ping检测就可以知道。不同地区ping同一个网址,得到不同的IP地址,那么该网站开启了CDN加速,相反如果得到的是同一个IP地址,那么极大可能不存在cdn,但是不绝对。常用的工具有多个地点ping服务器-网站测速-站长工具。其次,绕过CDN获取真实IP的方法互联网上有很多,我常用的有二级域名法,目标长得一般不会把所有的二级域名放在cdn上,伤钱呐,确定了没有使用CDN的二级域名后,本地将目标域名绑定到同ip,能访问就说明目标站与二级域名在同一服务器叶可能在同C段,扫描C段所有开80端口的ip,挨个尝试。nslookup法,大部分CDN提供商只针对国内市场,而对国外市场几乎是不做CDN,所以有很大的几率直接解析到真实IP,不过需要国外的冷门的DNS,如下:

0×05 旁站C段查询

旁站是和目标网站在同一台服务器上的其它的网站;如果从目标站本身找不到好的入手点,这时候,如果想快速拿下目标的话,一般都会先找个目标站点所在服务器上其他的比较好搞的站下手,然后再想办法跨到真正目标的站点目录中。C段是和目标机器ip处在同一个C段的其它机器;通过目标所在C段的其他任一台机器,想办法跨到我们的目标机器上。常用的工具有webscancc,Nmap,Zenmap。

0×06 邮箱收集

首先确定目标的邮件服务器所在的真实位置,看看邮件服务器自身有没有什么错误配置,比如,没有禁用VREY或者EXPN命令导致用户信息泄露。然后从whois中获取域名的注册人、管理员邮箱,利用搜索引擎或者社工库查看有木有泄露的密码,然后尝试泄露的密码进行登录,最后从目标站点上搜集邮箱,例如网站上的联系我们,我们发发邮件钓鱼什么的。常用的工具有kali下的theharester。

0×07 CMS类型

对目标渗透测试过程中,目标CMS是十分重要的信息,有了目标的CMS,就可以利用相关的bug进行测试,进行代码审计。CMS识别方式有网站特有文件,例如/templets/default/style/dedecms.css — dedecms;网站独有文件的md5,例如favicon.ico,但是该文件可以被修改导致不准确;网站命名规则返回头的关键字网页关键字URL特征Meta特征Script特征robots.txt网站路径特征网站静态资源爬取网站目录信息;常用的工具有 云悉工具1BugScaner

0×08 敏感目录/文件

用扫描器扫描目录,这时候你需要一本强大的字典,重在平时积累。字典越强扫描处的结果可能越多,这一步主要扫出网站的管理员入口,一些敏感文件(.mdb,.excel,.word,.zip,.rar),查看是否存在源代码泄露。常见有.git文件泄露,.svn文件泄露,.DB_store文件泄露,WEB-INF/web.xml泄露。目录扫描有两种方式,使用目录字典进行暴力才接存在该目录或文件返回200或者403;使用爬虫爬行主页上的所有链接,对每个链接进行再次爬行,收集这个域名下的所有链接,然后总结出需要的信息。常用的工具有:御剑,kali下的dirb,DirBrute。

0×09 端口信息

服务和安全是相对应的,每开启一个端口,那么攻击面就大了一点,开启的端口越多,也就意味着服务器面临的威胁越大。开始扫描之前不妨使用telnet先简单探测下某些端口是否开放,避免使用扫描器而被封IP,扫描全端口一般使用Nmap,masscan进行扫描探测,尽可能多的搜集开启的端口好已经对应的服务版本,得到确切的服务版本后可以搜索有没有对应版本的漏洞。常见的端口信息及渗透方法。

端口号	   端口服务/协议简要说明	       关于端口可能的一些渗透用途
tcp 20,21 ftp 默认的数据和命令传输端口[可明文亦可加密传输]  允许匿名的上传下载,爆破,嗅探,win提权,远程执行(proftpd 1.3.5),各类后门(proftpd,vsftp 2.3.4)
tcp 22 ssh[数据ssl加密传输]	可根据已搜集到的信息尝试爆破,v1版本可中间人,ssh隧道及内网代理转发,文件传输,等等…常用于linux远程管理…
tcp 23 telnet[明文传输]	爆破,嗅探,一般常用于路由,交换登陆,可尝试弱口令,也许会有意想不到的收获
tcp 25 smtp[简单邮件传输协议,多数linux发行版可能会默认开启此服务]	邮件伪造,vrfy/expn 查询邮件用户信息,可使用smtp-user-enum工具来自动跑
tcp/udp 53 dns[域名解析]	允许区域传送,dns劫持,缓存投毒,欺骗以及各种基于dns隧道的远控
tcp/udp 69 tftp[简单文件传输协议,无认证]	尝试下载目标及其的各类重要配置文件
tcp 80-89,443,8440-8450,8080-8089 web[各种常用的web服务端口]	各种常用web服务端口,可尝试经典的top n,vpn,owa,webmail,目标oa,各类java控制台,各类服务器web管理面板,各类web中间件漏洞利用,各类web框架漏洞利用等等……
tcp 110 [邮局协议,可明文可密文]	可尝试爆破,嗅探
tcp 137,139,445 samba[smb实现windows和linux间文件共享,明文]	可尝试爆破以及smb自身的各种远程执行类漏洞利用,如,ms08-067,ms17-010,嗅探等……
tcp 143 imap[可明文可密文]	可尝试爆破
udp 161 snmp[明文]	爆破默认团队字符串,搜集目标内网信息
tcp 389 ldap[轻量级目录访问协议]	ldap注入,允许匿名访问,弱口令
tcp 512,513,514 linux rexec	可爆破,rlogin登陆
tcp 873 rsync备份服务	匿名访问,文件上传
tcp 1194 openvpn	想办法钓vpn账号,进内网
tcp 1352 Lotus domino邮件服务	弱口令,信息泄漏,爆破
tcp 1433 mssql数据库	注入,提权,sa弱口令,爆破
tcp 1521 oracle数据库	tns爆破,注入,弹shell…
tcp 1500 ispmanager 主机控制面板	弱口令
tcp 1025,111,2049 nfs	权限配置不当
tcp 1723 pptp	爆破,想办法钓vpn账号,进内网
tcp 2082,2083 cpanel主机管理面板登录	弱口令
tcp 2181 zookeeper	未授权访问
tcp 2601,2604 zebra路由	默认密码zerbra
tcp 3128 squid代理服务	弱口令
tcp 3312,3311 kangle主机管理登录	弱口令
tcp 3306 mysql数据库	注入,提权,爆破
tcp 3389 windows rdp远程桌面	shift后门[需要03以下的系统],爆破,ms12-020[蓝屏exp]
tcp 4848 glassfish控制台	弱口令
tcp 4899 radmin远程桌面管理工具,现在已经非常非常少了	抓密码拓展机器
tcp 5000 sybase/DB2数据库	爆破,注入
tcp 5432 postgresql数据库	爆破,注入,弱口令
tcp 5632 pcanywhere远程桌面管理工具	抓密码,代码执行,已经快退出历史舞台了
tcp 5900,5901,5902 vnc远程桌面管理工具	弱口令爆破,如果信息搜集不到位,成功几率很小
tcp 5984 CouchDB	未授权导致的任意指令执行
tcp 6379 redis未授权	可尝试未授权访问,弱口令爆破
tcp 7001,7002 weblogic控制台	java反序列化,弱口令
tcp 7778 kloxo	主机面板登录
tcp 8000 Ajenti主机控制面板	弱口令
tcp 8443 plesk主机控制面板	弱口令
tcp 8069 zabbix	远程执行,sql注入
tcp 8080-8089 Jenkins,jboss	反序列化,控制台弱口令
tcp 9080-9081,9090 websphere控制台	java反序列化/弱口令
tcp 9200,9300 elasticsearch	远程执行
tcp 10000 webmin linux主机web控制面板入口	弱口令
tcp 11211 memcached	未授权访问
tcp 27017,27018 mongodb	爆破,未授权访问
tcp 3690 svn服务	svn泄露,未授权访问
tcp 50000 SAP Management Console	远程执行
tcp 50070,50030 hadoop	默认端口未授权访问 

0×10 服务器与中间件信息

通过Nmap、Zmap等端口和指纹识别功能搜集,也可以使用nc和telnet获取Banner信息进行识别,常用工具有whatweb

0×11 其他

探测目标是否存在WAF,WAF识别一般是基于headers头信息,例如,Mod_Security是为Apache设计的开源Web防护模块,一个恶意的请求Mod_Security会在响应头返回“406 Not acceptable”的信息。waf00f是kali下的识别WAF的老工具,whatwaf不仅可以识别WAF类型还会给出一些bypass 方法;另外从乌云镜像站、CNVD搜集网站历史漏洞对渗透测试也是有很大帮助的。

0×12 自己写的小脚本

基于以上内容写个一个蹩脚的脚本,大佬勿喷。

0×13 总结

信息搜集在渗透测试中的作用不言而喻,脚本基于以上文章的内容的编写,笔者还会继续完善,若读者有什么建议可以留言。菜鸡一定虚心接受。最后,信息搜集很重要,信息搜集很重要,信息搜集很重要。

0×14 参考资料

http://www.91ri.org/9016.html

http://www.lsablog.com/network_security/penetration/talk-about-cms-identification/

https://klionsec.github.io/2014/12/12/subdomain-info-serarch/