《黑客秘笈——渗透测试实用指南》—第2章2.4节Web应用程序的扫描

本文涉及的产品
.cn 域名,1个 12个月
简介:

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

2.4 Web应用程序的扫描
黑客秘笈——渗透测试实用指南
网络扫描器、Peeping Tom可大致揭露测试目标的网络构造。在此之后,我们就可以进行Web应用程序扫描了。本文主要围绕Burp Suite程序讨论Web应用程序的扫描方法。确实有许多开源、免费的工具可进行Web应用程序扫描,例如ZAP、WebScarab、Nikto、w3af等程序都很不错。但是我们有必要再次强调一下,渗透测试的工具应当是速度最快、扫描结果最好的测试工具。虽然Burp Suite专业版(http://portswigger.net/burp/)是款付费工具,但是其价格仅需300美元。不仅其作者积极地进行着更新,许多的安全研究人员还在为其开发各种插件,而且它还有许多用于手工测试的评估功能。综合来看,它无疑是我们的最佳选择。

2.3.1节没有逐一介绍漏洞扫描工具,这里也不会详细介绍Web应用程序的渗透测试工具,而会侧重性地介绍适合大多网络渗透测试的测试步骤。如果要对某个Web应用程序(网站源代码)进行全面测试,您就要进行源码分析(利用HP Fortify之类的软件)和深入的程序测试(The Web Application Hacker’s Handbook:Finding and Exploiting Security Flaws是个不错的选择)。现在,我们一起来了解如何高效使用Burp Suite吧。

2.4.1 Web应用程序的扫描流程
本节将介绍使用专业版的Burp Suite程序扫描Web应用程序的具体方法。一般来说,网络渗透测试的时间都很紧张,我们无法对Web应用程序进行完备的测试。在扫描大型Web应用程序的时候,我通常按照如下步骤进行测试。

用Burp Pro进行Spider(爬取)/Discovery(挖掘)/Scanning(扫描)。
用Web应用程序扫描器进行扫描。
手动注入参数。
Session令牌分析。
2.4.2 Web应用程序的扫描工具
在使用Nessus或者Nexpose找到常见的操作系统、应用程序、网络服务的漏洞之后,就应当针对应用程序进行深度测试了。本节将讲述使用Burp Suite深入测试Web应用程序的具体方法。有关的测试步骤如下。

1)配置网络代理

2)开启Burp Suite

3)对应用进行爬取(Spider)

4)对内容进行挖掘

5)进行主动扫描

6)漏洞利用(exploit)

1.配置网络代理和浏览器
Burp Suite应当作为Web浏览器和Web应用程序的通信通道来用。只有这样,它才可以清楚地获取浏览器发送的各种请求,您才可以对原始请求进行修改,而不顾忌客户端的保护机制。

首先,无论您的测试平台安装的是Windows系统还是Kali系统,您都要通过JAR程序启动Burp Suite(见图2.14)。启动程序之后,您还要开启Burp的代理服务器功能,使其在8080端口提供代理服务。即在Burp的Proxy→Options标签中,确保Burp处于运行状态。其实代理服务器程序工作于哪个端口都无关紧要,关键在于更改默认的端口设置时,要确保浏览器的代理服务器配置和Burp Suite的设置一致。


14cefdda4982b1bed6c0d9a07083c729cd817c21

接下来,我们调整Web浏览器的设置,让它使用Burp提供的网络代理功能。本文使用的Firefox插件是Foxy Proxy(http://addons.mozilla.org/en-US/firefox/addon/foxyproxy- standard/)。我们在1.1.3节介绍过它的安装方法。我们可以在Foxy Proxy中设置多个代理,并通过它快速地切换代理服务器。在浏览器地址栏的右边,有个带有圆圈、横线和狐狸的图标。单击这个图标,选中Add New Proxy,选中Proxy Detail标签,将Manual Proxy Configuration设置为本机127.0.0.1,代理端口设为8080。再回到General标签,为代理设置一个名字,保存配置即可(见图2.15)。


07fe18de6d191725facc2702cc6929d302754132

上述操作把浏览器的所有流量转发到本机的8080端口。这个端口应当是您刚才配置的Burp Suite的监听端口。Burp会接收这些流量,再把它转发给Internet。

在您保存了代理服务器的设置后,右击Foxy Proxy的图标,选择代理服务器的配置。在本例中,将代理的配置命名为Burp Suite,并且选用了这个配置(见图2.16)。


a5eb53718bf8ec231ec7881dc1a4b7481c715630

为浏览器配置好了代理设置之后,我们再来浏览先前挑选出来的Web应用程序。这里以我的网站www.securepla.net 进行说明。如果我们再切换到Burp程序,此时,可以看到Proxy/Intercept标签变亮了(见图2.17)。

如果配置无误,您应当能看到图2.17所示的效果。我们可以看到Burp捕获到了GET请求,同时也能看到cookie和其他请求信息。在默认的情况下,如果使用程序的最初设置,Burp会截获(Intercept)所有的流量。即Burp Suite会拦下Web浏览器发向Web应用程序的浏览请求,您可以读取或者修改它们,然后再将请求转发出去或者直接丢弃掉。


7931f1526b19ee5b032250e1eef79730021ec996

也就是说,默认情况下您是无法正常浏览网站的,除非您关闭掉Intercept(拦截)按钮。因为请求被拦截了下来,所以浏览器获取不到服务器的任何应答。在关闭Intercept按钮后,我们仍可捕获所有Web流量,不过这样一来我们就不能修改浏览器发送的请求数据了。关闭拦截功能之后,我们仍然可以在Intercept右侧的History标签中看到所有的浏览器请求和服务器应答。

现在,我们切换到Target标签,查看我们处理和转发的URL。首先,我们把网址添加到Scope中。Scope定义了进行自动抓取、测试的范围,帮您过滤掉扫描范围之外的域名。后文再对这个过滤功能将进行细致的介绍。现在,先将所有您想测试的URL或者FQDN添加到Scope中。在图2.18中,右击域名,选择Add to scope。


ec296ea9fbf18faf8b49468f7c1c951073c3605b

2.爬取Web应用程序
测试Web应用程序的第一步是爬取网站。即是说,我们首先要用Burp对整个网站进行爬取,记录其上的所有种类的文件、表格、HTTP方法等。我们要通过爬取手段知道网站都有哪些链接、使用了什么样的参数、都链接到了哪些外部的网站,进而了解Web应用程序的大致功能。

如欲爬取Web应用程序的页面,可单击Target→Site map标签,然后右键单击要爬取的域名,然后单击Spider this host,如图2.19所示。


b563a6cd0ae1b72bacd01de96d8e856d43083c0b

待其完成爬取网站的操作之后,Burp就会分析出Web应用程序的大致布局。如图2.20所示,单击任何文件,就能看到对应的请求和应答。在程序的左栏里可以看到网站全部的文件和文件夹,右栏里可看到浏览器请求和服务器应答。在Site map标签的正下方是执行过滤功能的Filter按钮。您可以通过它筛选出对渗透有价值的内容。通常,我先将所有的域名添加到Scope中,然后单击Filter按钮,设置程序令其只显示Scope中的内容。这样,就可以让Burp过滤掉不在测试范围内的大量内容。

3.深入挖掘网站内容
某些情况下,您无法直接通过Web应用程序(网站)的链接找到某些网页和文件夹。例如,一些网站上就没有admin文件夹或者登录页面的链接。但是,只要您在浏览器的地址栏里输入/admin/folder,就可以看到admin认证页面。爬取网站的操作阶段可能会漏掉这些信息。因为常规用户不应当看到这些内容,所以主机管理员通常会隐藏这些文件夹和管理登录页面的链接。然而渗透测试恰恰就要寻找这些内容,以便绕过认证,或者对这些认证页面进行暴力破解。


f902491abbafed2bfabf1a47ca286abf3d8f1676

Burp里专门有个专门应对此类场景的模块。同样是在Site map标签中,我们右击上级网址,然后在下拉菜单中选择Engagement tools,最后单击Discover content(见图2.21)。

c221f1adb9c8750bb22406a6d6f3a81dd92a8d37

在Discovery模块中,单击Session is not running按钮。此后,Burp就会对文件夹和文件结构进行智能暴力破解(smart brute forcing)。这里所说的智能暴力破解,是指Burp会根据它在应用中所找到的文件、文件夹,做出动态的选择,来进行更好的暴力破解。它能够快速地鉴别文件、文件夹,更好地帮助您进行应用程序测试。

在我自己进行安全评估时,我更喜欢使用一些专门定制的字典。我不知道现在是不是有人还在维护RAFT项目的字典。几年之前,确实有一帮小伙子开发出了常见文件夹名和文件名的字典——RAFT,他们那时还会定期更新。这个项目发布了各种不同的字典。您可根据自己的测试范围情况选用相应的字典。他们发布字典的网址是http://code.google.com/p/raft/source/browse/trunk/data/wordlists/?r=64

从图 2.22 中可以看到,Discovery 工具发现了文件夹/wp-includes/。这个文件夹通常是WordPress程序的目录。然后,它在那个文件夹中搜索常见类型的文件夹和文件。您可以单击Discovery模块顶端的Site map标签,查看所有的扫描到结果。这样就能快速地发现那些隐藏的文件夹、管理页面、配置页面,以及其他对测试有帮助的页面。


df74bf8297bc66c494a745266e1062285e42d2b5

4.主动式漏洞扫描
如果您已经掌握了目标网站的大致情况,就可以调整参数或请求,以查找它们的漏洞。右键单击上级域名,选择Active scan this host(见图2.23),即可启动Burp的应用程序扫描器,对网站进行模糊测试。这种扫描会造成极大的网络流量,会对Web应用程序发起大量查询。有一点需要注意,如果被测网站有评论功能,在进行模糊测试的时候,Web应用程序可能会给客户发送海量的E-mail邮件。所以,在主动测试之前,务必要让您的客户了解这些情况。

4bc788d79d0370dcd9fbc035430d508b9639b37e

启动扫描器后,您可在Scanner标签里查看扫描结果,以及将要进行的测试队列。您可能需要在Scanner标签下的Options标签中,对Burp Suite的选项进行深入地调整。我通常会增加Active Scan Engine的线程数,以减少扫描时间。虽然增加线程可显著地缩短扫描时间,但是过高的线程数量也可能把小型网站直接拖垮。

扫描结果表明,Burp Suite发现了该网站的一个XSS漏洞。它清楚地描述了问题所在、触发的请求,以及相应的服务器应答(见图2.24)。


e1d3e2d27be7c6878b512324c4b4bfad42bf80f1

渗透测试人员不仅要排除全部的误报,并且要验证漏洞的严重程度。所以我们要验证Burp找到的问题是否真的存在。单击扫描结果中的某个XSS漏洞,可以看到所触发漏洞使用的GET参数。接下来,我们要访问这个网址,再现这个问题:

http://www.securepla.net/xss_example/example.php?alert=9228a%3Cscript%3Ealert(1)%3C/script%3E281717daa8d%3C/script%3E281717daa8d)

打开浏览器之后,我们输入这个URL。如图2.25所示,网页信息证明了这个警告不是误报,是一个客观存在的漏洞。如果您尚未熟悉XSS攻击,可花些时间来了解像WebGoat这类的进行Web漏洞实验的应用平台:


aeada1eacbfa2821346bcc7d6d2ae8fe7b2db0ab

除了检测XSS漏洞之外,Burp还可以识别CSRF问题、无效SSL证书、目录遍历漏洞、SQL注入、命令注入等。关于Burp的详细使用方法,可参考4.1节。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
146 5
|
14天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
65 19
Selenium IDE:Web自动化测试的得力助手
|
16天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
113 17
Selenium:强大的 Web 自动化测试工具
|
15天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE是开源的Web自动化测试工具,适用于Chrome、Firefox等多款浏览器。它提供简单的录制与回放功能,用户可通过录制浏览器操作自动生成测试脚本,支持导出为多种编程语言,便于非专业测试人员快速上手,有效提升测试效率与质量。
121 6
Selenium IDE:Web自动化测试的得力助手
|
25天前
|
监控 前端开发 JavaScript
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
30 6
|
1月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
1月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
32 4
|
1月前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
1月前
|
数据可视化 数据库 开发者
使用Dash构建交互式Web应用程序
【10月更文挑战第16天】本文介绍了使用Python的Dash框架构建交互式Web应用程序的方法。Dash结合了Flask、React和Plotly等技术,让开发者能够快速创建功能丰富的数据可视化应用。文章从安装Dash开始,逐步介绍了创建简单应用程序、添加交互元素、部署应用程序以及集成更多功能的步骤,并提供了代码示例。通过本文,读者可以掌握使用Dash构建交互式Web应用程序的基本技巧和高级功能。
|
2月前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序