2.2.2 案例分析
关于信息收集的重要性,众说纷纭,甚至有人说信息收集是安全渗透测试中用处最不明显的一环。诚然,并不是收集到的所有信息都是有效且可被利用的,但在“山穷水尽”的时候,某些信息会令人感觉柳暗花明,甚至再次找到新的突破口。下面选了几个案例将揭示,在测试中,信息收集这一阶段为整个测试过程贡献了怎样的力量。
1.服务器真实IP发现
开启CDN后的网站,会让用户根据地点不同访问不同的CDN节点服务器,并不直接访问源服务器。由于CDN节点的阻挡防护,无论是渗透测试还是DDoS攻击,攻击的目标都将是CDN节点,这样可以更好地保护源服务器的安全。
在进行渗透测试前找到目标真实IP至关重要,可以通过多种方法绕过防护找到服务器的真实IP地址。最常见的方法是通过查询历史DNS记录获取服务器的真实IP,通过真实IP直接绕过防护,进行端口扫描,服务指纹识别,绕过常规Web安全防护,扩大攻击面。
图2.1所示为通过DNS记录获取某交易所的真实IP。
图 2.1
2.目标子域名探测
子域名探测是查找一个或多个域的子域名的过程,这是信息搜集阶段的重要组成部分。子域名探测可以帮我们发现渗透测试中更多的服务,这将增加发现漏洞的可能性。查找一些用户上较少的、被人遗忘的子域名,其上运行的应用程序可能会使我们发现关键漏洞。
进行子域名探测的方法有很多,例如利用DNS域传送漏洞,查看HTTPS证书和枚举挖掘,等等。在经过大量测试实践后发现,一部分交易所后台会隐藏在其二级域名下来保证安全。
图2.2所示为某交易所后台登录界面,其子域名为21232f297a57a5a743894a0e4a80 1fc3,又长又复杂的子域名实际上并却不安全,因为其为字符串“admin”的MD5,其全称为MD5信息摘要算法(MD5 Message-Digest Algorithm),这是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(Hash Value),用十六进制表示时长度为32,用于确保信息传输完整一致,用代码表示为md5("admin")=21232f297a57 a5a743894a0e4a801fc3。
图 2.2
将后台与主站分离,在某种意义上增加了管理后台被攻击者发现的成本,但并不能规避因为自身缺陷造成的安全问题。所以,在保证隐蔽性的前提下,管理后台可以采用白名单IP访问限制、强密码、手机令牌等更加安全的登录方式。
3.API接口信息泄露
API的使用频率越来越高,占比也越来越大,所谓“能力越大责任越大”,安全地使用API固然可以带来极大的便利,但是一旦API的安全出了问题,带来的后果将是毁灭性的。在测试的第一步——信息收集中,关于API我们首先能接触到的,就是API具体使用参数等详情的信息保密状态了。
我们团队对某交易所进行安全测试时,发现该交易所的代码是外包公司编写的。在信息收集过程中,我们团队在Google上找到了该外包公司编写代码时托管在某团队协作平台上的API文档,其中详细地说明了使用API时用到的各种参数及其类型,以及具体的含义、用处,并且在样例中遗留了一些测试时使用的具体参数,如图2.3所示,这对后续的测试提供了很大帮助。
图 2.3
4.域名Whois及备案信息采集
虽然现在已经有交易所注册域名时会使用域名注册商提供的服务,没有在Whois等域名信息备案网站上泄露公司或相关人员信息,但仍然有一些交易所会“亲自”注册域名,这时利用Whois或其他工具就可以找到该交易所域名的注册公司或相关人员的详细信息。而这些不起眼的信息对于后续的测试(如密码猜解、社会工程攻击等)会有很大帮助,可以极大地提高成功率。
我们团队在对某家交易所进行安全测试时,根据该交易所在Whois上留下的门户网站域名备案信息找到了其注册公司,之后又根据注册公司的信息找到了该公司经理(亦为股东之一)的手机号、注册人邮箱等信息,如图2.4~图2.6所示。这些信息会让测试方更轻松地找到突破口,完成测试。
图 2.4
5.GitHub源码泄露发现
部分开发人员在编写代码时会习惯性地将源码上传到GitHub等代码托管平台上,而这些源码正是测试方想要拿到的信息。毕竟,如果拿到了源码,就可以对其进行审计工作,直接寻找编写源码时留下的漏洞和疏忽,这会使整个测试过程更加容易,大幅减少工作量。同时,直接审计源码也可以使找到的问题和漏洞更加全面,具有针对性。
图 2.5
图 2.6
同样,寻找交易所使用的源码是信息收集中重要的一环,图2.7所示是在一家交易所网站上找到的/.git源码文件。我们团队通过审计源码,将审计过程中找到的存放于注释中的敏感信息和其他审计所得与已发现的漏洞相互验证,成功地在测试中获得了该服务器的控制权,完成了这次测试。
图 2.7
6.敏感文件发现
敏感文件的种类很多,其中最经典、往往在测试过程中最能发挥作用的就是robots.txt、sitemap.xml等文件,一些敏感文件甚至可以成为测试的突破口。
下面仅以两家交易所网站中robots.txt的部分信息为例。对于测试方来说,获得这些信息就可以轻松地找到交易所网站中确实存在却不允许被轻易访问的敏感页面。如果这些页面存在某种规律或特点,测试者甚至可以找到其使用的组件、CMS等其他信息,进而更有针对性地进行测试工作。
在针对该交易所的测试过程中,我们团队也确实使用了其中的信息,配合其他手法成功对该交易所后台进行了测试,如图2.8和图2.9所示。
图 2.8
图 2.9