NoXss 一款优秀的 Xss 批量检测工具

地球胖头鱼 2020-10-28
Web安全 发布于 2020-10-28 17:04:46 阅读 84 评论 0

简介

NoXss是一个供web安全工程师批量检测xss隐患的脚本工具。其主要用于批量检测,比如甲方内部安全巡检,人工分析千万级的url资产是不现实的,NoXss使用多进程+协程的方式,支持高并发,可以出色的完成这一任务。NoXss从实用主义出发,小巧精致,不如其他扫描器拥有各式各样的高级功能(比如绕过waf、存储型xss等)。

项目地址:

https://github.com/lwzSoviet/NoXss

原理

NoXss主要是通过“符号闭合”来检测xss隐患,使用基于“反射位置”的payload进行探测。比如当请求参数的值出现在responsejavascript代码段中,并且是以双引号的形式进行闭合,那么NoXss将使用xssjs“;这个payload;如果是以单引号的形式进行闭合,则会使用xssjs‘;进行测试。

优势

  1. 支持检查DOM类型的XSS

NoXss支持使用Chrome(推荐)和Phantomjs(默认)两种浏览器来对抗DOM类型的xss,同样支持多进程,即可以多个浏览器同时工作,但浏览器的资源占用通常是较高的,使用–browser选项意味着更慢的扫描速度、更高的CPU&内存占用。

  1. 多进程+协程支持高并发
#指定进程数 python start.py --url url --process 8 #指定协程并发数 python start.py --url url --coroutine/-c 300

漏扫的时间消耗主要集中在网络IO,NoXss支持用户自己配置进程数与协程数,需要注意的是协程并发数需要结合网络情况而定,如果配置的过高,可能出现过多的网络阻塞,导致无法检出xss。

  1. 使用基于位置的payload

Fuzz技术通常带有很大的盲目性,对于批量检测并不适合。NoXss目前确定使用的payload一共只有8个,全部基于参数反射的位置,更少的payload意味着更少的测试用例、更快的扫描速度。

  1. 接口维度的去重

对于批量检测而言,去重是一项重要的工作。除了去除各种静态资源,NoXss还会以接口为维度对url进行去重,接口由域名、端口、路径、参数键值对等多个因素共同决定。在这个过程中,对于一些相似的属性,NoXss还会对其进行泛化。

  1. 与Burpsuite协同工作

NoXss支持将Burpsuite的流量导出进行扫描:

对于渗透测试人员来说,这是一个较为友好的功能。但请不要对NoXss抱有太多的期望,它对较为复杂的xss(比如存储型)无能为力。

  1. 支持配置Cookie、Referer等请求头

在批量检测的过程中通常需要维持登录态,一些应用的后端还会校验Referer甚至其他的一些自定义的HTTP请求头部,NoXss支持用户对此进行配置:

python start.py --url url --cookie cookie

默认情况下,NoXss会根据当前扫描的url自动添加Referer头部。

安装及使用

NoXss基于python2,主要用于批量检测,Centos安装如下:

yum install flex bison phantomjs 

pip install -r requirements.txt

批量检测多个URL地址:

python start.py --file ./url.txt --save

检测单个URL地址:

python start.py --url url

扫描Burpsuite流量:

python start.py --burp ./test.xml

总结

对于某一个漏洞来说,或者就漏洞本身而言,适合扫描的漏洞种类并不是很多,更多安全问题还是需要人工去挖掘。但是对于一些简单的漏洞我们适当借助工具,这样既节省人工成本,也可以更快速、可视化的整理漏洞的种类,比如sql注入、xss漏洞这些借助工具就是比较好的方式。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
地球胖头鱼
未填写
  • 作者发布文章121
  • 作者收获粉丝2
  • 作者收到点赞0
  • 所有文章被收藏了0
  • 博客总访问量排行第2
  • 博客总访问量1.2 万(每日更新)
查看所有博文