[滲透測(cè)試]CSRF相關(guān)

懶得整理了填抬,直接貼鏈接了。
參考資料:
讓我們來(lái)談?wù)?CSRF

CSRF

CSRF辆童,跨站請(qǐng)求偽造宜咒,也被稱為one click attack或者session riding。
XSS與CSRF區(qū)別:

  • XSS利用站點(diǎn)內(nèi)的信任用戶把鉴,盜取cookie
  • CSRF通過偽裝成受信任用戶請(qǐng)求受信任的網(wǎng)站

原理

利用目標(biāo)用戶的合法身份故黑,以目標(biāo)用戶的名義執(zhí)行某些非法操作
例如,一個(gè)轉(zhuǎn)賬案例中庭砍,初始化鏈接為
http://www.xxx.com/pay.php?user=xx&money=100
構(gòu)造惡意鏈接:
http://www.xxx.com/pay.php?user=惡意用戶&money=10000
上述案例中场晶,分析得知這個(gè)過程分為兩個(gè)步驟,首先是會(huì)話驗(yàn)證怠缸,也就是服務(wù)端對(duì)cookie的驗(yàn)證诗轻,驗(yàn)證成功后,接受不了user和money兩個(gè)值凯旭,并進(jìn)行轉(zhuǎn)賬操作概耻。因此CSRF成功利用的條件有兩個(gè):1.用戶已經(jīng)登陸系統(tǒng)。2.用戶訪問對(duì)應(yīng)的URL罐呼。

無(wú)防護(hù)的CSRF漏洞利用

GET型CSRF代碼分析


對(duì)于上面這段代碼,我們只需要構(gòu)造GET型URL侦高,提交username和password參數(shù)嫉柴,以此來(lái)新建對(duì)應(yīng)的用戶名和密碼。例如將下面的URL發(fā)給管理員奉呛,就會(huì)在數(shù)據(jù)庫(kù)中新增一條數(shù)據(jù):
http://.../new_user.php?username=admin&passwpord=123123
如果覺得這種鏈接過于明顯计螺,可以用前端img標(biāo)簽的src屬性對(duì)其進(jìn)行隱藏:
<img src="http://..../new_user.php?username=admin&passwpord=123123">

POST型CSRF代碼分析


攻擊者可以通過開發(fā)者工具查看請(qǐng)求,得知傳參的名字瞧壮,以及這個(gè)請(qǐng)求是post類型登馒,那么就可以構(gòu)造一個(gè)如下的網(wǎng)頁(yè),當(dāng)用戶點(diǎn)擊按鈕時(shí)咆槽,即向數(shù)據(jù)庫(kù)插入了一條新的用戶數(shù)據(jù)

    <form action="http://..../new_user.php" method="post">
    <input type="hidden" name="username" value="admin_test">
    <input type="hidden" name="password" value="admin_test">
    <input type="hidden" name="sub" value="Ok">
    <input type="submit" name="test" value="我中獎(jiǎng)了">
    </form>

CSRF自動(dòng)化探測(cè)

手動(dòng)探測(cè)

手動(dòng)探測(cè)原理在于探測(cè)web應(yīng)用程序具有防止CSRF的措施陈轿。
CSRF漏洞預(yù)防措施:

  • 二次驗(yàn)證:一般情況下需要js驗(yàn)證,是否執(zhí)行成功取決于用戶。
  • HTTP referer頭
  • 是否設(shè)置token
  • HTTP自定義頭

如果web應(yīng)用程序的HTTP請(qǐng)求中沒有對(duì)應(yīng)的預(yù)防措施麦射,那么很大程度上就確定存在CSRF漏洞

自動(dòng)化探測(cè)工具

CSRFTester原理:利用代理抓取在瀏覽器中訪問過的所有鏈接以及所有的表單等信息蛾娶,通過在CSRFTester中修改對(duì)應(yīng)的表單等信息,重新提交潜秋,相當(dāng)于以此偽造客戶端請(qǐng)求蛔琅,如果修改的測(cè)試請(qǐng)求成功被網(wǎng)站服務(wù)端接收,則說明存在CSRF漏洞峻呛。

CSRF漏洞token防御

CSRF漏洞實(shí)質(zhì):服務(wù)器無(wú)法準(zhǔn)確判斷當(dāng)前請(qǐng)求是否是合法用戶的自定義操作罗售。如果服務(wù)器在用戶登陸后給予用戶一個(gè)唯一的合法令牌,每一次操作過程中钩述,服務(wù)器都會(huì)驗(yàn)證令牌是否正確寨躁,如果正確執(zhí)行操作,不正確不執(zhí)行操作切距。一般情況下朽缎,給予的令牌會(huì)寫入表單中隱藏域的value值中,隨著表單內(nèi)容進(jìn)行提交谜悟。
簡(jiǎn)單模型:登陸驗(yàn)證->登陸成功后怕轿,給予一個(gè)唯一的令牌斋扰。執(zhí)行操作時(shí),操作過程中驗(yàn)證令牌->成功再進(jìn)行增刪改查
生成token代碼:唯一。例如下面的PHP代碼生成token涧窒。

function generateToken(){
    $salt="test".date("h:i:s");
    $token=md5($salt);
    return $token
}

使用token進(jìn)行CSRF漏洞防御:
1.登陸驗(yàn)證成功后,在會(huì)話session["user_token"]中保存token
2.在后臺(tái)操作中敬扛,增刪改查表單中增加隱藏域hidden粥诫,設(shè)置value為token
3.提交之后進(jìn)行驗(yàn)證token是否正確

CSRF繞過referer技巧

referer防御CSRF原理

當(dāng)用戶點(diǎn)擊被構(gòu)造好的CSRF利用頁(yè)面,那么在執(zhí)行用戶對(duì)應(yīng)操作時(shí)蔑水,提交的HTTP請(qǐng)求中就有對(duì)應(yīng)的referer值邢锯,此時(shí)服務(wù)器端判斷referer值是否與服務(wù)器的域名信息有關(guān),如果不相關(guān)則不執(zhí)行操作搀别。
PHP referer防御代碼編寫
是否包含了某個(gè)域名

if(strpos($_SERVER['HTTP_REFERER'],'xx.com')!==false){
    判斷成功 
}
else{
    判斷失敗
}

繞過referer技巧
如果服務(wù)端只判斷當(dāng)前的referer中是否具有域名丹擎,那么直接可以在站點(diǎn)目錄下新建文件夾進(jìn)行繞過,文件夾的名字為判斷的域名或者ip地址歇父。

GET型CSRF漏洞利用方法

鏈接利用:同上文提到的get型CSRF
iframe利用:iframe標(biāo)簽內(nèi)容將在頁(yè)面家在過程中自動(dòng)進(jìn)行加載蒂培,src指向的位置就是頁(yè)面請(qǐng)求的位置“裆唬可以設(shè)置iframe的style->display:none护戳,以此來(lái)不顯示iframe加載的內(nèi)容,類似于a標(biāo)簽里的href
img標(biāo)簽利用:img標(biāo)簽的內(nèi)容會(huì)隨著頁(yè)面的加載而被請(qǐng)求垂睬,以此src指向的位置會(huì)在頁(yè)面家在過程中進(jìn)行請(qǐng)求
css-background利用:利用css中background樣式中的url來(lái)加載遠(yuǎn)程機(jī)器上的內(nèi)容媳荒,從而對(duì)url中的內(nèi)容發(fā)送http請(qǐng)求

防范

客戶端防范:對(duì)于數(shù)據(jù)庫(kù)的修改請(qǐng)求抗悍,全部使用POST提交,禁止使用GET請(qǐng)求肺樟。
服務(wù)器端防范:一般的做法是在表單里面添加一段隱藏的唯一的token(請(qǐng)求令牌)檐春。
驗(yàn)證碼驗(yàn)證這種只能作為一個(gè)輔助手段,像是二次驗(yàn)證一樣么伯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疟暖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子田柔,更是在濱河造成了極大的恐慌俐巴,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硬爆,死亡現(xiàn)場(chǎng)離奇詭異欣舵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缀磕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門缘圈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人袜蚕,你說我怎么就攤上這事糟把。” “怎么了牲剃?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵遣疯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我凿傅,道長(zhǎng)缠犀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任聪舒,我火速辦了婚禮辨液,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘箱残。我一直安慰自己室梅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布疚宇。 她就那樣靜靜地躺著,像睡著了一般赏殃。 火紅的嫁衣襯著肌膚如雪敷待。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天仁热,我揣著相機(jī)與錄音榜揖,去河邊找鬼勾哩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛举哟,可吹牛的內(nèi)容都是我干的思劳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼妨猩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼潜叛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起壶硅,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤威兜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后庐椒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椒舵,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年约谈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笔宿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棱诱,死狀恐怖泼橘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情军俊,我是刑警寧澤侥加,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站粪躬,受9級(jí)特大地震影響担败,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镰官,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一提前、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泳唠,春花似錦狈网、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至脖母,卻和暖如春士鸥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谆级。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工烤礁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讼积,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓脚仔,卻偏偏與公主長(zhǎng)得像勤众,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鲤脏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345