不满意的XSS调查工具的当前作物,我写了一个自己,我非常满意的结果。我已经测试对其他蜘蛛工具,如赞普,打嗝,XSSer,XSSsniper,和其他这个脚本,它已发现在任何情况下更多的漏洞。这个工具已经打进了我几十个负责任的披露在各大网站包括Alexa世界前10名的网页,主要金融机构及大型安全公司的网页。该认证的道德黑客证书祖连现场的牺牲品,尽管这不应该打动你多,如果你真正了解欧共体理事会什么。根据记录,他们没有给我打折CEH。耻辱,但在我的脑袋像布什/切尼的哈里伯顿公司值得庆幸的是这个剧本已经下雨的奖励; 数百美元,哄抢,和名人馆,在短短几个星期的错误赏金猎人。 我觉得我有乐趣我填了它,所以我想现在公开发布它。技术上ì公开发布它的第一天我就开始在上面,因为它已经在我的GitHub上的全部时间,但判断由Github上的交通图它不完全的安全工具的比伯。希望更多的人会发现,这篇文章将阐述它的逻辑,使用和缺点后,一些使用它。 基本用法 安装必备的Python库,给它一个URL,然后看着它蜘蛛整个网站寻找在每一个角落的XSS漏洞。 易- 获得安装python - 画中画git的克隆HTTPS ://github.com/DanMcInerney/xsscrapyCD xsscrapyPIP安装- R软件,TXTscrapy抓取xsscrapy - 一个url = “http://example.com”登录后刮: scrapy抓取xsscrapy - 一个url = “http://example.com/login” - 用户= my_username - 一条PW = MY_PASSWORD所有的安全漏洞发现将在格式化,vulns.txt的地方。当它发现有漏洞的用户代理头输出示例: XSS攻击向量xsscrapy将测试
XSS攻击向量xsscrapy不会测试
让我知道,如果你知道你已经看到的XSS,可利用在野外等标题的,我也可以在脚本中为他们加检查。
如果你能创造出像跨站脚本中有一个日历事件,但你只能访问特定的URL这是从立即响应页面不同的触发它,然后这个脚本会错过它。
DOM的跨站脚本会得到检验。
这也许应该不用说,但Captcha的会阻止脚本的测试是由它们的保护形式。
因为Scrapy不是一个浏览器,它不会使JavaScript的,所以如果你要扫描一个网站,是重金打造的AJAX这一刮板将无法前往所有可用链接。我会研究在未来加入这一功能,虽然它不是一个简单的任务。 测试字符串 很少有跨站脚本蜘蛛在那里,但确实存在的那些往往只是踩住了数百名不同的XSS有效载荷十万的目标,然后寻找确切的反映。这是愚蠢的。如果<和>被过滤,然后<IMG SRC = X的onerror =警报(1)>是要失败的,就像坚硬如<SCRIPT>警报(1)</ SCRIPT>,所以我选择了一些聪明的定位更沿着逻辑线ZAP使用。 9zqjx当这样做的反射点的初始测试中的源代码,这是所使用的字符串。它是短暂的,采用的是非常罕见的字母组合,并且不使用任何HTML字符,以便lxml的可以准确地解析响应而不错过它。 '“()= <X>因为它有一切必要的字符以执行跨站脚本有效载荷这个字符串是非常有用的。尖括号之间的“×”有助于防止可能发生像在一些ASP过滤器,允许<和>但如果有它们之间的任何字符的误报。 '“(){} [];内嵌的JavaScript注入。执行内部嵌入的JavaScript的跨站脚本有效载荷的最重要的特征是“或”,这是必要的出局,你正在注入的变量。其它字符,可能需要创建的JavaScript功能。此攻击路径是有用的,因为它不需要<或>这是最常用的过滤字符。 JavaScript的:提示(99 )如果我们找到一个注入点,如:<a href="INJECTION">那么我们不需要',“,<或>,因为我们可以只使用上面的有效载荷触发XSS。我们增加了几个大写字母来绕过写得不好的正则表达式过滤器,使用的提示而不是警报,因为警报也是常用过滤,并用99,因为它不需要引号,是短暂的,而不是1正如你可以猜测也定期过滤。 逻辑 Xsscrapy将拉低禁止的URL列表,从该网站的robots.txt文件添加到队列中,然后启动蜘蛛现场随机选择1 6普通用户代理开始。该脚本是建立在网络蜘蛛库Scrapy的顶端这又因为在Python asynchronosity更简单,更快捷和比线程更稳定是建立在异步Twisted框架。您可以选择在settings.py并发请求的金额; 默认情况下,它是12我也选择使用lxml的库来解析响应,因为它的3-4倍的速度是受欢迎的替代BeautifulSoup。 随着每个URL的脚本蜘蛛,它会发送第二个请求的URL与9zqjx测试字符串作为Referer头和三分之一请求的URL / 9zqjx上涨到URL的末尾,如果有在URL中没有变量为了看,如果这是一个注入点为好。它也将分析用户代理的代码中反映的原始响应。为了节省内存我也取代了原来的哈希查找重复的URL过滤股票Scrapy与布隆过滤器。 当xsscrapy找到像一个URL变量的输入向量,将加载与测试字符串9zqjx的价值。为什么9zqjx?因为这对谷歌很少安打,只有5个字符长,所以它不会有问题,太长时间。该脚本将使用LXML +的XPath搞清楚,如果注射点是插图中的HTML标签,如<标题>注塑</ TITLE>,就像一个HTML属性中分析响应<输入值=“注入”>,或内部嵌入的JavaScript类VAR ='注射';. 一旦它确定其中注塑发生它可以计算出该字符将是最重要的,并应用适当的XSS测试字符串。它也将计算出,如果大部分的HTML属性括有“或”,将这一事实适用于它的最终判决什么可能或可能不容易受到攻击。 一旦它找到了一个反射点的代码,并选择1 3 XSS字符串的部分上面,将重新发送与9zqjx包围XSS字符串的要求,如9zqjx'“()= <X> 9zqjx,然后分析来自服务器的响应。然而,有一个陷阱,以这整个方法。由于我们注入的HTML字符,我们不能使用lxml的分析反应,所以我们必须使用正则表达式来代替。理想情况下,我们会使用正则表达式为预处理和后处理,但是这将需要更多的时间和正则表达式的技巧比我具备的。话虽这么说,我还没有在野外发现一个例子,我相信这会作出不同。绝对不意味着他们不存在。 该脚本不编码的有效载荷,除了形式的请求。它将执行一个请求与未编码的有效载荷和一个请求与HTML实体编码的有效载荷。这以后可能会改变,但现在在我看来,至少有95%的XSS漏洞的顶级网站没有任何过滤所有使编码的有效载荷主要是不必要的。 使用正则表达式xsscrapy将报告其发现的调试输出后的跨站脚本字符的字符串被发送和响应处理。默认情况下,脚本的输出设置为DEBUG,并会很冗长。你可以,如果你想在xsscrapy / settings.py改变这一点。如果没有发现任何东西,你会看到“警告:丢弃:在http://example.com无XSS漏洞”。 但是应当注意的是,重定向是上,这意味着它会刮去一些域不在设置为起始地址,如果起始的URL中的域名重定向到它们的原始域的一部分。您可以通过取消REDIRECT_ENABLED在xsscrapy / setting.py禁用重定向。 手动测试报告的漏洞 如果你看到一个打在一个站点中的漏洞,你需要手动去测试它。火狐的扩展HackBar和篡改数据:贸易工具。去格式化,vulns.txt并选中“类型”字段。 标题:使用Firefox +篡改数据编辑/创建头和有效载荷的头值网址:只要按下与Firefox的URL,并更改为有效载荷看到“注射点”的参数表格:使用Firefox + HackBar。内xsscrapy报告到HackBar的上半部分的“POST URL”字段中输入值,然后勾选“启用后的数据”,并在底盒,如VAR1 =“> <SVG / onload事件进入你的变量和有效载荷=提示(9)>&VAR2 = <SVG /的onload =提示(9)> 网址的结尾:使用Firefox,到xsscrapy报告中列出的网址,您的有效载荷增加像example.com/的URL的末尾第1页/ <SVG /的onload =提示(9)> “线”字段只是为了快速识别,如果该漏洞是一个误报,并看看它的一个HTTP属性注入或HTML标记注入。推荐有效载荷: 属性注入:“> <SVG /的onload =提示(9)> 标签之间注入:<SVG /的onload =提示(9)> 未来
来源:http://danmcinerney.org/xsscrapy ... ulnerability-spider |