溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

發(fā)布時(shí)間:2021-11-12 10:44:50 來(lái)源:億速云 閱讀:235 作者:小新 欄目:網(wǎng)絡(luò)管理

這篇文章主要介紹怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

前言

CSRF tokens是服務(wù)器生成的一串隨機(jī)值,其主要作用是防止表單重復(fù)提交以及請(qǐng)求偽造攻擊。由于該生成值具有隨機(jī)性,一次性,并且是基于服務(wù)器端的前一個(gè)請(qǐng)求生成的,因此黑客幾乎不可能偽造它。

Burp Suite

雖說(shuō)無(wú)法偽造,但并不代表我們就不能繞過(guò)它。這里,不得不提及一款web滲透神器Burp Suite。在Burp上有多種配置其使用宏來(lái)繞過(guò)HTML表單上CSRF tokens的方法,例如我們可以使用Burp Active Scans,Burp Intruder,Burp Repeater,甚至Burp Proxy。還有專(zhuān)門(mén)用于Intruder模塊的Grep-Extract和pitchfork攻擊類(lèi)型。如果你還覺(jué)得不夠,Burp完美的擴(kuò)展性支持你開(kāi)發(fā)自己的Burp插件。

除了Burp外,另一款神器Sqlmap也為我們提供了類(lèi)似的功能。Sqlmap中有一個(gè)--csrf-token和--csrf-url參數(shù),可用于繞過(guò)CSRF tokens。或者你也可以像我剛說(shuō)的那樣,配置Burp使用--proxy通過(guò)Burp運(yùn)行sqlmap。

但今天我要介紹另一種繞過(guò)方法,即使用Python CGIHTTPServer。

實(shí)驗(yàn)環(huán)境

我的測(cè)試環(huán)境是一個(gè)簡(jiǎn)單的PHP+mysql,我可以登錄并訪問(wèn)受限區(qū)域。我在這里上傳了PHP代碼,你可以下載進(jìn)行測(cè)試。代碼可能寫(xiě)的并不完美,但用于測(cè)試目的應(yīng)該問(wèn)題不大。

CSRF tokens是隨機(jī)生成的數(shù)字的SHA256哈希值,并且每個(gè)HTTP請(qǐng)求的哈希值都不同。

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

因此,如果不對(duì)Burp進(jìn)行針對(duì)性的配置,它將無(wú)法檢測(cè)到該問(wèn)題的存在。

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

sqlmap也同樣。

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

我使用--technique,--dbms和-p選項(xiàng)來(lái)加速掃描。由于這只是一個(gè)簡(jiǎn)單的基于布爾的SQLi,因此--level 1(默認(rèn)值)就足夠了。但是,如果憑據(jù)不正確的話(huà),則必須將--risk設(shè)置為3才行。因?yàn)橹挥酗L(fēng)險(xiǎn)等級(jí)為3的情況下,基于布爾的SQLi才能被檢測(cè)到。基于布爾的SQLi是非常危險(xiǎn)的,因?yàn)樗鼈兛梢允谷魏螚l件為真。例如當(dāng)UPDATE或DELETE語(yǔ)句的WHERE子句存在這種注入,攻擊者就可以實(shí)現(xiàn)更改數(shù)據(jù)庫(kù)中用戶(hù)密碼,轉(zhuǎn)儲(chǔ)憑據(jù)等。

這里,我使用sqlmap的SQLi --csrf-token =“mytoken”選項(xiàng),檢測(cè)到了一個(gè)基于OR的SQLi:

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

這是一個(gè)登錄驗(yàn)證表單,顯然這里是一個(gè)SELECT語(yǔ)句,這意味著風(fēng)險(xiǎn)等級(jí)3沒(méi)有危害。

當(dāng)然,如果你有有效憑據(jù),它還容易受到基于AND的SQLi攻擊。但即使我擁有有效憑據(jù),我也會(huì)先用另一個(gè)(有效)用戶(hù)名來(lái)進(jìn)行測(cè)試,先找到基于OR的SQLi。這樣做可以避免賬戶(hù)被以外的鎖定。

此外,使用sqlmap的SQLi --csrf-token =“mytoken”選項(xiàng),我還檢測(cè)到了一個(gè)基于AND的SQLi:

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

CGIHTTPServer

首先,我們來(lái)創(chuàng)建CGI腳本:

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

這個(gè)腳本需要?jiǎng)?chuàng)建在folder_whatever/cgi-bin/目錄中。我們將其稱(chēng)為mask.py,并確保其是可執(zhí)行的。創(chuàng)建完成后,我們從“folder_whatever”目錄中運(yùn)行“python -m CGIHTTPServer”。默認(rèn)情況下,它將偵聽(tīng)8000/tcp端口。

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

你可以使用正確的密碼對(duì)其進(jìn)行測(cè)試:

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

以及使用一個(gè)錯(cuò)誤密碼:

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

現(xiàn)在,我們無(wú)需對(duì)Burp和sqlmap進(jìn)行特定配置,就能輕松的檢測(cè)到安全漏洞。

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御

以上是“怎樣使用Python CGIHTTPServer繞過(guò)注入時(shí)的CSRF Token防御”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI