(转)手工发掘XSS漏洞之页面表单测试

2012-03-21  白云 

       基于页面表单分析的测试检查技术,甚至不需要拥有目标程序的代码,只要目标程序可以被浏览器访问,就像没有新浪网的源代码,照样可以发掘它的XSS漏洞的方法。
       基于页面表单分析的测试检查技术是建立在这样一种思维模式下,XSS漏洞的出现主要是因为给了用户一个可以输入非法代码的机会导致的,而这个机会往往指的就是可以用来跟用户交流信息的“页面表单”。“页面表单”就是常常在网页中看见的那种,可以填入文字或者数字等信息的地方。几乎现在所有的Web应用都是为了能与用户良好地沟通,而表单在这里发挥了极其关键的作用。在展开讲解此方法前,先来看看页面表单的组织结构。
       前面讲过,现在的这个发掘技术是可以不依赖于源代码的,只要能通过浏览器正常的访问就行,以谋思网站为例,首页使用IE浏览器打开谋思注册页网址http://www.imosi.com/register.aspx,出现在浏览器中的多个输入框就是一个页面表单。这是表单在视觉上的表现,


再看看表单在代码层面上的表示。保存谋思注册页为d.htm使用NotePad++打开这个文件,看到的就是一个表单的原始代码。


       页面表单其实就是将关键变量隐藏在网页后面,用户只需要按照要求填写信息,提交表单,就可以完成于Web应用程序的数据交换。这里,Web程序现在既然要求填写这些关键变量,那么这些关键变量一定是符合程序逻辑实现的。现在看到的关键变量不但是完全合法的,而且这些通过表单提交的关键变量,恰好也是一个合法的组合,这就避免了提交单一的关键变量或者某几个变量时,因为变量不够而导致无法正常发掘漏洞。
        明确表单的结构和意义后,现在就可以大胆地将要测试的目标程序通过浏览器访问,然后将其中有页面表单显示的网页保存成Html文件,打开它,删除其中那些具有干扰性的代码,留下表单代码,这里就是找到form标签,然后找到与其闭合的/form,将其中的代码保留,这个标签以外的代码删除,当然,如果发现网页中不止一个form,那么就要循环查找这些地方,把它们保留下来,删除其他干扰代码。光是简单的删除还不够,要进行一下修补。因为一般保存下来的网页文件,在form提交的地址处,也就是action后的地址,往往是不完整的地址,类似这样:<form action=./ceshi.asp,此时你需要将这个地址弥补完整,例如,你要测试的目标程序的域名是www.imosi.com,现在就要修改上面的代码为<form action=http://www.imosi.com/ceshi.asp,其实这个修改就是将目标程序所在的URL地址保持完整,不然将会出现找不到网页的情况。保存修改后的网页,用浏览器打开它,现在会发现所要测试的关键变量会清晰地展现在你的面前,不像开始时那样混乱,现在只需要将你的测试代码依次填入这些地方,然后提交,观察浏览器结果就可以了。
       在使用这种测试技术时,要注意在有些情况下,必须先满足Web程序的一定客观条件才能进一步使用表单,这在网站论坛中常常碰到,就是先要登陆论坛,才能再里面使用表单发帖,那么此时要做的就是观察目标程序是不是保留cookie信息的选项,如果有,最好登陆一次目标程序,并且选择尽可能长的时间保留cookie信息,因为这些目标陈翔一般是根据cookie来记录登陆情况的。还要注意的是,最好在提交表单的地方注意一下要填写的信息格式,例如,在一个注册用户的表单里,用户生日一般格式为xxxx-xx-xx,此时直接放入测试语句“<script>alert("test")</script>”就会引发一个格式错误,所以最好先排除那些有严格要求的地方,再去进行测试。
      基于页面表单分析的测试检查技术,是非常适合对目标程序没有原始代码的情况下进行漏洞发掘的方法,由于其测试比较符合程序逻辑,往往减少了错误测试的几率,这种技术也可以通过编程来实现自动化测试,但更适合手工测试。
-------------------------------------------------------------------------------------------------------------------
转自《揭秘Web应用程序攻击技术》原文是以百度为例的,但是现在的百度已经进行了改版,与书中的描述有差异,所以改成谋思网了。。。
533°/5334 人阅读/0 条评论 发表评论

登录 后发表评论