一款優秀的XSS批量檢測工具

  • 2020 年 2 月 12 日
  • 筆記

0x01 簡介

NoXss是一個供web安全工程師批量檢測xss隱患的腳本工具。其主要用於批量檢測,比如甲方內部安全巡檢,人工分析千萬級的url資產是不現實的,NoXss使用多進程+協程的方式,支持高並發,可以出色的完成這一任務。NoXss從實用主義出發,小巧精緻,不如其他掃描器擁有各式各樣的高級功能(比如繞過waf、存儲型xss等),深入挖掘xss這裡首推XSStrike,但在批量檢測方面,NoXss是一個不錯的選擇。

項目地址: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 總結

就漏洞本身而言,適合掃描的漏洞種類並不多,安全問題更多地還是需要人工去挖。但對於一些簡單的漏洞,藉助工具可以節省人力成本,如果每天有數千萬的url需要你測試,交給NoXss定時任務或許是個不錯的選擇,最後由衷地感謝工具作者。

*本文作者:帕克飛走了,轉載請註明來自FreeBuf.COM