top of page
作家相片Samuel

Nmap NSE Category vulns Script:http-jsonp-detection 探索 JSONP 端點繞過同源規則

已更新:8月26日


Nmap Script指令摘要


該指令用於尋找Web伺服器中的JSONP(JSON with Padding)端點,JSONP端點可以用來繞過網頁瀏覽器的同源規則,這是一種安全機制,用於限制來自不同網站的網頁程式碼之間的互動;同源規則要求網頁中的JavaScript代碼僅能與來自同源(網站的協定、網域名稱和埠號都相同)的資源進行互動,這是為了防止一個網站的惡意代碼操縱來自其他網站的資源或資料,以便保護使用者的隱私和安全。


然而有些情況下,開發人員需要在不同網站之間進行資料互動,例如,當網站需要從其他網站載入外部資源或API資料時,這時,JSONP(JSON with Padding)是一種常見的解決方案;JSONP透過動態載入外部JavaScript文件,並使用回呼函數來處理資料,實現了不同網站之間的互動;然而,這種方法也可能被濫用,因此需要謹慎使用。


這個指令透過分析伺服器回應中的回呼 (callback) 函數,來探測JSONP端點;它還嘗試透過URL來確定回呼 (callback) 函數(回呼函數可能完全、或部分從URL控制),並且嘗試使用URL來進行最常見的回呼變數的暴力破解。



Nmap Script指令參數

http-jsonp-detection.path

用於指定 HTTP JSONP 檢測指令要發送請求的 URL 路徑,預設情況下,這個路徑設定為根路徑("/");這個選項決定了要測試的網址,以查找是否存在 JSONP 端點,JSONP 端點是一個可以用來透過 JavaScript 跨網域請求外部資源的地方,透過設定這個路徑,指令可以模擬請求,檢查是否存在 JSONP 支援。 使用這個選項時,您可以指定不同的路徑,以測試特定頁面、或端點是否支援 JSONP;這對於網站測試和安全測試很有用,因為它可以幫助您確定哪些部分的網站支援 JSONP,並可能有潛在的安全風險。

slaxml.debug

用於除錯(debug)與 slaxml 函式庫相關的問題;該選項設定當指令或程式使用 "slaxml" 函式庫時,是否啟用除錯模式;在除錯模式下,會產生額外的輸出資訊,以協助識別和解決問題;這包括錯誤訊息、執行訊息、函式呼叫堆疊 (function call stack) 等,除錯模式通常用於開發和測試階段,以幫助開發人員追蹤和排除程式碼中的錯誤。

slaxml.debug 選項的目的是允許使用 slaxml 函式庫的程式或指令,在需要時啟用或禁用除錯模式,以便更有效地處理 XML 資料解析相關的問題,當需要深入瞭解 slaxml 函式庫的行為或解決可能出現的問題時,可以參考 slaxml函式庫以獲取更多詳細資訊。

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

以下是與 httpspider 相關的參數,這些參數用於控制網頁爬蟲(spider)的行為;請注意,這些是技術性的術語,通常用於網絡爬蟲和網站掃描工具;詳細的用法請參閱 httpspider函式庫。

  • httpspider.doscraping:此參數指定是否應該執行網頁爬蟲中的網頁採集操作;如果設定為true,則爬蟲將收集網頁上的資料;如果設定為false,則只會掃描網站的結構,而不會擷取網頁內容。

  • httpspider.maxdepth:此參數設定爬蟲的最大遞迴深度 (Recursion Depth);它指定了爬蟲在採集頁面時能夠遞歸地向下深入多少層,這有助於控制爬蟲的深度,以避免無限遞迴。

  • httpspider.maxpagecount:這個參數限制了爬蟲可以採集的最大頁面數量;如果網站非常大,您可以使用此參數限制爬蟲的規模。

  • httpspider.noblacklist:如果設定為true,爬蟲將不會遵循網站上的robots.txt文件中的黑名單規則;爬蟲將忽略任何由站點所有者指定的爬取限制。

  • httpspider.url:這是爬蟲的起始URL,它指定了爬蟲應該從哪個網頁開始掃描。

  • httpspider.useheadfornonwebfiles:如果設定為true,則爬蟲將使用HTTP的HEAD請求來檢查非Web文件(如二進制文件)的存在。這有助於節省時間和頻寬,因為它不會下載整個文件。

  • httpspider.withindomain:此參數設定為true,表示爬蟲只會採集位於同一網域名稱(domain)下的頁面;如果設定為false,則爬蟲可以跨越不同網域。

  • httpspider.withinhost:類似於httpspider.withindomain,但它更精確地指定了只在同一主機(host)下採集頁面。

這些參數用於配置和控制網頁爬蟲的行為,以確保它們在掃描和收集網站資料時能夠達到預期的效果。

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

以下是對這些參數的簡短說明,可至 http函式庫了解全貌。

  • http.host(主機名稱):用於 HTTP 請求的目標主機名稱或 IP 位址,它指定您希望連接的伺服器。

  • http.max-body-size(最大允許主體大小):這個參數設定了允許的 HTTP 主體(通常是請求的內容)的最大檔案大小,如果請求的主體檔案大小超過此限制,可能會被截斷或拒絕。

  • http.max-cache-size(最大快取大小):這個參數設定了 HTTP 快取(暫存)的最大檔案大小,它控制可以儲存在本機快取中回應資料的量。

  • http.max-pipeline(最大管通道):    HTTP 通道是一種允許同時發送多個請求的機制,此參數指定同時允許的最大通道請求數。

  • http.pipeline(通道):這是一個布林值,即 "true" 和 "false";表示是否啟用 HTTP 通道;啟用後,可以同時發送多個請求以提高效能。

  • http.truncated-ok(接受截斷的允許):這也是一個布林值,指定是否接受截斷的 HTTP 回應;如果啟用,即使回應被截斷,也會接受部分回應資料。

  • http.useragent(用戶代理):這是一個 HTTP 表頭,通常包含瀏覽器或客戶端應用程序的身份訊息,它用於告訴伺服器您使用的是什麼類型的客戶端。

smbdomain, smbhash, smbnoguest, smbpassword, smbtype, smbusername

這些參數通常在存取 SMB 共享資源或進行身份驗證時使用,以確保只有授權的使用者可以訪問共享資源;更詳細的資訊請參閱 smbauth函式庫。

  • smbdomain(SMB 域名):SMB 網路中的網域名稱,用於識別特定的網域。

  • smbhash(SMB 雜湊):用於 SMB 認證的哈希值 (Harsh Value),通常是用於加密和保護密碼的哈希演算法,在資訊安全、資料完整性驗證、密碼儲存、數位簽名等領域都有廣泛的應用。

  • smbnoguest(SMB 不允許訪客):用於 SMB 伺服器不允許訪客存取,需要合法的使用者憑證。

  • smbpassword(SMB 密碼):SMB 使用者密碼,用於身份驗證。

  • smbtype(SMB 類型):SMB 協定的類型或版本,例如 SMB1、SMB2 或 SMB3。

  • smbusername(SMB 使用者名稱):用於 SMB 認證的使用者名稱,通常與密碼一起使用以識別和驗證使用者身份。


Nmap Script指令範例

nmap -p 80 --script http-jsonp-detection <target>

Nmap Script指令輸出

80/tcp open  http    syn-ack
| http-jsonp-detection:
| The following JSONP endpoints were detected:
|_/rest/contactsjp.php   Completely controllable from URL

Nmap Script作者:

Vinamra Bhatia

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



Nmap
Nmap

 

延伸閱讀

2 次查看

Comentários


bottom of page