top of page
作家相片Samuel

Nmap NSE Category vulns Script:http-stored-xss 檢測儲存型跨站指令攻擊漏洞

已更新:8月26日


Nmap Script指令摘要


XSS攻擊通常分為儲存型(Stored XSS)和反射型(Reflected XSS)兩種,具體取決於攻擊向量 (一組資料元素的有序集合) 的傳播方式;儲存型XSS攻擊向量被儲存在目標網站上,而反射型XSS攻擊向量則在攻擊發生時從受害者的請求中回應。


http-stored-xss 用於掃描網站以檢測儲存型跨站指令攻擊(Stored XSS)漏洞;儲存型跨站指令攻擊是一種網站安全漏洞,攻擊者可以將惡意指令儲存在網站的資料庫中,當其他使用者存取該網站時,指令將被執行,可能導致使用者受到攻擊。


這個指令尋找在網站頁面上出現未過濾的 >(大於)符號,這可能表示存在潛在的跨站指令攻擊漏洞;另外提供了一些相關的 NSE 命令,可用於進一步檢查網站的安全性,包括 http-dombased-xss.nse、http-phpself-xss.nse、http-xssed.nse 和 http-unsafe-output-escaping.nse;使用這些工具可以幫助發現並解決網站中可能存在的跨站指令攻擊漏洞,以提高網站的安全性。


另請參閱:


Nmap Script指令參數

http-stored-xss.formpaths

用於指定包含可利用表單的網頁頁面,這些表單可能受到儲存型跨站指令攻擊漏洞的影響,您可以列出這些頁面的路徑,以便指令能夠檢查它們是否存在潛在的漏洞;例如,如果您希望檢查 /upload.php 和/login.php 這兩個頁面上的表單是否存在儲存型跨站指令攻擊漏洞,您可以將以下參數設定為:


http-stored-xss.formpaths = {/upload.php, /login.php}


這將指令僅檢查指定頁面上的表單,以提高效率;如果不指定任何頁面,則預設為nil,指令將處於爬蟲模式,將試圖找到包含表單的頁面並檢查它們是否存在漏洞。

http-stored-xss.uploadspaths

用於指定包含回應 POST 資料的網頁頁面,這些頁面可能受到儲存型跨站指令攻擊漏洞的影響;當使用者提交表單或資料時,這些頁面可能會將資料反應回頁面上,並且如果未適當過濾這些資料,則可能導致漏洞產生。


您可以列出這些頁面的路徑,以便指令能夠檢查它們是否存在潛在的漏洞;例如,如果您希望檢查 /comments.php 和 /guestbook.php 這兩個頁面上的  POST 資料是否存在儲存型跨站指令攻擊漏洞,您可以將以下參數設定為:


http-stored-xss.uploadspaths = {/comments.php, /guestbook.php}


指令將僅檢查指定頁面上 POST 資料的回應,以提高效率;如果不指定任何頁面,則預設為 nil,指令將處於爬行模式,將試圖找到包含 POST 資料回應的頁面並檢查它們是否存在漏洞。

http-stored-xss.fieldvalues

用於指定指令應該填寫網頁表單中的欄位及其相應的值;這些表單欄位可能需要特定的值,以便指令能夠成功觸發儲存型跨站指令攻擊漏洞,通常情況下,指令會嘗試自動填寫這些欄位,但由於欄位的限制,可能會失敗,因此,您可以使用 http-stored-xss.fieldvalues 參數手動指定要填寫的欄位和值;例如表單包含 "gender" 和 "email" 這兩個欄位,您可以將參數設定為:


http-stored-xss.fieldvalues = {gender = "male", email = "foo@bar.com"}


這將告訴指令在嘗試觸發漏洞時,將 "gender" 欄位設定為 "male","email" 欄位設定為 "foo@bar.com"。


預設情況下,http-stored-xss.fieldvalues 為空值,指令將嘗試使用空值填寫所有欄位;如果您知道某些欄位需要特定值,則可以使用這個參數來指定它們。

http-stored-xss.dbfile

用於指定一個純文字文件的路徑,該文件包含每行一個跨站指令攻擊(XSS)向量 (一組資料元素的有序集合),這個向量列表用於檢測儲存型跨站指令攻擊漏洞;當指令運行時,它將讀取這個文件中的向量並使用它們來測試網站的頁面,以查找XSS漏洞。


預設情況下,http-stored-xss.dbfile 為 nil,代表指令將不會使用外部文件中的XSS向量,如果您擁有一個包含已知的 XSS 向量的文件,您可以將該文件的路徑指定給這個參數,以加強指令的測試能力;這個功能使您能夠使用自定義的XSS向量列表來檢查網站的安全性,以確保它不容易受到儲存型跨站指令攻擊的影響。

slaxml.debug

是一個與 slaxml 函式庫(Slacker's XML Parser Library)相關的選項或設定:

  • slaxml:是 "Slacker's XML Parser" 的縮寫,是一個用於解析和處理 XML(可擴展標記語言)資料的函式庫,XML 是一種常用的資料交換格式,通常用於在應用程序之間傳遞和資料儲存。

  • debug:用於追蹤和排除代碼問題的過程,slaxml.debug 表示啟用或設定 slaxml 函式庫的除錯模式,以便在解析 XML 資料時收集更多訊息,以幫助開發人員找到和修復問題。

具體來說,"slaxml.debug" 包括以下功能,記錄詳細的解析過程,以便開發人員了解這個函式庫如何處理 XML 資料、捕捉和報告解析過程中的錯誤或異常情況、提供額外的除錯輸出,以幫助開發人員追蹤代碼的執行路徑;請至 slaxml 瞭解細部資訊。

httpspider.doscraping, httpspider.maxdepth, httpspider.maxpagecount, httpspider.noblacklist, httpspider.url, httpspider.useheadfornonwebfiles, httpspider.withindomain, httpspider.withinhost

這些選項用於設定網頁爬取操作行為,以便根據特定需求探索和分析網站的內容;根據您的設定,可以控制爬取的深度、數量、範圍等方面的行為;以下是與 httpspider 相關的設定選項的簡短說明,詳細資訊請參閱 httpspider 函式庫。

  • httpspider.doscraping:表示是否執行網頁爬取操作,如果設定為 "true",則爬取操作將被執行,用於探索網站的頁面和連結。

  • httpspider.maxdepth:用於設定網頁爬取的最大深度,即探索網站頁面的層次深度限制,例如,如果設定為 3,則爬取操作將僅深入到網站的第三層頁面。

  • httpspider.maxpagecount:用於設定網頁爬取的最大頁面數目;如果設定為特定數值,則爬取操作將在達到該數量的頁面後停止。

  • httpspider.noblacklist:表示是否忽略黑名單,即忽略禁止存取的頁面或連結;如果設定為 "true",則將忽略黑名單。

  • httpspider.url:指定網頁爬取的起始 URL,即從哪個頁面開始爬取。

  • httpspider.useheadfornonwebfiles:表示是否對非 Web 檔案使用 HEAD 請求;HEAD 請求是一種輕量級的 HTTP 請求,用於獲取回應的表頭訊息,而不是整個內容;如果設定為 "true",則將使用 HEAD 請求來獲取非 Web 檔案的訊息。

  • httpspider.withindomain:是否僅爬取相同網域名稱稱下的頁面和連結;如果設定為 "true",則爬取操作將受限於相同網網域名稱稱。

  • httpspider.withinhost:是否僅爬取相同主機下的頁面和連結;如果設定為 "true",則爬取操作將受限於相同主機。

smbdomain, smbhash, smbnoguest, smbpassword, smbtype, smbusername

這些選項用於設定 SMB 存取的相關訊息,以便正確地建立和管理與 SMB 伺服器的通訊;具體的配置將根據您要存取的 SMB 資源和環境而異;請參閱 smbauth 函式庫了解詳細資訊。

  • smbdomain:用於指定 SMB (Server Message Block) 通訊中的網域名稱,SMB 是一種用於檔案和印表機共享的通訊協定,這裡可以指定要使用的網域名稱。

  • smbhash:用於指定 SMB 密碼的哈希值 (Hash Value),密碼的安全表示方式,用於身份驗證。

  • smbnoguest:用於禁用 SMB 訪客模式,這是一種在不提供認證的情況下存取 SMB 資源的模式;禁用後,需要提供有效的認證訊息。

  • smbpassword:用於指定 SMB 存取時使用的密碼。密碼是用於驗證身份的重要訊息。

  • smbtype:用於指定 SMB 的版本或類型;SMB 有不同的版本和實踐方式,您可以在此處指定所需的類型。

  • smbusername:用於指定 SMB 存取時使用的使用者名稱;使用者名稱是身份驗證的一部分,用於確定存取權限。

http.host, http.max-body-size, http.max-cache-size, http.max-pipeline, http.pipeline, http.truncated-ok, http.useragent

這些選項用於配置與 HTTP 通信相關的各種參數,以便更好地控制和調整與網絡資源的互動。根據您的需求,可以調整這些選項以達到所需的通信效果。請參閱 http 函式庫了解詳細資訊。

  • http.host:用於指定 HTTP 請求的目標主機;您可以在此處指定要取代的網站主機名稱或 IP 位址。

  • http.max-body-size:用於設定 HTTP 請求中允許的最大內容主體大小,這有助於限制從伺服器接收的資料量。

  • http.max-cache-size:用於設定 HTTP 暫存的最大大小,暫存是用於儲存先前檢索的資料,以便在以後的請求中重複使用。

  • http.max-pipeline:用於設定 HTTP 請求中允許的最大通道數量;HTTP 通道是一種允許多個請求同時發送的機制。

  • http.pipeline:用於啟用或禁用 HTTP 通道功能;啟用後,可以同時發送多個請求以提高效率。

  • http.truncated-ok:用於設定是否允許接收截斷的 HTTP 回應;當設置為 "allow" 時,即使接收到截斷的回應,也將視為有效。

  • http.useragent:用於指定 HTTP 請求的用戶代理表頭,用戶代理表頭包含有關請求的客戶端訊息,通常用於識別瀏覽器或應用程序。


Nmap Script指令範例

nmap -p80 --script http-stored-xss.nse <target>

This script works in two phases.
1) Posts specially crafted strings to every form it encounters.
2) Crawls through the page searching for these strings.

If any string is reflected on some page without any proper
HTML escaping, it's a sign for potential XSS vulnerability.

Nmap Script指令輸出

PORT   STATE SERVICE REASON
80/tcp open  http    syn-ack
| http-stored-xss:
|   Found the following stored XSS vulnerabilities:
|
|      Payload: ghz>hzx
|    Uploaded on: /guestbook.php
|    Description: Unfiltered '>' (greater than sign). An indication of potential XSS vulnerability.
|      Payload: zxc'xcv
|    Uploaded on: /guestbook.php
|    Description: Unfiltered ' (apostrophe). An indication of potential XSS vulnerability.
|
|      Payload: ghz>hzx
|    Uploaded on: /posts.php
|    Description: Unfiltered '>' (greater than sign). An indication of potential XSS vulnerability.
|      Payload: hzx"zxc
|    Uploaded on: /posts.php
|_   Description: Unfiltered " (double quotation mark). An indication of potential XSS vulnerability.

Nmap Script作者:

George Chatzisofroniou

License: Same as Nmap--See https://nmap.org/book/man-legal.html



Nmap
Nmap

 

延伸閱讀

3 次查看

Comments


bottom of page