3.1 渗透信息搜集
信息搜集是Web渗透的第一步,也是至关重要的一步(实际上除了Web渗透,很多工作的第一步都是信息搜集)。一次完整的渗透过程是漫长的,前期信息搜集可以让人们初步了解渗透目标,而后期信息搜集却往往是成功的关键。任何攻击与防御之间的较量,都是基于信息的掌控程度,在信息不对等的情况下,很容易出现误判或失误。在安全行业团队的测试中,信息搜集被视为“最重要,最耗时”的一个步骤,甚至有专门的成员负责信息的搜集与分析。下面我们来了解一些常用的信息搜集技巧(这里使用的词语是“信息搜集”而非“信息收集”,是因为“搜”字能更好地体现出归纳整理的含义,有一定的选择性和方向性)。
3.1.1 服务器信息搜集
1.旁站
何谓旁站攻击?就是一个服务器上有多个Web站点,而我们的渗透目标是其中的一个Web站点,当我们无法拿下目标站点时,则可以尝试对服务器上的其他站点进行渗透,然后再通过跨目录或提权等方法拿下目标站点。常见的旁站查询流程如下。
(1)获得渗透目标的真实IP地址。
(2)利用网站平台、工具反查IP地址。
2.端口扫描
一台计算机开放的端口和它开放的服务是对应的,而渗透测试人员可以通过端口扫描大致了解目标开放了哪些服务,如80端口对应了HTTP服务,3306端口对应了MySQL数据库,1433端口对应了MSSQL数据库。通过对开放端口的分析,我们便可以大致知道目标网站使用了什么数据库,并可以尝试进行数据库的爆破。此外,端口扫描对后台的查找和后期的提权也是至关重要的。那常见的端口扫描方式又有哪些呢?
(1)在线平台。很多平台都提供端口扫描的功能,并且提供常见服务的默认端口,如图3-1所示。
图3-1 在线端口扫描平台
(2)工具。端口扫描工具如图3-2所示。
图3-2 端口扫描工具
3.1.2 Web信息搜集
1.二级域名
在对一些大型网站进行渗透测试时,主站很难直接发现漏洞,而子站容易出现问题。例如SQL注入,往往因为数据库的配置不严谨,导致黑客可以利用子站的注入进行跨库,或者拿下子站的服务器,利用内网危害到主站的安全。图3-3便是用一个Python的脚本来对百度的二级域名爆破的结果。
图3-3 利用脚本爆破出211个子域名
2.目录信息
在渗透中,目录是极为重要的信息。如果得到了根目录,便可以结合注入进行GetShell(取得权限),如果有了Web目录,便可以尝试对后台地址进行爆破,对后台文件进行猜解。由此可见目录的重要性,而获得目录的常见方法如下所述。
(1)phpinfo和探针文件。phpinfo文件如图3-4所示。
图3-4 phpinfo文件
PHP探针文件如图3-5所示。
图3-5 PHP探针文件
(2)搜索引擎。在渗透中,搜索引擎是一把利器,尝试用搜索引擎的语法,往往会有意想不到的收获。
下面是一些常用的搜索引擎语法。
domain:用domain命令可以查找跟某一网站的相关信息。
filetype:限制查找文件的格式类型。目前可以查找的文件类型有.pdf/.doc/.xls/.ppt/.rtf。
inurl:限定查询匹配只搜索URL链接。
link:网站外链接查询。
site:网站整站搜索引擎收录查询。
intitle:搜索网页标题中含有的关键词。
(3)扫描器。对渗透目标用常见的目录进行暴力破解。此方法往往对那些安全性较低的网站有效。
(4)爬虫。爬虫在渗透中起着很重要的作用,用来发现一些隐蔽的目录。
3.1.3 Whois信息搜集
Whois即域名查询协议,是用来查询域名的IP地址以及所有者等信息的传输协议。网络上有很多提供Whois查询的平台,如图3-6所示,将目标域名输入查询,便可以看到目标站点的域名服务器、DNS服务器以及其他隐私信息。
图3-6 Whois查询结果
3.1.4 爆破信息搜集
“爆破”是一种形象的说法,即暴力破解,一般使用穷举或字典(大量数据集合)列举的方法。在渗透测试中,爆破的作用非常重要。特别是针对一些大型企业的内部系统,很多员工为了使用方便,而忽略了密码的安全性,常常使用一些弱口令作为密码,而用户名往往就是其姓名或拼写。黑客可能尝试利用搜索引擎和社工库对渗透目标的员工名单进行搜集,然后进行密码字典生成和爆破。防范这种攻击的方式,一是增加验证,让暴力破解无法进行,例如验证码;二是提高密码安全性,这在附录中会详细探讨。