您好,登錄后才能下訂單哦!
如何使用Python CGIHTTPServer繞過注入時的CSRF Token防御,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
CSRF tokens是服務器生成的一串隨機值,其主要作用是防止表單重復提交以及請求偽造攻擊。由于該生成值具有隨機性,一次性,并且是基于服務器端的前一個請求生成的,因此黑客幾乎不可能偽造它。
雖說無法偽造,但并不代表我們就不能繞過它。這里,不得不提及一款web滲透神器Burp
Suite。在Burp上有多種配置其使用宏來繞過HTML表單上CSRF tokens的方法,例如我們可以使用Burp Active
Scans,Burp Intruder,Burp Repeater,甚至Burp
Proxy。還有專門用于Intruder模塊的Grep-Extract和pitchfork攻擊類型。如果你還覺得不夠,Burp完美的擴展性支持你開發自己的Burp插件。
除了Burp外,另一款神器Sqlmap也為我們提供了類似的功能。Sqlmap中有一個–csrf-token和–csrf-url參數,可用于繞過CSRF tokens。或者你也可以像我剛說的那樣,配置Burp使用–proxy通過Burp運行sqlmap。
但今天我要介紹另一種繞過方法,即使用Python CGIHTTPServer。
我的測試環境是一個簡單的PHP+mysql,我可以登錄并訪問受限區域。我在這里上傳了PHP代碼,你可以下載進行測試。代碼可能寫的并不完美,但用于測試目的應該問題不大。
CSRF tokens是隨機生成的數字的SHA256哈希值,并且每個HTTP請求的哈希值都不同。
因此,如果不對Burp進行針對性的配置,它將無法檢測到該問題的存在。
sqlmap也同樣。
我使用–technique,–dbms和-p選項來加速掃描。由于這只是一個簡單的基于布爾的SQLi,因此–level
1(默認值)就足夠了。但是,如果憑據不正確的話,則必須將–risk設置為3才行。因為只有風險等級為3的情況下,基于布爾的SQLi才能被檢測到。基于布爾的SQLi是非常危險的,因為它們可以使任何條件為真。例如當UPDATE或DELETE語句的WHERE子句存在這種注入,攻擊者就可以實現更改數據庫中用戶密碼,轉儲憑據等。
這里,我使用sqlmap的SQLi –csrf-token =“mytoken”選項,檢測到了一個基于OR的SQLi:
這是一個登錄驗證表單,顯然這里是一個SELECT語句,這意味著風險等級3沒有危害。
當然,如果你有有效憑據,它還容易受到基于AND的SQLi攻擊。但即使我擁有有效憑據,我也會先用另一個(有效)用戶名來進行測試,先找到基于OR的SQLi。這樣做可以避免賬戶被以外的鎖定。
此外,使用sqlmap的SQLi –csrf-token =“mytoken”選項,我還檢測到了一個基于AND的SQLi:
首先,我們來創建CGI腳本:
這個腳本需要創建在folder_whatever/cgi-bin/目錄中。我們將其稱為mask.py,并確保其是可執行的。創建完成后,我們從“folder_whatever”目錄中運行“python
-m CGIHTTPServer”。默認情況下,它將偵聽8000/tcp端口。
你可以使用正確的密碼對其進行測試:
以及使用一個錯誤密碼:
現在,我們無需對Burp和sqlmap進行特定配置,就能輕松的檢測到安全漏洞。
看完上述內容,你們掌握如何使用Python CGIHTTPServer繞過注入時的CSRF Token防御的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。