Netsparker Enterprise操作注銷問題
注銷問題
表單身份驗證設置使您可以掃描網站上需要用戶身份驗證的頁面。配置了表單身份驗證后,Netsparker會嘗試在開始爬網和攻擊階段之前登錄到該網站。然后,如果Netsparker檢測到會話已結束,它將嘗試在掃描期間再次登錄。
- 如果您發現這種情況反復發生,則表示您已錯誤地配置了表單身份驗證。
- 如果不修復配置,則掃描時間可能會顯著增加,并且無法正常進行。在本文中,我們將討論導致這種情況的原因以及如何正確配置。
在Netsparker Standard中,您可以在“活動面板”中查看登錄階段。

登錄過程成功后,您將看到類似于以下內容的日志。

- 如果您發現日志在掃描過程中列出了太多的登錄事件,則說明存在問題,表明掃描儀無法保留已登錄的會話。
- 發生的事情是:
- Netsparker以某種方式注銷
- Netsparker嘗試連續重新登錄,前提是會話已結束
本主題說明如何分析和解決這些類型的會話問題。
掃描期間注銷的原因
本節列出并說明了掃描期間可能會注銷的原因。它們包括:
- 網站上的注銷按鈕
- 可能導致注銷的頁面
- 更改密碼頁面
網站上的注銷按鈕
Netsparker在掃描過程中模擬最終用戶的活動,在站點頁面上導航,填寫表格并單擊按鈕。這包括用于終止站點上的會話的注銷按鈕。
在“新掃描”屏幕的“范圍”部分中,您可以定義要排除的URL。Netsparker在使用RegEx排除URL 部分中具有一組預設,以排除可能與注銷相關的單詞。

盡管默認的RegEx涵蓋了各種注銷和注銷表達式,但不涵蓋諸如Disconnect.php之類的頁面。因此,除非您手動排除它們,否則Netsparker將訪問這些URL并注銷。
使用CSS選擇器排除按鈕
如果注銷過程涉及JavaScript,則Netsparker可能無法檢測到注銷按鈕。由于單頁應用程序(SPA)的普及,這種注銷方法最近有所增加。
由于沒有特定的URL,我們可以在此處精確定位,因此可以使用CSS選擇器排除按鈕。
如何在Netsparker Enterprise中使用CSS選擇器排除按鈕
- 在主菜單中,單擊掃描策略,然后單擊要編輯的策略。
- 單擊JavaScript選項卡。

- 在“ 按CSS選擇器排除” 字段中,使用CSS選擇器定義應從掃描中排除的元素。所有匹配的元素將與子元素一起排除。要對此進行測試,請嘗試使用
document.querySelectorAll JavaScript功能在Chrome瀏覽器中進行選擇。請注意,如果選擇器不是很明確,即許多項目在任何時候都與選擇器匹配,那么它將對掃描性能產生負面影響。
如何在Netsparker Standard中使用CSS選擇器排除按鈕
- 啟動掃描策略編輯器對話框。
- 單擊新建或克隆。
- 單擊JavaScript選項卡。

- 在“ 按CSS選擇器排除” 字段中,單擊省略號(
)。顯示“排除CSS選擇器”對話框。 - 使用CSS選擇器定義應從掃描中排除哪些元素。如果需要一次使用多個選擇器,請用逗號分隔。
- 單擊選擇。您將返回到“掃描策略編輯器”對話框。
- 單擊確定。
可能導致注銷的頁面
配置了表單身份驗證后,如果進行登錄過程的URL在掃描范圍內,則Netsparker也將對其進行攻擊。當調用登錄頁面時,某些網站會終止所有現有會話。如果您的站點這樣做,則應從“ 掃描范圍”中排除登錄URL ,以確保Netsparker在掃描期間不會訪問登錄頁面。但是,為了確保您不會在登錄頁面上錯過任何內容,可以在不設置表單身份驗證的情況下運行掃描。
更改密碼頁面
Netsparker模擬用戶行為,因此,如果您的站點具有更改密碼的形式,則Netsparker會嘗試使用定義的值填寫這些形式并將其發送。Netsparker也將攻擊這些入口點。
出于安全考慮,密碼更改頁面通常要求輸入當前密碼。但是,如果您的站點沒有這種結構,則Netsparker可能會更改當前用戶的密碼。結果是Netsparker無法再次登錄。如果您的站點具有此類頁面,則在啟動掃描之前排除相關URL很有用。
注銷檢測如何工作?
Netsparker使用兩種方法來確定是否已注銷:
- 基于重定向的注銷檢測
- 基于關鍵字的登出檢測
第三種選擇涉及關閉注銷檢測機制。
基于重定向的注銷檢測
為了檢測注銷機制,Netsparker在沒有登錄會話的情況下向登錄頁面發出了請求。如果該頁面將Netsparker重定向到另一個頁面,則Netsparker推斷每次遇到該重定向頁面時,該頁面都已從當前會話中注銷。

有時,我們需要干預重定向URL模式。例如,如果我們在沒有會話的情況下發送請求到dashboard.php,我們將被重定向到以下URL:
/login.php?return_url=%2fdashboard.php
該站點的目的是return_url在登錄后將用戶重定向到參數中的頁面。
假設Netsparker為上述登錄URL檢測到此參數。然后,會話在訪問contact.php頁面時以某種方式結束。在這種情況下,站點將重定向到以下URL:
/login.php?return_url=%2fcontact.php
但這與之前捕獲的重定向URL模式Netsparker不匹配。這次Netsparker將不會意識到注銷已發生,并且掃描將比應有的更早結束。要解決此問題,我們需要使用通配符更新重定向URL模式。
/login.php?return_url=*
這意味著無論該return_url參數值是多少,Netsparker都會成功檢測到注銷。
基于關鍵字的登出檢測
基于關鍵字的注銷檢測是一種機制,當它檢測到HTTP響應中的某些關鍵字時,確定是否已發生注銷。這些關鍵字不在登錄頁面上,而是在注銷頁面上。
Netsparker會根據頁面上的模式自動為您提供建議,但您也可以手動配置它們。

您還可以在關鍵字中使用正則表達式。如果這樣做,則必須啟用Is Regex嗎? 關鍵字模式旁邊的選項。
我們必須確保僅在注銷頁面上找到我們定義的關鍵字。因為如果這些單詞在掃描過程中出現在任何URL中,則Netsparker會嘗試再次登錄(假定已經注銷)。代替使用通用關鍵字,通過使用RegEx表達式,您將獲得更好的結果。
例如,如果我們指定一個RegEx表達式,而不是將用戶名指定為關鍵字,這將提供更嚴格的匹配:
<input .*username.*>
原因是用戶名是通用關鍵字,因此可以在任何其他頁面上。即使 沒有注銷,這也會導致Netsparker重新登錄。
如果您的關鍵字模式與.js和.css文件匹配,并且遇到注銷問題,則可以排除包含這些文件的URL。當您排除.js和.css文件時,Netsparker將繼續請求這些文件以使站點完全正常運行,但不會檢測到注銷。
如果您的站點具有基于重定向的結構,我們建議您使用基于重定向的注銷檢測方法,因為很難確保您可以使用的關鍵字不在登錄頁面上。
如果這些注銷檢測方法都不適合您的網站結構或引起問題,則可以通過選擇“無”來禁用注銷檢測。另外,請確保排除了可能導致注銷的頁面,因為否則Netsparker即使會話結束也將繼續運行。
注銷問題會干擾有效的安全掃描。它們會延長掃描時間并使掃描結果的準確性降低。如果您遇到注銷問題,此處提供的解決方案應有助于確保Netsparker在進行爬網和掃描之前保留已登錄的會話。這將減少您的掃描時間,并確保正確掃描網站。但是,如果您仍然遇到注銷問題,請聯系support@netsparker.com。
Netsparker Enterprise 中文漢化使用教程
推薦文章: