本节书摘来自异步社区《黑客秘笈——渗透测试实用指南》一书中的第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的设置一致。


接下来,我们调整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)。


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

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


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

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


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

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


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

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


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

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


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


在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标签,查看所有的扫描到结果。这样就能快速地发现那些隐藏的文件夹、管理页面、配置页面,以及其他对测试有帮助的页面。


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


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

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


渗透测试人员不仅要排除全部的误报,并且要验证漏洞的严重程度。所以我们要验证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漏洞实验的应用平台:


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

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

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

  1. 《黑客秘笈——渗透测试实用指南(第2版)》目录—导读

    版权 黑客秘笈--渗透测试实用指南(第2版) • 著 [美] Peter Kim 译 孙 勇 责任编辑 傅道坤 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 3 ...

  2. 《黑客秘笈——渗透测试实用指南》—第2章2.3节 外部或内部的主动式信息收集...

    本节书摘来自异步社区<黑客秘笈--渗透测试实用指南>一书中的第2章2.3节 外部或内部的主动式信息收集,作者[美]Peter Kim(彼得 基姆),更多章节内容可以访问云栖社区" ...

  3. 黑客秘笈-渗透测试实用指南 第三版

    黑客秘笈-渗透测试实用指南 第三版 目录 前言 提示和免责声明 介绍 渗透测试团队与红队 总结 第1章 赛前准备--安装 假定攻破练习 设定你的行动 设置你的外部服务器 红队的核心工具 Metaspl ...

  4. 《黑客秘笈——渗透测试实用指南(第2版)》—第2章2.7节总结

    本节书摘来自异步社区<黑客秘笈--渗透测试实用指南(第2版)>一书中的第2章2.7节总结,作者[美]Peter Kim(皮特 基姆),更多章节内容可以访问云栖社区"异步社区&qu ...

  5. 《黑客秘笈——渗透测试实用指南》—第1章1.1节搭建渗透测试主机

    本节书摘来自异步社区<黑客秘笈--渗透测试实用指南>一书中的第1章1.1节搭建渗透测试主机,作者[美]Peter Kim(彼得 基姆),更多章节内容可以访问云栖社区"异步社区&q ...

  6. 网络安全-《黑客秘笈渗透测试实用指南(第2版)》工具安装部分

    后门制造工厂 ● Patch PE, ELF, Mach-O 二进制文件注入shellcode git clone https://github.com/secretsquirrel/the-back ...

  7. 好书推荐:《黑客秘笈:渗透测试实用指南》

    内容简介‍‍ 所谓的渗透测试,就是借助各种漏洞扫描工具,通过模拟黑客的攻击方法,来对网络安全进行评估. 本书采用大量真实案例和集邮帮助的建议讲解了在渗透测试期间会面临的一些障碍,以及相应的解决方法.本 ...

  8. Kali Linux 无线渗透测试入门指南 第七章 高级 WLAN 攻击

    第七章 高级 WLAN 攻击 作者:Vivek Ramachandran, Cameron Buchanan 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 知己知彼,百战不殆. 孙子,< ...

  9. Kali Linux 无线渗透测试入门指南 第六章 攻击客户端

    第六章 攻击客户端 作者:Vivek Ramachandran, Cameron Buchanan 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 安全强度取决于最弱的部分. – 信息安全领域 ...

最新文章

  1. 人生苦短,不光要用Python,还要在VSCode里用
  2. 一年春事,桃花红了谁……
  3. Winpcap进行抓包,分析数据包结构并统计IP流量
  4. java怎样生成文档_java中如何创建文档中心的目录
  5. 软件测试-PR录制脚本程序的时候出现license invalid,error code=0的错误
  6. nyoj 420(快速幂)
  7. 循环队列(0965)
  8. python 列联表自动拆分_python自动化办公:实现按照一列内容拆分excel
  9. SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理
  10. Swift之旅--数据类型
  11. Charles基本使用
  12. c语言n次方怎么输入_C语言实现斐波拉契数列
  13. 训练数据量中关于batch_size,iteration和epoch的概念
  14. 怎样访问服务器系统盘,访问云服务器上的系统盘
  15. 【ER网络?BA网络?WS网络?NW网络?】复杂网络分析+数据集+代码实现
  16. su灯光插件_V-Ray for SketchUp渲染外部照明快速入门
  17. Kaplan-Meier plot cutoff选择
  18. SAP ABAP 工作区,内表,标题行的定义和区别
  19. 扒一扒随机数(Random Number)的诞生历史
  20. python中常用的utils

热门文章

  1. Linux基本信号的使用
  2. 串匹配算法——BF算法
  3. Android NDK的文件夹
  4. Python 标准库 urllib2 的使用细节
  5. 01.CSS动画--transform
  6. Linux内核启动过程概述
  7. MVC学习笔记2 认识项目的目录结构与核心的DLL
  8. step2 . day5 C语言中的结构体和枚举
  9. 【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)
  10. 动态库与静态库优缺点比较(转 侵删)