使用Fiddler插件X5S寻找XSS漏洞

跨站脚本是 OWASP 十大威胁中的一个。这种漏洞允许攻击者注入恶意代码。应用程序中任何用于可输入的位置,都有可能发现这种问题。如果网站存在XSS漏洞,攻击者就可以向常规用户注入恶意脚本。XSS漏洞可以用于偷取会话id,也可以劫持处于活动状态的用户会话。

网站开发人员必须测试网站是否容易受到此类攻击。他们需要验证输入,处理输出。为了找到网站上的XSS漏洞,他们也会使用各种可用的扫描器去发现XSS或者其他漏洞。目前已经有许多自动的和手工的工具,可以用于找到这些漏洞。X5S同这些工具类似,它是web调试代理器Fiddler的一个插件。
X5S转为渗透测试人员开发,用于查找XSS漏洞。有一件很重要的事情需要注意,X5S并非一个自动化的XSS发现工具,它只列出可能存在XSS攻击的位置。所以你需要非常了解XSS,并知道编码问题是如何导致XSS攻击的。这个工具是为经验丰富的渗透测试人员准备的,因为通常他们知道如何利用编码完成客户端脚本代码注 
接下来,我们会介绍如何使用X5S寻找网站中可能存在的XSS漏洞。
 
Fiddler: Fiddler 是一款流行的web代理调试工具,它可以监视和记录你的浏览器与网站之间的通信流量。你可以通过对应的日志文件分析流量。这个程序也可以调试分析使用HTTP的Java和.NET应用程序。Fiddler对所有人都免费。
 
Fiddler支持的浏览器有Internet Explorer, Google Chrome,Safari,Mozilla Firefox,Opera,等。而且其使用很简单。
 
Fiddler下载地址: http://www.fiddler2.com/fiddler2/
 
Fidder中有许多标签(tabs),它们可以用于分析流量和数据包行为。这里,我不会去解释如何分析流量,因为本文的重点是使用X5S查找XSS漏洞。
 
X5S: 基于Fiddler开发的插件,它使用fiddler的包记录机制,并尝试在请求中添加代表性的字符,以便找出存在跨站攻击的请求。但是你需要很好的理解跨站脚本和编码问题。X5S需要你手动完成与跨站脚本有关的事情。
 
基本上,X5S会探测那些没有对用户输入进行安全编码的位置。有时候,Unicode字符转换可能会绕过安全过滤,所有也需要检测。
 
通过查看URLS对应的请求和响应,并注入XSS载荷,以便确认XSS是否存在。现在轮到你来实战才华了,如果你知道如何控制代码运行的位置,那么你将很容易找到XSS漏洞。
 
还有一件事我要说明一下,这个工具只能用于反射型XSS问题,无法探测DOM类型的XSS漏洞。当然它也没有能力去获取存储型XSS漏洞,因为这些数据并不存在于请求和响应的参数中。针对这两种XSS漏洞,你可能需要额外的工作。
 
首先下载fiddler安装,然后再安装X5S。
 
注意: X5S 根据请求和相应头,在参数中注入代表性的内容,所以它支持 Get 和
Post 请求。
 
X5S下载地址: http://xss.codeplex.com/releases/43170/download/115610

如上所见,X5S出现在fiddler的tab标签中。如果你没有在你的fiddler中看见watcher,不要担心。它是fiddler的另一款用于XSS测试的插件。我们此处仅关心的是X5S,因此要集中精力。
配置
在我们开始寻找XSS漏洞前,我们需要合理配置X5S。
首先,切换到fiddler的X5S 标签,选择最上方的enable复选框。在Preamble 处输入 XSS,此处可以输入任何单词,记住这里的词不要太普通。它将被X5S用于注入请求参数。
然后,选择Enable Domain Name Targeting复选框,添加域名,这里就是用于测试XSS的网站所属域名,可以添加多个域名。
不要忘记选择"Requests"和"Responses",以及勾选Auto-Injection Options处的所有选项。

大小写配置
X5S下有三个tab窗口,选择"Test case configuration",此处我们将设置X5S的字符探针,有下面三种情形:

transformation
多数时候,输入是良性的,这里的字符可以用于快速发现应用程序是否按照对应的方式转换字符.  如果被探测到,则可进行进一步的XSS攻击测试.
例如, 使用U+FF1C全角型小于符号代替 ASCII '<',结合词 'script' 插入到HTML中'.

Traditional Test Case
传统的XSS测试,通常注入ASCII字符 >.  如果输出时未进行安全编码,你也许可以控制HTML,注入脚本.

Overlong UTF-8 Test Case
超长 UTF-8 测试,例如: U+003C代替ASCII的'<' .  如果这个字符被转换为短字符,如果输出没有被安全编码,你也许可以控制HTML,注入脚本.

选择一条结果,下面的窗口将会显示preamble与XSS字符串。如红色部分所示。查看并进行详细的分析。然后复制对应的URL进行XSS测试。例如:
<script>alert(1)</script> or <script>alert(1)</script> in case alert is being filtered
“><script>alert(1)</script> or “><script>alert(1)</script>
</style><script>alert(1)</script>
“)</script><script>alert(1)</script>
“><img src=”a” οnerrοr=”prompt”>
为何渗透测试人员不使用这个工具 ?
很多渗透测试人员不推荐使用这个工具,原因是已有很多web扫描器能够检测XSS漏洞。这些扫描器可以爬行每个链接,并列举出所有已知的漏洞。其中的大部分扫描器都工作的很好。但是这个工具仅能探测反射型XSS。
我们还需要花费很多的时间,手动去验证 这些URL。在这个过程中,我们可能会遗漏XSS漏洞。花费很多时间后,可能因为软件的限制,结果我们没有找到漏洞。
当然,你可能也会看到,有些渗透测试人员会常常用到这个工具。这取决与测试者的选择。我推荐你试试这个工具。有些时候它表现的不错。作为初学者,你可以使用这个工具来提高自己XSS相关的知识。

========================================================================

XSS漏洞扫描器的原理及方法

Web漏洞扫描最常用的方法是模拟攻击技术,通过向Web服务器提交精心构造的攻击向量,记录下服务器返回的响应,从响应中寻找漏洞可能存在的特征标记,如果发现特征标记则认为Web应用程序存在相应漏洞。
XSS漏洞的基本检测原理与前面所述相同。
考虑一种较简单的场景:
GET /username.php?name=jack HTTP/1.1
Host:www.abc.com
...(省略了HTTP请求头一些非关键字段)
服务器对提交的变量没做过滤,返回的响应报文:
HTTP/1.1 200 OK
Date: Fri,01 Jul 2011 00:38:55 GMT
Server:BWS/1.0
Content-Length:48
Content-Type:text/html;charset=gb2312
Cache-Control:private
Connection:Keep-Alive

<HTML><BODY>
    Welcome, jack !
</BODY></HTML>

在这种情况下,如果用户恶意构造一个请求:
GET /username.php?name=<script>alert("XSS");</script> HTTP/1.1
Host:www.abc.com
...(省略了HTTP请求头一些非关键字段)
服务器返回响应报文:
HTTP/1.1 200 OK
Date:Fri,01 Jul 2011 00:38:55 GMT
Server:BWS/1.0
Content-Length:75
Content-Type:text/html;charset=gb2312
Cache-Control:private
Connection:Keep-Alive

<HTML><BODY>
    Welcome,<script>alert("XSS");</script>!
</BODY></HTML>
页面里的script脚本会在浏览器里执行,如果换成其它目的的恶意脚本,后果会不堪设想。



检测流程说明:
1. 从爬虫的结果数据库里提取检测点: 一些表单或URL
2. 从测试脚本数据库里提取测试脚本,结合检测点构造出攻击向量;
3. 发送攻击向量到远程服务器;
4. 收到响应后,分析响应,与验证匹配数据数据库相匹配;
5. 通过验证后,则记录下漏洞相关信息,把结果保存在漏洞结果数据库中;
6. 未通过验证,进行下一组测试,
注: XSS的测试效果很大程度上由测试脚本的质量决定,本扫描系统的脚本为OWASP所推荐的测试脚本。

========================================================================

[原文]: http://resources.infosecinstitute.com/using-x5s-with-fiddler-to-find-xss-vulnerabilities/
http://wenku.it168.com/d_0001306467.shtml

Fiddler+X5S(XSS漏洞扫描,抓包)工具 Fiddler 是用C#写出来的,它包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用.net框架语言进行扩展。 Fiddler支持断点调试技术,当你在软件的菜单—rules—automatic breakpoints选项选择before request,或者当这些请求或响应属性能够跟目标的标准相匹配,Fiddler就能够暂停Http通讯,并且允许修改请求和响应。这种功能对于安全测试是非常有用的,当然也可以用来做一般的功能测试,因为所有的代码路径都可以用来演习。 通过显示所有的Http通讯,Fiddler可以轻松地演示哪些用来生成一个页面,通过统计页面(就是Fiddler左边的那个大框)用户可以很轻松地使用多选,来得到一个WEB页面的“总重量”(页面文件以及相关js,css等)你也可以很轻松地看到你请求的某个页面,总共被请求了多少次,以及多少字节被转化了。 用户可以加入一个Inspector插件对象,来使用.net下的任何语言来编写Fiddler扩展。RequestInspectors 和 ResponseInspectors提供一个格式规范的,或者是被指定的(用户自定义)Http请求和响应视图。 另外,通过暴露HTTP头,用户可以看见哪些页面被允许在客户端或者是代理端进行缓存。如果要是一个响应没有包含Cache-Control 头,那么他就不会被缓存在客户端。 同类的工具有: httpwatch, firebug, wireshark。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值