V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pakecalvs
V2EX  ›  程序员

推荐一款 xss 批量检测工具

  •  1
     
  •   pakecalvs · 2020-01-28 09:20:08 +08:00 · 4142 次点击
    这是一个创建于 1541 天前的主题,其中的信息可能已经有所发展或是发生改变。

    0x01 简介

    NoXss 是一个供 web 安全人员批量检测 xss 隐患的脚本工具。其主要用于批量检测,比如扫描一些固定的 URL 资产,或者流量数据,会有不错的效果。测试到目前累计发现上百个 xss 漏洞,项目地址: https://github.com/lwzSoviet/NoXss

    0x02 工作原理

    NoXss 主要是通过“符号闭合”来检测 xss 隐患,使用基于“反射位置”的 payload 进行探测(目前一共 8 个),相比 fuzz 减少了很多盲目性。比如当请求参数的值出现在 response 的 javascript 代码段中,并且是以双引号的形式进行闭合,那么 NoXss 将使用 xssjs";这个 payload ;如果是以单引号的形式进行闭合,则会使用 xssjs';进行测试。更多的位置分类以及 payload 请参考 https://github.com/lwzSoviet/NoXss/blob/master/README.md

    0x03 优势

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

    #指定进程数
    python start.py --url url --process 8
    #指定协程并发数
    python start.py --url url --coroutine/-c 300
    

    漏扫的时间消耗主要集中在网络 IO,NoXss 支持用户自己配置进程数与协程数,需要注意的是协程并发数需要结合网络情况而定,如果配置的过高,可能出现过多的网络阻塞,导致无法检出 xss。
    3.使用基于位置的 payload Fuzz 技术通常带有很大的盲目性,对于批量检测并不适合。NoXss 目前确定使用的 payload 一共只有 8 个,全部基于参数反射的位置,更少的 payload 意味着更少的测试用例、更快的扫描速度。
    4.接口维度的去重 对于批量检测而言,去重是一项重要的工作。除了去除各种静态资源,NoXss 还会以接口为维度对 url 进行去重,接口由域名、端口、路径、参数键值对等多个因素共同决定。在这个过程中,对于一些相似的属性,NoXss 还会对其进行泛化。
    5.与 Burpsuite 协同工作 NoXss 支持将 Burpsuite 的流量导出进行扫描: 对于渗透测试人员来说,这是一个较为友好的功能。但请不要对 NoXss 抱有太多的期望,它对较为复杂的 xss (比如存储型)无能为力。
    6.支持配置 Cookie、Referer 等请求头 在批量检测的过程中通常需要维持登录态,一些应用的后端还会校验 Referer 甚至其他的一些自定义的 HTTP 请求头部,NoXss 支持用户对此进行配置:

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

    默认情况下,NoXss 会根据当前扫描的 url 自动添加 Referer 头部。
    7.辅助人工分析 NoXss 会将扫描过程中的流量保存到 traffic 目录下,除此之外还有参数反射结果(.reflect )、跳转请求(.redirect )、网络等错误(.error )都将保存在 traffic 目录下。在扫描结束后,安全工作者可以很方便地利用这些“中间文件”进行分析。

    0x04 安装及使用

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

    yum install flex bison phantomjs
    pip install -r requirements.txt
    

    Ubuntu:

    apt-get install flex bison phantomjs
    pip install -r requirements.txt
    

    其它平台安装参考: https://github.com/lwzSoviet/NoXss/tree/master#install 如果你希望使用 Chrome 作为检测使用的浏览器,还需手动安装 Chrome、下载对应的驱动并设置环境变量,可以使用以下来检查浏览器是否安装正确:

    python start.py --check
    

    批量检测:

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

    检测单个 url:

    python start.py --url url
    

    使用浏览器:

    python start.py --url url --browser=chrome
    

    扫描 Burpsuite 流量:

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

    更多使用方式参考: https://github.com/lwzSoviet/NoXss/tree/master#usage

    0x05 总结

    对于批量检测而言,NoXss 测试用例较少,速度较快,支持 DOM 类型的 xss,扫描结束后保留了许多分析文件以供后续安全人员分析,整体还是挺不错的,希望对你有用最后由衷地感谢工具作者。

    2 条回复    2020-01-28 11:30:58 +08:00
    hehe12dyo
        1
    hehe12dyo  
       2020-01-28 10:33:30 +08:00
    。。。
    hfutzj
        2
    hfutzj  
       2020-01-28 11:30:58 +08:00
    为什么是 python2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3824 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:14 · PVG 08:14 · LAX 17:14 · JFK 20:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.