lwzSoviet/NoXss
GitHub: lwzSoviet/NoXss
一款高效的跨站脚本漏洞扫描器,支持反射型和 DOM 型 XSS 检测,适合大规模 URL 批量扫描。
Stars: 444 | Forks: 72
# NoXss

[](https://github.com/lwzSoviet/NoXss/issues)
[](https://github.com/lwzSoviet/NoXss/releases)
[](https://github.com/lwzSoviet/NoXss/blob/master/LICENSE)
NoXss 是一个跨站脚本漏洞扫描器,支持反射型 XSS 和 DOM 型 XSS。它的速度非常快,适合测试数百万个 URL。它已在 Bug Bounty 项目中发现了一些 XSS 漏洞。
# 功能特性
+ 速度快,适合测试数百万个 URL
+ 支持 DOM 型 XSS(使用 Chrome 或 Phantomjs)和反射型 XSS
+ 目前仅使用 8 个基于注入位置的 Payload(非模糊测试,更准确,更快速)
+ 异步请求(使用 gevent)和多进程
+ 支持单个 URL、文件以及来自 Burpsuite 的流量
+ 基于接口的流量过滤
+ 支持特定 headers(referer、cookie、自定义 token 等)
+ 支持通过 ID 快速重新扫描
# 目录
```
├── engine.py
├── logo
├── cookie.py
├── url.txt
├── cookie
│ └── test.com_cookie
├── traffic
│ ├── 49226b2cbc77b71b.traffic #traffic file(pickled)
│ └── 49226b2cbc77b71b.reflect #reflected file(pickled)
├── config.py
├── start.py
├── url.txt.filtered #filtered urls
├── util.py
├── README.md
├── banner.py
├── requirements.txt
├── result
│ └── 49226b2cbc77b71b-2019_10_29_11_24_44.json #result
├── model.py
└── test.py
```
# 截图

# 环境
Linux
Python2.7
浏览器:Phantomjs 或 Chrome
# 安装
### Ubuntu
+ 1.`apt-get install flex bison phantomjs`
+ 2.`pip install -r requirements.txt`
### Centos
+ 1.`yum install flex bison phantomjs`
+ 2.`pip install -r requirements.txt`
### MacOS
+ 1.`brew install grep findutils flex phantomjs`
+ 2.`pip install -r requirements.txt`
*如果您想使用 "--browser=chrome" 进行扫描,必须手动安装 chrome。您可以使用 "--check" 来测试安装情况。*
`python start.py --check`
# 使用方法
```
python start.py --url url --save
python start.py --url url --cookie cookie --browser chrome --save
python start.py --url url --cookie cookie --browser chrome-headless --save
python start.py --file ./url.txt --save
python start.py --burp ./test.xml --save
python start.py --file file --filter
```
### 选项
**--url** 从 URL 扫描。
**--id** 根据任务 ID 从 *.traffic 文件重新扫描。
**--file** 从文本文件扫描 URL(如 ./url.txt)。
**--burp** 扫描来自 burpsuite proxy 的 *.xml(base64 编码,如 ./test.xml)。
**--process** 进程数量。
**--coroutine** 协程数量。
**--cookie** 使用 cookie。
**--filter** 过滤 URL。
**--browser** 使用浏览器(chrome、chrome-headless 或 phantomjs)进行扫描,擅长 DOM 型 XSS 但速度较慢。
**--save** 将结果保存到 ./result/id.json。
**--clear** 扫描后删除流量文件。
### 如何扫描来自 Burpsuite 的数据
在 Proxy 中,“Save items” ==> “test.xml”

然后您可以扫描 test.xml:
`python start.py --burp=./test.xml`
### 如何重新扫描
首次扫描后,在 ./traffic/ 中会生成 taskid.traffic 和 taskid.reflect 文件:
+ taskid.traffic:请求的 Web 流量(已序列化)。
+ taskid.reflect:反射结果(已序列化),包含反射参数、反射位置、类型等信息。
NoXss 将使用这些中间文件进行重新扫描:
`python start.py --id taskid --save`
# NoXss 的工作原理
### 载荷
NoXss 仅使用 8 个 payload 进行扫描。这些 payload 基于参数的反射位置。更少的 payload 使其比模糊测试更快。
### 异步与多进程
NoXss 使用协程实现高并发。
### 支持 DOM 型 XSS
越来越多的页面使用 DOM 来渲染 HTML。NoXss 可以通过使用 Phantomjs(默认)或 chrome 来解析它。
### 分析文件
有些 XSS 很难扫描。NoXss 会在 traffic/ 中保存一些文件用于分析,包括:
+ *.traffic(扫描过程中的流量文件)
+ *.reflect(参数反射结果)
+ *.redirect(30x 响应)
+ *.error(发生的错误,如超时、连接重置等)
+ *.multipart(当请求为 multipart-formed 时,不易扫描)
# 示例
如 [截图](https://github.com/lwzSoviet/NoXss#screenshot) 所示,poc 为 `https://xxx/?proxyAccount=xssjs%22%3B&shareName=duhxams`,这意味着在参数 "proxyAccount" 中使用 payload `xssjs%22%3B`:

然后您可以使用 payload `xssjs";alert(1);//` 来闭合双引号。最终的利用方式为:
`https://xxx.com/?proxyAccount=xssjs";alert(1);//&shareName=duhxams`
标签:Bug Bounty, BurpSuite插件, Chrome, CISA项目, DOM型XSS, Gevent, PhantomJS, Python, Web安全, XSS扫描, 加密, 反射型XSS, 可自定义解析器, 对称加密, 无后门, 漏洞扫描器, 网络安全, 自动化审计, 蓝队分析, 跨站脚本攻击, 隐私保护