当我们测试Web应用程序的安全性的时候,经常需要对HTTP流量进行分析和动态修改。此外,取得对Web应用程序流出和流入的数据的控制权不仅对Web 应用程序安全缺陷的发现和漏洞的利用等安全测试任务具有很大的帮助,而且还有利于常规的Web应用程序测试。本文中,我们将讲解用于上述目的的工具:LiveHttpHeaders,有了这个Firefox扩展,我们不必架设代理服务器就可以方便地分析和操纵HTTP流量。
一、LiveHttpHeaders的安装
LiveHttpHeaders是一个用于分析HTTP流量的 Firefox扩展,我们可以用它来分析和重放http请求。我们下面详细的说明该插件的安装步骤。首先,将浏览器导航至http://LiveHTTPHeaders.mozdev.org/installation.html,然后鼠标单击“Installversion 0.14 of LiveHTTPHeaders now”超链接来选择当前的最新版本,如下图所示:
图1 单击图中所示的链接
如果Firefox阻止了该扩展的安装,可以在单击右边的“允许”按钮以继续安装。如下图所示:
图2 点击“允许”按钮
单击上图中的“允许”按钮就会启动安装过程,这时浏览器会弹出如下所示的“软件安装”对话框,如下图所示:
图3 单击“立即安装”按钮
单击“软件安装”对话框中的“立即安装”按钮进入下一安装画面,如下图所示:
图4 重启浏览器
在“附加附件”对话框中,请单击“重新启动Firefox”按钮,当浏览器重启后,会自动弹出如下所示画面:
图5 安装结束
这说明我们已经成功安装好了LiveHttpHeaders扩展,关闭该对话框,我们就能在工具菜单以及“查看”菜单下的“侧栏”子菜单中看到LiveHttpHeaders的菜单项了。
二、LiveHttpHeaders主窗口
根据我们目的的不同,LiveHttpHeaders有两种启动方法:当我们只想监视通信量的时候,可以从浏览器的“查看”菜单中选择“侧栏”菜单项,最后选择Live HTTP Headers菜单项;如果要使用该工具全部特性的话,则需要通过单击“工具”菜单中的Live HTTPHeaders项来打开它,如下图所示。
图6 Live HTTP Headers的主窗口
LiveHttpHeaders主窗口中有多个选项卡,不同的选项卡对应于不同的功能。窗口的中间部分显示的是发出的请求和收到的响应,而各个请求-应答对之间有水平线进行分隔。该窗口底部包含LiveHttpHeaders的动作按钮以及规定是否启用捕获模式的“Capture”复选框。选中这个按钮可以停止Li veHttpHeaders向下滚动,以便对已经产生的通信流量进行分析。
三、利用LiveHttpHeaders重放请求
除了监视HTTP流量外,我们还能利用LiveHttpHeaders重放一个请求,这对于Web应用程序的安全性测试来说非常重要。LiveHttpHeaders使我们能够轻松读写之前的请求,所以也就能够方便地通过修改该请求的各个部分来测试程序的弱点和缺陷。要进行重发的话,只要在窗口中间部分已列出的请求中选择一个,然后在窗口底部单击“Replay”按钮就会弹出如同图7中看到的那样的窗口,我们能够在此对该请求进行各种修改,例如我们可以添加额外的头部,改变请求方式(GET或POST),或者修改发往服务器的参数,等等。对请求做好修改后,单击“Live HTTP Replay”对话框底部的“Replay”按钮即可实现该请求的重发。
图7 请求重放对话框
重放可能是LiveHttpHeaders中最有用的功能,因为它直接把请求的结果加载到浏览器中,这正是各Web代理程序所不具备的,如Burp。利用重放窗口,我们可以进一步利用浏览会话进行各种修改并查看其结果。
四、修改POST参数
正如前面提到的那样,我们能够利用重放功能来改变请求的任何部分,其中包括POST参数,如图8所示。注意,改变POST请求时,需要注意头部中的Content-Length参数,因为LiveHTTPReplay不能动态提供请求内容的长度值。虽然大多数Web服务器/应用程序并不关心该值的对错,但是按照RFC的规范,该头部是必需的。如果不包含这个值,当使用了入侵检测系统(IDS)监控Web通信流量时,就会引起IDS报警。幸运的是,LiveHttpHeaders提供了一个长度计数器,它位于该窗口的左下方,我们可以利用它来插入我们的内容长度值。
图8 即时重放HTTP
除GET和POST请求之外,我们还可以利用这个工具通过TRACE、TRACK和OPTIONS方式来测试Web服务器。例如,为重放工具提供下列命令,就可以测试一个Web服务器是否允许无限制的文件上载。
图9 模拟HTTP PUT
五、过滤功能
最后要介绍的是如何过滤掉不想要的请求类型,这会在检查大型Web 应用程序时减少我们的工作量。首先单击Live HTTPHeaders主窗口中的Config选项卡,如下图所示:
图10 LiveHTTPHeaders 的配置对话框
通过该配置视图,我们可以排除和包括匹配特殊正则表达式规则的URL。使用“Filter URLs with regexp”和“exclude URLs with regexp”,可以根据请求的URL来规定哪些类型的请求是我们想要的。在上图中,以.gif、.jpg、.ico、.css和.js结尾的请求将会排除在Headers视图之外。
六、小结
本文中,我们对LiveHttpHeaders在安全测试方面的功能做了详细的介绍。总的来说,在发现XSS缺陷方面,LiveHttpHeaders是最常用的工具之一。我们可以通过几次点击就能很轻松地查看请求的内部细节,修改并重放它们。如果您留心观察的话,您就会发现LiveHttpHeaders重放的每个请求的结果,仍会进入浏览器窗口。与其它的测试工具例如应用程序代理等不同的是,LiveHttpHeaders提供了一个可视化的结果,这能帮你更快地理解它们。