一款適合甲方批量檢測xss的工具
一、簡介
NoXss是一個供web安全人員批量檢測xss隱患的腳本工具。其主要用于批量檢測,比如掃描一些固定的URL資產,或者流量數據,會有不錯的效果。測試到目前一個月發現將近300個xss。
二、工作原理
NoXss主要是通過“符號閉合”來檢測xss隱患,使用基于“反射位置”的payload進行探測(目前一共8個),相比fuzz減少了很多盲目性。比如當請求參數的值出現在response的javascript代碼段中,并且是以雙引號的形式進行閉合,那么NoXss將使用xssjs";這個payload;如果是以單引號的形式進行閉合,則會使用xssjs';進行測試。
三、優勢
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目錄下。在掃描結束后,安全工作者可以很方便地利用這些“中間文件”進行分析。
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
如果你希望使用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`
四、總結
對于批量檢測而言,NoXss測試用例較少,速度較快,支持DOM類型的xss,掃描結束后保留了許多分析文件以供后續安全人員分析,整體還是挺不錯的,希望對你有用。最后由衷地感謝工具作者。