使用Fiddler的X5S插件查找XSS漏洞
OWASP top 10的安全威胁中的CrossSite Scripting(跨站脚本攻击),允许攻击者通过浏览器往网站注入恶意脚本。这种漏洞经常出现在web应用中需要用户输入的地方,如果网站有XSS漏洞,攻击者就可以通过这种漏洞向浏览网站的用户发送恶意脚本,同时也可以利用该漏洞偷取sessionid,用来劫持用户帐户的会话。
所以网站开发者必须针对这种攻击进行适当的测试,必须过滤网站的每个输入及输出。为了使漏洞检测更容易,也可以使用各种扫描器,有很多自动或手动工具可以帮我们查找这些漏洞。X5S就是一款用来测试XSS漏洞的工具,它是Fiddler的一个插件,是一个WebDebugging Proxy。
X5S是专门帮助渗透测试人员查找网站的XSS漏洞的。这里需要先说明的是,该工具不是自动化工具,只是列出哪里可能存在XSS漏洞,所以要使用该工具,读者需要了解XSS,知道什么样的编码可能导致产生XSS漏洞。该工具只针对有经验的渗透测试人员,因为他们知道如何利用编码漏洞插入恶意脚本。
在本文中,我们可以看到如何使用包含x5s插件的Fiddler,以及如何找到网站中的漏洞。
Fiddler:Fiddler是一款流行的Webdebugging proxy工具,可以监视与记录用户PC与网站之间的流量,即可以通过log文件审查流量,也可以调试基于Java和.NET的HTTP相关的应用程序。当然,Fiddler对所有用户免费。
Fiddler也支持与浏览器相结合,使其更易使用。支持的浏览器包括IE、GoogleChrome、Safari、MozillaFirefox、Opera等。
图1Fiddler截图显示了左侧的流量日志
读者可以从这里下载Fiddler。在Fiddler中,可以找到许多标签,用来分析流量与包的行为。本文不涉及如何分析流量的知识,主要是演示得用X5S挖掘XSS漏洞。
X5S:X5S是Fiddler中的一个插件,使用fiddler的包记录技术,并通过在每个请求中添加一条序文(Preamble),来找出包中的哪些请求可能存在XSS漏洞。但用户需要了解XSS和encoding编码知识,因为所有和XSS相关的工作都要手动完成。
基本上X5S就是去检测需要用户输入的地方有没有被正确编码。有时Unicode字符转换可能bypass一些安全过滤,所以也会检测这种字符转换。
该插件会查看URL中的请求和响应,之后尝试注入XSSpayloads来确定是否存在XSS漏洞。如果读者知道如何运行某处的代码,就会发现挖掘XSS漏洞还是挺容易的。
另外,读者需要知道的是,该工具基本上只能检测反射型XSS问题,不能检测基于DOM的XSS漏洞,也不能检测存储型XSS,因为这种漏洞的数据不会在请求和响应的参数中出现。要想检测这两种漏洞,读者需要用额外的工具。
要想使用X5S挖掘Web应用程序中的XSS漏洞,可以从以下连接下载X5S并安装,安装之前记得确保已经安装了Fiddler:
安装完后,启动Fiddler,就可以看到X5S标签了,如下图所示:
图2Fiddler中的X5S标签
可以看到X5S标签已经添加到Fiddler中了。如果读者在自己的Fiddler中看不到Watcher标签,不必担心,watcher只是fiddler的另一个插件,用来进行XSS测试。本文只对X5S感兴趣,只讨论该插件。
配置
在开始挖掘XSS漏洞之前,我们需要对X5S进行适当配置。首先是进入Fiddler,打开X5S标签,选择顶部的enable复选框,之后在Preamble文本框输入XSS。这里可以输入任意单词,但要确保不是常见的词,X5S会用该选项注入请求的每个参数中。接下来选择“EnableDomain Name Targeting”前面的复选框,并添加域名,这里可以添加所有想要测试的域名,而且可以添加多个,完全取决于用户。
另外别忘了选中“Request”和“Responses”前面的复选框,并在“AutoInjection Options”下选中所有复选框。
图3X5s配置
下面进行测试用例配置
测试用例配置
X5S的标签下面还有三个子标签,单击第二个“TestCase Configuration”。
在该标签下可以配置X5S的测试用例,即探测字符,包含三种类型:
可转换测试用例:探测字符可能是大写的、小写的、以及转换为其它形式。
传统测试用例: XSS注入使用的字符。这些注入字符包括”、’、<和>。读者应该已经知道,如果不经过适当过滤,这些字符可能是引起XSS漏洞的主要问题所在。
超长UTF-8测试用例:这种测试用例会注入non-shortestUTF-8编码或传统测试用例,例如ASCII字符<的UTF-8格式为0x3C。
选择想要测试的字符。这里可以选择任意多个,或直接全选。之后就可以开始XSS攻击,挖掘注入点了。
图4X5S测试用例配置
为了演示效果,这里我添加了一个包含XSS漏洞的域名。但为了安全起见,本文把网站的域名隐藏了。
下面开始一个页面一个页面地测试所有forms,并在Result标签查看扫描结果。如果显示搜索结果,说明网站可能存在XSS漏洞。单击其中的任意一条扫描结果,可以在下面的文本区域查看细节描述。
图5X5S fiddler中的XSS扫描结果
选择某条结果,下面的文本区域就会显示细节描述,如加上XSS字符后是如何发现preamble的。查看细节描述并分析,描述中的红字部分,显示了页面中preamble的信息。
下一步要做的就是查找疑似包含漏洞的URL。Fiddler左侧记录了之前访问过的URL,我们要做的就是找出包含漏洞的URL请求。查看记录,找到用灰色高亮的请求地址。
如下图所示,为了安全起见,这里把URL信息隐藏了。
图6包含可疑preamble信息的URL请求
可以看到红框内的URL用亮灰色高亮显示了。右击该条记录,选择copy下的“JustURL”,拷贝该请求URL。
图7 拷贝请求URL
打开浏览器,将该地址拷贝到浏览器,并用自己的XSS payloads替换地址中的preamble字符。读者可以使用以下XSS payloads:
<script>alert(1)</script>
“><script>alert(1)</script>
</style><script>alert(1)</script>
“)</script><script>alert(1)</script>
“><img src=”a” onerror=”prompt”>
这种情况下有很多XSS payloads可用,上文中的这些payloads如果显示一个Javascript警告框并显示1,就说明执行成功了。因为在payloads中插入了alert(1),弹出了对话框就表示网站执行了我们的自定义脚本,也就是说该站存在XSS漏洞。
图8 用Fiddler与X5S找到XSS漏洞
下面测试是否能在alert对话框中显示cookies,只需要将alert(1)替换成alert(document.cookie)即可。
如果在alert对话框中显示了cookies,那说明这是一个比较严重的漏洞,攻击者可以利用该漏洞劫持用户的sessions以劫持用户帐户,可能对用户或网站造成损害。
这是利用X5S查找网站反射型XSS漏洞的最简单演示,显示了X5S对渗透测试人员的重要性。
为什么渗透测试人员不使用该工具
许多渗透测试人员不推荐该工具,唯一的原因是当今已经有很多集成了各种扫描技术的扫描工具,这些扫描器可以爬行(crawl)网站的所有URL并列出发现的所有漏洞,大部分扫描器都很棒。而该工具只能检测反射型XSS漏洞。
同时该工具花费的时间也比较长,因为我们必须手动检测每个URL,有可能错过某个包含XSS漏洞的页面,就没办法对这个页面进行检测了,因此也有可能在浪费了大量时间后因软件的局限性没有发现漏洞。
但是我们发现仍有许多渗透测试人员经常使用这个工具,这完全取决于测试人员自己的选择。不过我仍建议读者试试这个工具,如果用得顺手,可以继续用该工具查找WEB应用程序中的XSS漏洞。作为初学者,读者可以使用该工具提高关于XSS payloads的相关知识,有时我们可能要花费数小时才能exploit某个可疑的漏洞。
总结:
X5S是一个很不错的Fiddler插件,可以用作查找XSS漏洞的渗透测试工具。不过只有理解了XSS的基本原理,以及存在多少种方法注入Javascript代码之后再使用该工具。如果用户不擅长手工XSS测试,该工具无疑只是个鸡肋。但对专业XSS测试人员,使用该工具可能是查找web应用的XSS漏洞的最快方式。通过本文的示例可知,该工具找到了所有可能存在XSS漏洞的可疑热点(hotspots),用户只需要测试这些热点,并确认哪里可以执行外部脚本,如果可以注入就表示成功了。否则就继续测试,直到测试完所有的XSS payloads。只有有经验的渗透测试人员能确认某个可疑网站是否存在XSS漏洞,因为他们能更好地理解web应用的输出和注入的payloads的行为反馈。
我们已经知道使用这个工具之前需要有相当的经验,同时也需要很多时间去打开每个URL检测其中的所有forms,来检测XSS漏洞是否存在,是一个很费时间的过程。而这些东西在自动漏洞扫描器中都是自动完成了,使该工具只有少数研究者和测试人员使用,但其仍可作为一个不错的开端。
地址:http://resources.infosecinstitute.com/using-x5s-with-fiddler-to-find-xss-vulnerabilities/
使用Fiddler的X5S插件查找XSS漏洞的更多相关文章
- xss漏洞校验
Xss(跨站脚本攻击)大家应该已经都有所了解,下面讲讲怎样查找xss漏洞吧. 确定xss漏洞的基本方法是使用攻击字符串来验证的,例如”><script>alert(document. ...
- XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识
一.标题:XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识 automated XSS testing assistant 二.引言 ...
- XSS自动化检测 Fiddler Watcher & x5s & ccXSScan 初识
一.标题:XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识 automated XSS testing assistant 二.引言 ...
- Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。
Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说... root@xi4ojin:~# cd ...
- 利用窗口引用漏洞和XSS漏洞实现浏览器劫持
==Ph4nt0m Security Team== Issue 0x03, Phile #0x05 of 0x07 |=----------------- ...
- 为什么主流网站无法捕获 XSS 漏洞?
二十多年来,跨站脚本(简称 XSS)漏洞一直是主流网站的心头之痛.为什么过了这么久,这些网站还是对此类漏洞束手无策呢? 对于最近 eBay 网站曝出的跨站脚本漏洞,你有什么想法?为什么会出现这样的漏网 ...
- (汉化改进作品)BruteXSS:Xss漏洞扫描脚本
今天给大家进行汉化改进的事一款脚本工具:BruteXSS,这款脚本能自动进行插入XSS,而且可以自定义攻击载荷. 该脚本也同时提供包含了一些绕过各种WAF(Web应用防护系统)的语句. 0×01简 ...
- Web渗透测试(xss漏洞)
Xss介绍—— XSS (cross-site script) 跨站脚本自1996年诞生以来,一直被OWASP(open web application security project) 评为十大安 ...
- 通过代码审计找出网站中的XSS漏洞实战(三)
一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为 ...
随机推荐
- Base64编码保存到文件服务器
byte[] buffer = Convert.FromBase64String(param.Base64Code); System.Net.WebClient webClient = new Sys ...
- HDU 4496 D-City (并查集)
题意:有n个城市,m条路,首先m条路都连上,接着输出m行,第i行代表删除前i行的得到的连通块个数 题解:正难则反,我们反向考虑使用并查集添边.首先每个点都没有相连,接着倒着来边添加边计算,当两个点父节 ...
- Loadrunner中参数化实战(7)-Unique+Each iteration
参数化数据30条: 脚本如下,演示登录,投资,退出操作是,打印手机号: 首先验证Vugen中迭代: Unique+Each iteration 设置迭代4次Action 结果如下:
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...
- Android 使用 LruCache 缓存图片
在你应用程序的 UI 界面加载一张图片是一件很简单的事情,但是当你需要在界面上加载一大堆图片的时候,情况就变得复杂起来.在很多情况下,(比如使用 ListView, GridView 或者 ViewP ...
- express-9 Handlebars模板引擎(2)
视图和布局 视图通常表现为网站上的各个页面(它也可以表现为页面中AJAX局部加载的内容,或一封电子邮件,或页面上的任何东西).默认情况下,Express会在views子目录中查找视图.布局是一种特殊的 ...
- SSH建立连接的过程
1. 服务器建立公钥档: 每一次启动 sshd 服务时,该服务会主动去找 /etc/ssh/ssh_host* 的档案,若刚刚安装完ssh软件时,由于没有这些公钥档案,通过/etc/init. ...
- 接口测试第二课(Fiddler实现APP抓包)
Fiddler简介: Fiddler是强大且好用的Web调试工具之一,它能记录客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数 据. Fiddler 的运行机制其实就 ...
- git 学习笔记5--rm & mv,undo
rm 删除文件 rm <file> #Unix删除文件 git rm <file> # git删除文件 git rm -f <file> # git强制删除文件 g ...
- three.js阴影
<!DOCTYPE html> <html> <head> <title>Example 01.03 - Materials and light< ...