XSS 自动化测试

现在我们打了一些不错的散装备,是时候组合一下,打造一款套装了。

XSS 本身由于其原理并不复杂,所以在防御上,往往一些简单的过滤就可以隔绝掉百分之九十九的漏洞,所以对于一个试图挖掘XSS 的人,如果完全手工的去挖掘漏洞,和闭着眼去山里挖金子的概率是差不多的。所以,这个时候,就需要一套自动化渗透测试的工具,帮助我们进行XSS 的挖掘,这样的工具挺多,AWVS 这种比较全面的软件,还有XSSaminer 之类的小工具。

那么,我们准备做的,是去创造一个自动化的小工具,实现自动化测试,也可以让自己更方便的配置需要的内容。

因为XSS 分成反射型,DOM 型,储存型,其中反射型相对容易发现一些,我们就以反射型漏洞挖掘为先机,开始挖掘之路,一个基本的构思比较简单:

  1. 两种起始端,一种是写个爬虫,一种是写个浏览器插件,在使用浏览的时候,每浏览一个网站,自动重发一些包,尝试进行XSS。两种起始,后边的过程基本相似。
  2. 获取网站URL
  3. 处理URL,获取参数值,并转换成map结构,key=参数,value=值。
  4. 尝试对每个值构造一个独有标识符。此处可以是只用自己设置的独有的一串字符,可以包含一些特殊字符,以方便消减漏报。
  5. 可以对重新生成的URL 发送HTTP请求,或者是利用Ajax 对当前URL发送数据。
  6. 返回状态码,为200则捕获网页,查找独有标示符。
  7. 查找成功代表一个可能的渗透漏洞。
  8. 爬虫的话,后边继续获得该URL 网页下,其他的链接,循环调用。可采用广度优先,或者是深度优先,依网站特点而定,个人倾向选择广度优先,因为不会在一个深度里越陷越深,而且获取的URL 要保证同源。

补充:

  1. 以上这个只能算是查找最简单的反射型XSS 的方法,进一步的,如果我们要检测DOM 型漏洞,就需要通过查找一些表单项,抓包分析等方法进行测试。这是后边要做的内容了。
  2. 最好添加一个日志功能,将抓包的内容以服务器日志,如nginx 日志格式保存,方便分析和进一步测试。
  3. 对于更成熟的工具,线程池和IP池都是必要的,这也是后话了。

下面就让我们用Python 从最基础的爬虫开始构建起完整的自动化检测工具吧。

使用库,beautifulsoup,urllib, PhantomJS, Selenium 等。

(未完待续)

script>