问题
POST请求是用于提交复杂表单最常见的方法。不同于GET取值,我们无法仅通过查看网页浏览器窗口顶部的URL来得知所有被传递的参数。参数经由连接从我们的浏览器被传送到服务器。所以,我们必须使用工具人来观察输入。
这项测试可以帮助你辨别输入,包括隐藏域和由运行在网页浏览器中的JavaScript计算得到的值。了解各种各样的输入类型(比如整数,URL,HTML格式的文本)之后,你就能够构造合适的安全测试用例或误用案例。
解决方案
POST数据可能很难懂,原因在于许多站点会在自己接收数据之后将你重定向到另一个页面。POST数据可以很有用,当你按“后退”按钮时,它阻止你两次提交相同的表单。不过,这种重定向使我们很难直接在Firebug中抓取POST数据,所以这里我们将尝试另一件工具:WebScarab。
WebScarab需要你调整Firefox设置,如图3-7所示。一旦将其配置好用于截获数据,它就可以用在本章所有的秘诀中。它的功能如此强大,我们强烈推荐你使用它。
要配置Firefox以便使用WebScarsb,请按以下步骤操作:
1.启动WebScarab
2.从菜单栏中选择“工具”→“选项”(Windows,Liunx),或者在Mac OS中按下(命令键+逗号)以激活Firedox首选项菜单如图3-7所示。
3.选择“高级”选项卡,然后选择其中的“网络”选项卡。
4.在这里,单击“设置”,并手动设置到localhost的代理,端口是8008.
5.将这个代理服务器应用到所有协议。
然后,可以按下步骤使用WebScarab来观察POST数据;
1.浏览到某个使用POST表单的页面。你可以通过查看页面源代码并查找特定HTML标签的方法来标识出别样的表单。如果你找到<from>标签,请查找method参数。如果显示method=“post”,那么这就是使用POST数据的表单。
2.在表单中输入一些简单信息并提交。
3.切换到WebScarab,你应该会看到若干个条目显示这你最近的几个页面请求。
你可以在图3-8中看到WebScarab所获取的信息。
双击将方法(Method)设定为POST的任一请求。你将会看到这个页面请求的所有细节。在请求头下面,你会找到一段内容,它包含所有的POST变量及其取值。
这些头信息与请求头遵循相同的格式,仅仅是“名称一值”对,但它们是由服务器而不是浏览器来设置的。举个例子,请看图3-9的底部,那里显示了URL编码的POST数据。
讨论
WebScarab是一件功能强大的工具。作为代理,它能够揭示在你的浏览器和Web服务器之间所有可以被看到的内容,这不同于Firebug,后者会在你每次单击链接时重置。WebScarab会保持记录,直到被关闭。你可以保存这种历史,以便重新提交HTTP请求(修改其中的某些取值)。其实,使用WebScarab,你可以观察并更改Web服务器发送给你的一切内容。
图3-9:WebScarab知道你在POST中隐藏的信息
这证明,POST数据虽然比查询字符串或Cookie数据(这两者都可以从请求头中找到)要稍微难找些,但它的提取、更改和重新提交也不难完成。正如应用永远也不应该相信查询字符串中的数据那样,同样的道理也适用于POST数据,甚至是隐藏表单域。
警告:
如果你试图浏览器受SSL保护的页面,WebScarab导致浏览器弹出各种各样的警告。这些警告指出,你正在访问的网站的加密签名是不正确的。这是可以预见到的,因为WebScarab正在截获请求。不要将这种警告(使用工具的结果)与你的网站上SSL或加密不工作的提示相混淆。如果你禁用了WebScarab之后确仍然看到SSL错误,那么你才应该担心。
同样滴地,如果配置WebScarab用作代理,那么FTP请求将完全失效。
Firefox有个附加组件称作SwitchProxy(https://addons.mozilla.org/en-US/firefox/addon/125),它允许你在使用WebScarab这样的代理和使用另一个代理(比如,你公司的代理)或者完全不适用代理之间切换。如果你的正常环境需要你使用代理,那么SwitchProxy就特别方便,因为手动切换非常不方便。
搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核
本文暂时没有评论,来添加一个吧(●'◡'●)