《黑客秘笈——渗透测试实用指南(第2版)》—第2章2.5节网站应用程序扫描

异步社区 2017-05-02

域名 配置 浏览器 主机 测试 Burp Suite

本节书摘来自异步社区《黑客秘笈——渗透测试实用指南(第2版)》一书中的第2章2.5节网站应用程序扫描,作者【美】Peter Kim(皮特 基姆),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 网站应用程序扫描
在扫描SUCK公司的网络后,我们现在已经清楚了解公司网络架构和运行的服务情况。应用开源情报工具开展信息搜集,创建了密码字典,并对网络进行漏洞扫描。那么下一步做什么?现在大多数公司都在网络中运行漏洞扫描工具,因此尽管曾经检测到ms08-067漏洞,但是发现的概率越来越小。如果渗透测试的网络补丁升级得很及时,那么通过扫描网站应用程序开展渗透测试将是重要的突破口。

使用主动扫描工具,获取网络拓扑后,运行网站应用程序扫描。下面主要介绍一款网站扫描工具。目前市面上有很多好的开源和免费的工具可以使用,例如ZAP、WebScarab、Nikto、w3af等。在这个例子中,我采用最快捷、最有效的方式开展渗透测试。BurpSuite Pro(http://portswigger.net/burp/)是一款商业工具,它仅仅花费300美元。Burp工具具有实时更新的特点,提供手工测试功能,并且包含由大量研究人员开发的扩展插件,因此这个工具绝对是物有所值。

与讨论漏洞扫描工具类似,仅仅介绍网站应用程序渗透测试需要做什么,而不是全面复杂的指导。

如果想全面掌握使用一款工具,可以深入分析源代码(使用工具如HP Fortify)和深度了解应用程序测试(The Web Application Hacker'sHandbook: Finding and Exploiting Security Flaws图书是非常棒的参考资料),下面深入了解如何有效使用Burp Suite。

2.5.1 网站扫描过程
本节介绍在网络渗透测试过程中如何使用Burp Suite Pro扫描网站应用程序。通常,在网络渗透测试中,并没有足够时间开展全方位的网站渗透测试,但是需要进行相关的操作,以便识别大型应用程序。

使用Burp Pro工具抓取/发现/扫描
使用网站应用程序扫描器进行扫描
手工参数注入
会话拓扑分析
2.5.2 网站应用程序扫描
在运行Nessus或者Nexpose工具后,找到常用系统/应用程序/服务的漏洞,现在开始深入研究应用程序。下面介绍如何使用Burp Suite工具以及应用工具的更多功能,步骤如下所示。

(1)配置网络代理。

(2)使能Burp Suite。

(3)通过应用程序抓取网页。

(4)发现内容。

(5)运行主动扫描工具。

(6)漏洞利用。

1.配置网络代理和浏览器
Burp Suite的工作原理是,通过配置Web浏览器,实现浏览器与Burp Suite应用程序,进而与网站应用程序进行通信。浏览器的请求通过可视化界面显示,不需要考虑浏览器端的防护,可以更改原始请求数据包。

首先,在Windows或者Kali操作系统中运行JAR文件,启动Burp Suite工具。启动和运行Burp Suite后,要确保代理有效并且在8080端口实施监听。打开Burp的代理标签,进入Options标签,确保Burp正在运行(见图2.35)。使用什么端口监听并不是很重要,但是如果更改了默认的监听端口,也要更改浏览器的配置端口,确保两者一致。

现在,开始配置浏览器,确保使用Burp Proxy监听的端口。我使用的Firefox插件是Foxy Proxy(https://addons.mozilla.org/en-S/firefox/addon/ foxyproxy-standard/),在第1章就已经配置完毕。该插件易于使用,能够提供多个代理,并且可以在不同代理之间快速切换。插件位于浏览器URL框的右边,由狐狸、圆、线标识。单击狐狸标识,选择Add New Proxy标签,再单击Proxy Details标签,设置Manual Proxy Configuration标签,输入本地主机(127.0.0.1)和代理端口8080。返回到常用标签,输入代理的名字,并保存配置。


2fb9acf180d01baf4365d677dc876f55157fb200

上述操作实际上是告诉浏览器将所有的流量转发到本地8080端口。通过在Burp Suite应用程序配置这个端口,开始监听数据。Burp应用程序接收网络流量并将其转发至互联网(见图2.36)。

05b53c9cc374cf7bcf075966520e53ce8a3b4156

由于已经保存了配置,因此右击fox标签,在下拉框中即可选择代理配置。在这个例子中,已经命名Burp Suite代理配置,并将其作为浏览器代理(见图2.37)。

95929daaf22bf8cebe71c5c801bbd75b436a6ea7

在设置浏览器代理后,可以浏览先前访问的网页。在这个例子中,使用浏览器访问我的网站:www.securepla.net。如果返回Burp应用程序界面,能够看到Proxy/Intercept标签闪烁(见图2.38)。


32cb2d526d3ec72a6f7f1d17eceff99deae4c779

如果看到上述情况,证明配置已经完全正确。Burp应用程序成功地捕获到发出到网站的GET请求数据包,同样也观察到cookies和其他请求信息。默认情况下,应用程序捕获所有流量。截获意味着停止浏览器向网络应用程序发送请求,您可以读取或者修改请求数据包内容,直接转发请求到网站或者丢弃请求数据包。

如果使用默认配置浏览网站,您将无法看到任何正常响应信息,直到关闭捕获按钮。通过关闭捕获按钮,仍然能够捕获所有的网页流量,但是无法直接篡改发送的每一个请求。一旦处于“Intercept”状态,在History标签的捕获标签右面就能够观察到所有的请求和响应。

现在,如果进入目标标签,就能够看到捕获的和转发的URL,可以将这个网站添加到范围标签中。范围标签定义了自动抓取和测试发生的范围,能够防止主动扫描的区域远离了指定的范围。在域名上右击,选择“Add to scope”(见图2.39),将测试中所有的网址和域名添加到这个区域(在后面内容中将深入介绍)。


3c3787ac3a70e4e63b2d84deb21efc19469389df

2.爬虫应用程序
网站应用程序测试要做的第一件事就是抓取主机。这意味着Burp应用程序将浏览整个网站,记录网站上所有不同的文件、表格和HTTP方法。首先抓取主机的目的是为了识别所有的链接、应用程序使用的各种类型参数、应用程序引用的外部网站以及应用程序功能的整体布局。

为了运行爬虫应用程序,进入目标标签和网站地图标签,右击抓取的域名,并单击“Spider this host”(见图2.40)。


43ab29f8fc1248d6b75f5e350f26b4346db03199

抓取过程完成后,Burp应用程序将包括网站应用程序清晰的整体布局,可以单击任何文件(见图2.41)查看请求和响应是什么。在左面的列表中,能够看到文件和文件夹,右边可以看到请求和响应。在网站地图右下方是过滤按钮。试着进行操作,了解过滤的内容和具备的功能。通常,我喜欢首先添加所有的域名到范围标签中,单击过滤选项,仅仅显示在范围标签以内的网站。最后删掉大量引用的域名,这些域名并不在测试的范围之内。

2e2b97e791c6c868f3094ee7074603d921a0bf6d

3.发现内容
有时候网页和目录并不是直接与网站应用程序关联的。举个例子,我经常发现管理员目录和登录网页在网站上并没有任何链接。您可能看到,当通过浏览器进入/admin/ 文件夹时,需要进入管理员鉴权的网页,在抓取阶段这个网页就会被遗漏。这通常是因为主机管理员想隐藏这些文件夹和管理员登录界面,防止普通人员访问。您在渗透测试中遇到这些情况,因此需要绕过或暴力破解鉴权过程。

Burp工具有一个特定模块,对于这种情况,特别有帮助。在网站地图标签中,右击上级URL,下拉使用工具标签,单击发现内容标签(见图2.42)。

在发现模块内部,可以单击“Session is not running”按钮(见图2.43),应用程序将启动智能暴力破解文件夹和文件结构。智能暴力破解意味着应用程序从内部找到的文件和文件夹中推理,做出最优的选择进行暴力破解。这个技术提供有效的方法,识别出文件夹和文件类型,极大拓展了应用程序测试范围。


7f8c8eba0f6812f0cbf4bf8a82656afb618f9d43


a0ad22c8e43dabd1b1ba24f8482db43a817c3017

在展示这个例子前,提示一下,我通常使用定制的密码字典用于个人的评估。这些密码字典中的一个来自于RAFT,它不再进行维护。这些密码字典可以在下面的网址中找到:

http://code.google.com/p/raft/source/browse/trunk/data/wordlists/?r=64

正如在上述图中所看到的,探测工具识别了/wp-includes/文件夹,这个文件夹WordPress应用程序都会存在。接着工具在文件夹下开始搜索普通文件夹和文件。网站地图标签位于发现模块最上面,可以单击该标签,查看扫描的所有结果。这将有助于识别隐藏的文件夹、管理员网页、配置网页和其他网页,这些信息对于渗透测试者来说都是有用的。

4.运行主动扫描模块
目前已经获取网站足够多的信息,可以开始设置攻击参数和请求包,并开始查找漏洞了。这时可以右击父域名,下拉至主动扫描主机标签(见图2.44)。运行Burp应用程序,并开始使用输入参数进行fuzz攻击。记住,这在网络中将产生大量网络流量,并在应用程序中提交大量查询请求。如果Burp应用程序弹出注释对话框,则是一个快速警告,由于主动fuzz所有参数,因此用户将接收到非常多的邮件。这就是让您的客户了解掌握渗透测试在什么时候、什么地点以及开展什么任务,是非常重要的原因。


6fcd491e267fa1e6801849c25dac16890285d0e3

扫描器运行后,结果和测试序列会在扫描标签中显示。通常查看一下扫描标签中的选项标签,以便进一步配置Burp Suite。在选项标签中,通常增加主动扫描引擎中的扫描线程数,以减少扫描时间。这将大大减少扫描所需的时间,但是请谨慎设置,如果设置的线程数过高,就有可能造成小的站点崩溃。

查看输出结果(见图2.45),Burp Suite工具发现网站存在跨站脚本攻击漏洞。工具准确描述问题、重复发送的请求以及响应信息。


57ebfcbb5b1305bf39dcfa73eb49ec06339163bf

作为一个渗透测试人员,需要验证漏洞真实性,不能存在任何误报,要识别出漏洞的真正危害性。单击其中一个跨站脚本攻击漏洞,获取GET参数。为了验证这个漏洞,需要访问:

www.securepla.net/xss_example/example.php?alert=9228a281717daa8d.

打开浏览器,输入URL网址。图2.46展示这不是一个误报,而是真正的漏洞。如果不熟悉跨站脚本攻击,需要花费一些时间研究漏洞网站应用程序框架,比如WebGoat(https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project)。


a704636901d1c2ec43ea4bb3b23febba99aeb109

Burp应用程序提供很多功能,不仅仅是检查跨站脚本攻击漏洞。它能够发现跨站请求伪造、错误SSL证书、目录遍历漏洞、SQL注入和命令注入等更多的安全漏洞。为了能够更多了解Burp,可以查阅书中4.1节的相关内容。

2.5.3 OWASP Zap Proxy(https://code.google.com/p/zaproxy/,
Kali Linux/Windows/OS X) 与Burp Pro Proxy工具相类似的开源工具是OWASP Zed Attack Proxy(ZAP)。尽管Burp是商业工具,ZAP也有相似的功能。ZAP具有流量代理、fuzz请求、抓取网页和自动扫描等功能。在Windows/OS X平台,仅需要双击OWASP ZAP可执行程序,在Kali平台可以运行owaspzap。

下面将测试一个存在漏洞的渗透测试演练工具OWASPBWA(在本书第1章安装该工具)。在这个例子中,测试owaspbricks应用程序。运行ZAP工具后,将显示图2.47所示的内容。最直接的攻击方法是在工具中输入URL地址“http://[IP of VM]/owaspbricks/”,并单击攻击。ZAP将自动运行抓取网页,测试网站漏洞。

正如看到的,所有操作都一目了然。扫描完成后,单击报警标签,查看发现的所有漏洞(见图2.48)。


7a7c25e9203660a2df5263d8750a150a52de2ae3


c0dbdec1115f2d6bfbe1faca9ea51b66eb4dca4a

使用多个网站应用程序扫描器进行扫描,与使用Nessus和Nexpose工具扫描网络漏洞是同等重要的。这是不同的扫描工具扫描相同的应用程序的输出结果(见图2.49)。正如看到的,左面是ZAP工具,右面是Burp工具,我们已经发现完全不同的漏洞、漏洞位置和不同类型的检测结果。可以快速看出两个扫描器结果有很大的差别。


11df0e6aff26a73d69fad284a2d65254c89afb71

我经常被问到的一个问题是:哪一个更好?答案是这依赖于应用在什么领域。最好的答案是两个都使用。它们具备一些相同的功能,但是在具体领域又有各自的优势。安全组织确实依赖Burp Proxy Pro比较多一些,因为它支持Burp扩展(http://portswigger.net/burp/extender/),使用扩展功能可以创建定制的扫描工具。比如创建一个应用程序处理cookies,或者在fuzz一个特定参数前还需要进行多个步骤的处理。这就是为什么Burp更胜一筹的原因,关于这一点可以从以下网址了解更多信息:

登录 后评论
下一篇
corcosa
14071人浏览
2019-10-08
相关推荐
0
0
0
2463