指令摘要
這個指令透過瀏覽網頁伺服器以建立PHP檔案清單,然後發送一個攻擊向量/探測,以識別 PHP_SELF 反射型跨站指令攻擊漏洞;PHP_SELF XSS 指的是由於 PHP 指令未對 $_SERVER["PHP_SELF"] 變數進行適當過濾,而導致的反射型跨站指令攻擊漏洞,這個變數通常在顯示表單和需要指令檔案名稱的PHP指令中使用。
攻擊向量/探測範例:
/'"/><script>alert(1)</script>
參考資料:
SecurityFocus - PHP_SELF XSS漏洞: http://www.securityfocus.com/bid/37351
SANS Institute - 檢測漏洞的百分比: http://software-security.sans.org/blog/2011/05/02/spot-vuln-percentage
WebSec - MantisBT 1.2.x的XSS漏洞: http://websec.ca/advisories/view/xss-vulnerabilities-mantisbt-1.2.x
您還可以參考以下與跨站指令攻擊有關的其他Nmap工具:
指令參數
http-phpself-xss.timeout
這個參數設定了 PHP_SELF 反射型跨站指令掃描指令爬蟲操作的超時時間,預設值為10秒;當執行掃描操作時,這個參數可以用來限制爬蟲的執行時間,以確保不會因爬取時間過長而影響其他操作或造成不必要的等待。
這個超時時間決定了爬蟲在存取網站頁面時等待回應的時間限制,如果設定的超時時間內未收到回應,則爬蟲將放棄該頁面的探索,繼續下一個頁面的爬取,這有助於提高掃描的效率,避免無限等待不回應的頁面。
您可以根據您的需求調整這個參數,例如,如果您希望更快地完成掃描,可以將超時時間設定為較短的值,反之亦然;請根據您的網路環境和掃描要求來選擇合適的超時時間。
http-phpself-xss.uri
這個參數用於設定 PHP_SELF 反射型跨站掃描指令的起始URI(統一資源標誌符),預設值是 "/",代表根目錄;URI是網址中的一部分,用來識別和定位網站上的資源,例如網頁、文件、圖像等,在這個情境下,URI表示掃描操作將從哪個網頁或目錄開始進行;如果您希望針對特定目錄或網頁進行掃描,您可以修改這個參數,將其設定為相應的URI。
例如,如果您想要對網站的某個子目錄進行掃描,可以將 http-phpself-xss.uri 設定為該子目錄的 URI,例如 "/subdirectory",系統將從該子目錄開始進行爬取和檢測潛在的 PHP_SELF 反射型跨站指令漏洞。
請根據您的需求和掃描目標來調整這個參數,以確保掃描過程針對您希望檢測的資源進行操作。
httpspider.doscraping, httpspider.maxdepth, httpspider.maxpagecount, httpspider.noblacklist, httpspider.url, httpspider.useheadfornonwebfiles, httpspider.withindomain, httpspider.withinhost
httpspider.doscraping: 用於設定是否要對已經爬取的網頁進行進一步的HTML解析和擷取操作;如果設定為true,系統將嘗試分析已經抓取的網頁以擷取更多訊息;預設值為false,不進行HTML解析。
httpspider.maxdepth: 用於設定爬取操作的最大深度,即爬取過程中可以進入的最深層次的連結;如果設定為 0,則只爬取起始URL指定的頁面,不進一步深入;預設值為0。
httpspider.maxpagecount: 用於設定最大爬取頁面數,如果在設定的頁面數達到之前找到了所需的資源,則爬取操作會提前終止;有助於控制爬取過程的範圍和時間,預設值為無限(0)。
httpspider.noblacklist: 用於設定是否要禁用對URL黑名單的檢查;如果設定為 true,系統將不會檢查 URL 是否在黑名單中,而會嘗試存取所有URL;預設值為false。
httpspider.url: 用於指定爬取操作的起始URL,您可以將其設定為要開始爬取網站頁面的URL。
httpspider.useheadfornonwebfiles: 用於設定是否對非網頁檔案使用 HTTP HEAD 請求來節省頻寬;如果設定為 true,系統將僅使用 HTTP HEAD 請求檢查非網頁檔案的存在,而不下載整個檔案;預設值為false。
httpspider.withindomain: 用於設定是否限制爬取操作只在同一網域名稱下進行;如果設定為true,系統將只存取與起始 URL 相同網域名稱的頁面;預設值為false,允許跨網域名稱爬取。
l httpspider.withinhost: 用於設定是否限制爬取操作只在同一主機(Host)下進行;如果設定為true,系統將只存取與起始 URL 相同主機的頁面;預設值為false,允許跨主機爬取。
這些參數可以用於設定和控制 httpspider 函式庫的爬取操作,以滿足不同的需求和目標;請根據您的爬取任務和要爬取的網站來調整這些參數,以達到最佳效果;請至 httpspider 函式庫了解更多詳細資訊。
vulns.short, vulns.showall
vulns.short:用於控制漏洞掃描操作的詳細程度;如果設置為true,系統將以簡短模式運行,僅顯示漏洞的簡要訊息;預設值為false,以詳細模式運行,顯示更多漏洞詳細資訊。
vulns.showall:用於設定是否要顯示所有漏洞,包括已知的和未知的漏洞;如果設定為true,系統將顯示所有漏洞資訊,無論其已知與否;預設值為false,僅顯示已知漏洞訊息。
這些參數用於設定和控制vulns函式庫的漏洞掃描操作。您可以根據需要調整這些參數,以滿足您的漏洞掃描需求,並根據情況選擇顯示詳細或僅顯示已知漏洞,請至 vulns 函式庫了解詳細資訊。
slaxml.debug
用於除錯slaxml函式庫的參數,當此參數設定為true時,它會啟用除錯模式,函式庫將輸出額外的除錯訊息,幫助您進行問題排查和錯誤修復;通常在開發和測試過程中使用除錯模式,以更容易地理解函式庫的運作方式並找出潛在的問題。
slaxml函式庫主要用於處理XML資料,並提供了一系列功能來解析和產生XML檔案,當您需要在使用slaxml函式庫時進行除錯或瞭解其內部運作時,可以啟用slaxml.debug來獲取更多有關函式庫操作的訊息;此參數通常在開發過程中使用,以幫助開發者更好地理解和使用slaxml函式庫;請至 slaxml 函式庫了解更多詳細資訊。
smbdomain, smbhash, smbnoguest, smbpassword, smbtype, smbusername
smbdomain(SMB網域): 用於指定SMB(Server Message Block)協定中的網域(或工作群組)名稱,SMB是一種用於共享文件、印表機和資源的網路協定,透過設定smbdomain,您可以指定要存取的SMB網域,以確保正確的身份驗證和存取權限。
smbhash(SMB哈希): 常用於指定SMB身份驗證的哈希值 (Harsh Value),哈希是一種將密碼轉換為固定長度散列值的過程,通常用於安全地儲存密碼;透過設置smbhash,您可以提供哈希值,以完成SMB身份驗證,而不需要明文密碼。
smbnoguest(禁用訪客存取): 這是一個布林值參數,用於設定是否禁用SMB訪客存取,如果設定為true,則禁用訪客存取,只允許已經驗證的使用者存取,這可以提高安全性,防止未經身份驗證的存取。
smbpassword(SMB密碼): 用於指定SMB身份驗證的密碼,密碼是用於驗證使用者身份的機密訊息,透過設定 smbpassword,您提供用於SMB身份驗證的密碼。
smbtype(SMB類型): 用於指定SMB協定的類型,SMB協定有不同的版本,smbtype允許您指定要使用的特定SMB類型。
smbusername(SMB使用者名稱): 此參數用於指定SMB身份驗證的使用者名稱,使用者名稱是用於識別SMB存取權限的一部分,透過設定smbusername,提供您要使用的使用者名稱。
http.host, http.max-body-size, http.max-cache-size, http.max-pipeline, http.pipeline, http.truncated-ok, http.useragent
http.host(主機): 用於指定要存取的主機或服務的位址,通常包括主機名稱或IP位址;透過設定http.host,您可以請求要存取哪個主機,這是進行網路通訊的關鍵訊息。
http.max-body-size(最大允許的請求主體大小): 這個參數設定了允許的請求主體(通常是POST請求中的資料)的最大大小,用於限制接收到請求的主體大小,以防止過大的資料導致性能問題或安全問題。
http.max-cache-size(最大暫存大小): 此參數設定了HTTP暫存可以使用的最大記憶體大小,HTTP暫存是用於儲存已經檢索過的資料,以便在後續的請求中加快資料檢索速度;透過設定http.max-cache-size,您可以控制暫存的大小。
http.max-pipeline(最大通道數): 這個參數設定了允許的HTTP通道請求的最大數量,HTTP通道允許客戶端一次發送多個請求而不必等待每個請求的回應,透過設定http.max-pipeline,您可以控制通道請求的數量。
http.pipeline(啟用通道請求): 這是一個布林值參數,用於啟用或禁用HTTP通道請求;如果設定為true,則允許使用HTTP通道,否則禁用。
http.truncated-ok(允許截斷的OK標誌): 這是一個布林值參數,用於設定是否允許HTTP回應中的截斷內容;如果設置為true,則允許接收截斷的回應內容,否則拒絕。
http.useragent(用戶代理): 這個參數用於設定HTTP請求中的用戶代理表頭,用戶代理是一個字串,通常用於識別發出請求的用戶端應用程序或瀏覽器;透過設定http.useragent,您可以自定義用戶代理訊息。
Example Usage指令範例
nmap --script=http-phpself-xss -p80 <target>
nmap -sV --script http-self-xss <target>
Script Output指令輸出
PORT STATE SERVICE REASON
80/tcp open http syn-ack
| http-phpself-xss:
| VULNERABLE:
| Unsafe use of $_SERVER["PHP_SELF"] in PHP files
| State: VULNERABLE (Exploitable)
| Description:
| PHP files are not handling safely the variable $_SERVER["PHP_SELF"] causing Reflected Cross Site Scripting vulnerabilities.
|
| Extra information:
|
| Vulnerable files with proof of concept:
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=calder0n.com
| References:
作者:
Paulino Calderon
License: Same as Nmap--See https://nmap.org/book/man-legal.html
隨選即看研討會
延伸閱讀
NetAlly 滲透測試及網路測試總覽 > CyberScope Nmap 滲透測試手持式網路分析儀,整合了 Nmap 功能,為站點存取層提供全面的網路安全風險評估、分析、和報告——包括所有的端點和網路探索、有線與無線網路安全、漏洞評估 (Nmap) 以及網段和設定驗證;IT 人員透過單一工具以及單一介面,即可快速且即時的掌握企業或組織的各種混合式網路環境 (有線、無線、PoE)、各種連網終端裝置的拓樸、架構、設定、網段、效能、直到網路安全評估。