一款強大的安全評估工具Xray


0x01 Xray簡介

xray 是一款功能強大的安全評估工具,由多名經驗豐富的一線安全從業者嘔心打造而成,主要特性有:

檢測速度快。發包速度快; 漏洞檢測算法高效。
支持范圍廣。大至 OWASP Top 10 通用漏洞檢測,小至各種 CMS 框架 POC,均可以支持。
代碼質量高。編寫代碼的人員素質高, 通過 Code Review、單元測試、集成測試等多層驗證來提高代碼可靠性。
高級可定制。通過配置文件暴露了引擎的各種參數,通過修改配置文件可以極大的客制化功能。
安全無威脅。xray 定位為一款安全輔助評估工具,而不是攻擊工具,內置的所有 payload 和 poc 均為無害化檢查。

目前支持的漏洞檢測類型包括:

XSS漏洞檢測 (key: xss)
SQL 注入檢測 (key: sqldet)
命令/代碼注入檢測 (key: cmd-injection)
目錄枚舉 (key: dirscan)
路徑穿越檢測 (key: path-traversal)
XML 實體注入檢測 (key: xxe)
文件上傳檢測 (key: upload)
弱口令檢測 (key: brute-force)
jsonp 檢測 (key: jsonp)
ssrf 檢測 (key: ssrf)
基線檢查 (key: baseline)
任意跳轉檢測 (key: redirect)
CRLF 注入 (key: crlf-injection)
Struts2 系列漏洞檢測 (高級版,key: struts)
Thinkphp系列漏洞檢測 (高級版,key: thinkphp)
POC 框架 (key: phantasm)
其中 POC 框架默認內置 Github 上貢獻的 poc,用戶也可以根據需要自行構建 poc 並運行。

0x02 掃描器原理

整體來看,掃描器這類工具大致都是由三部分組成:

  • 來源處理
  • 漏洞檢測
  • 結果輸出
  1. 來源處理
    這一部分的功能是整個漏洞檢測的入口,在 xray 中我們定義了 5 個入口,分別是

    • HTTP 被動代理
    • 簡易爬蟲
    • 單個 URL
    • URL列表的文件
    • 單個原始 HTTP 請求文件
  2. 漏洞檢測
    這一部分是引擎的核心功能,用於處理前面 來源處理 部分產生的標准化的請求。用戶可以針對性的啟用插件,配置掃描插件的參數,配置 HTTP 相關參數等。

  3. 結果輸出
    漏洞掃描和運行時的狀態統稱為結果輸出,xray 定義了如下幾種輸出方式:

    • Stdout (屏幕輸出, 默認開啟)
    • JSON 文件輸出
    • HTML 報告輸出
    • Webhook 輸出

在使用 xray 的過程中只要謹記這三個部分,所有的命令行用法就看起來很簡單了。 接下來就讓我們上路吧。

0x03 下載安裝

xray 為單文件二進制文件,無依賴,也無需安裝,下載后直接使用。

  1. 下載地址
    選擇最新的版本下載,不要直接 clone 倉庫,xray 並不開源,倉庫內不含源代碼,直接下載構建的二進制文件即可。

Github: https://github.com/chaitin/xray/releases (國外速度快)
網盤: https://yunpan.360.cn/surl_y3Gu6cugi8u (國內速度快)

此處僅舉例windows環境下xray的安裝,其他操作系統安裝使用,參考如下連接:

https://docs.xray.cool/#/tutorial/prepare?id=下載地址

windows_amd64[Windows x64]/windows_386[Windows x86]

系統版本要求大於等於 Windows 7 或大於等於 Windows Server 2008 R2, 不支持 Windows XP、Windows 2003 等低版本系統。

對於 release 中的其他文件,說明如下:

sha256.txt 校驗文件,內含個版本的 sha256 的哈希值,請下載后自行校驗以防被劫持投毒。
Source Code Github 自動打包的,無意義,請忽略。

  1. 運行
    下載對應系統的版本后,來查看下 xray 的版本號
    將下載文件解壓,其中xray_windows_amd64.exe 為可執行文件(有的解壓軟件還會創建一個 xray_windows_amd64.exe 的文件夾,不要和最終的可執行文件混淆了)
    使用桌面左下方的的搜索框,輸入 PowerShell,點擊 Windows PowerShell,進入命令終端。
    然后 cd 到下載目錄,運行 .\xray_windows_amd64.exe version 即可查看 xray 的版本號。
    image

  2. 生成ca證書
    在瀏覽器使用 https 協議通信的情況下,必須要得到客戶端的信任,才能建立與客戶端的通信。
    這里的突破口就是 ca 證書。只要自定義的 ca 證書得到了客戶端的信任,xray 就能用該 ca 證書簽發各種偽造的服務器證書,從而獲取到通信內容。
    運行 .\xray_windows_amd64.exe genca
    image
    運行命令之后,將在當前文件夾生成 ca.crt 和 ca.key 兩個文件。
    本命令只需要第一次使用的時候運行即可,如果文件已經存在再次運行會報錯,需要先刪除本地的 ca.crt 和 ca.key 文件。
    image

  3. 安裝ca證書
    如果使用的是 IE、Chrome、curl 等客戶端,建議將 ca 證書安裝在操作系統上,請參照下方的教程。
    image
    選擇本地計算機,並進行下一步
    image
    選擇證書存儲
    image
    選擇受信任的證書頒發機構
    image
    image
    image
    第一次安裝會彈窗:你即將從一個聲稱代表如下內容的證書頒發機構(CA)安裝證書,點擊“是”即可,接着提示導入成功。
    image

0x04 使用 xray 代理模式進行漏洞掃描

代理模式下的基本架構為,掃描器作為中間人,首先原樣轉發流量,並返回服務器響應給瀏覽器等客戶端,通訊兩端都認為自己直接與對方對話,同時記錄該流量,然后修改參數並重新發送請求進行掃描。

  1. 啟用代理
    在掃描之前,我們還需要做一些必要的設置;第一次啟動 xray 之后,當前目錄會生成 config.yml 文件,選擇文件編輯器打開,並按照下方說明修改。
    mitmrestrictionhostname_allowed 增加 testphp.vulnweb.com
mitm:
  ...
  restriction:                          
    hostname_allowed:                   # 允許訪問的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
    - testphp.vulnweb.com

因為我們的測試目標站就是 http://testphp.vulnweb.com,增加這個過濾之后,xray 將只會掃描該站的流量,避免掃描到非授權目標站點。
設定漏洞掃描結果的輸出,這里選擇使用 html 文件輸出,所以命令行后面要增加 --html-output xray-testphp.html。
xray 配置文件中默認不允許掃描 gov 和 edu 等網站,如果想對這些網站進行授權測試,需要移除 hostname_disallowed 的相關配置才可以。嚴禁未授權的測試!否則后果自負。

  1. 設置瀏覽器插件代理
    設置xray瀏覽器代理並開啟此代理
    image
    image

  2. 代理模式進行掃描
    在windows下PowerShell命令窗口中運行命令
    windows下Xray使用語法:
    .\xray_windows_amd64.exe webscan --listen 127.0.0.1:9999 --html-output xray-testphp.html
    image
    代理模式為被動掃描,需人工干預進行測試,訪問測試網址,然后就可以看到 xray 界面開始輸出漏洞信息,下面是幾個快速鏈接,可以點擊用於體驗更多的漏洞類型的掃描.

    image

    查看xray掃描輸出文件信息
    image

如何退出?ctrl + c
提示 file xray-testphp.html already exists,可以刪除已經存在的報告文件,或者使用一個新的文件名,或者在文件名中加入 timestampdatetime 將自動替換為實際值。

0x05 使用 xray 基礎爬蟲模式進行漏洞掃描

./xray_windows_amd64 webscan --basic-crawler http://testphp.vulnweb.com/ --html-output xray-crawler-testphp.html

  1. 登錄后的網站掃描
    如果用的是代理模式,只要瀏覽器是登錄狀態,那么漏洞掃描收到的請求也都是登錄狀態的請求。但對於普通爬蟲而言,就沒有這么“自動化”了, 但是可以通過配置 Cookie 的方式實現登錄后的掃描。

  2. 非代理模式,配置Cookie實現登錄后掃描
    打開config.yaml配置文件,修改 http 配置部分的 Headers 項,如下:

http:
  headers:
    Cookie: key=value

上述配置將為所有請求(包括爬蟲和漏洞掃描)增加一條 Cookie key=value

0x06 使用 xray 進行服務掃描

xray 中最常見的是 web 掃描,但是 xray 將會逐漸開放服務掃描的相關能力,目前主要是服務掃描相關的 poc。老版本升級的用戶請注意配置文件需要加入服務掃描的相關 poc 名字,目前只有一個 tomcat-cve-2020-1938 ajp 協議任意文件檢測 poc。另外,由於免費版本限制,可以自寫POC進行驗證。

1. 快速檢測單個目標
./xray servicescan --target 127.0.0.1:8009`

2. 批量檢查的 1.file 中的目標, 一行一個目標,帶端口
./xray servicescan --target-file 1.file 

其中 1.file 的格式為一個行一個 service,如

10.1.1.11:8080
127.0.0.1:9090

可以將結果輸出到報告或json文件中

將檢測結果輸出到 html 報告中
./xray servicescan --target 127.0.0.1:8009 --html-output service.html
./xray servicescan --target-file 1.file --html-output service.html

將檢測結果輸出到 json 文件中
./xray servicescan --target 127.0.0.1:8099 --json-output 1.json 

0x07 版本間的區別

image

更多詳細信息參考官網:https://docs.xray.cool/#/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM