1. 程式人生 > 其它 >跨站請求偽造--CSRF

跨站請求偽造--CSRF

CSRF--跨站請求偽造

與XSS區別

1.XSS利用站點內的信任使用者,盜取cookie
2.CSRF偽裝成信任使用者請求網站

原理

伺服器無法判斷請求是否由合法使用者發起
利用目標使用者的合法身份,以目標使用者的名義執行某些非法操作
舉一個轉賬案例:
正常過程:
合法連結http://xxxxxxx.php?user=a&money=100
受害者給a轉賬100

攻擊:
攻擊者構造惡意連結:http://xhttp://xxxxxx.php?user=b&money=100
欺騙受害者點選該連結,則給b轉賬100

<?php
//會話驗證
$user=$_GET['user'];
$money=$_GET['money'];
//轉賬
?>

條件:

1.受害者處於登入狀態
2.受害者問對應的URL

GET型CSRF漏洞利用

1.構造GET型的URL,修改引數的值
2.提高隱蔽性,將URL嵌在< img src="xxxxxxxx">中,精心構造網頁,誘使受害者訪問攻擊網頁

POST型的XSS利用

引數以POST方式提交
攻擊者構造一些提交資料的表單,提高隱蔽性,設為隱藏域<input tyoe="hidde" name="username" value="hacker">;JS自動提交....

CSRF的防禦--CSRF手工檢測點

1.HTTP Referer頭
2.設定Token--給使用者一個唯一的合法令牌
可以將令牌寫到隱藏域的value中,隨表單提交

<?php
function token(){
$salt="hello".date("h:i"s");
$token=md5($salt);
return $token;
}
$token=token();
echo $token;
?>

token需要設定為複雜難破解的內容
3.HTTP自定義頭
4.二次驗證
5.驗證碼防禦,強制使用者與應用程式互動,防止使用者在不知情的情況下提交資料

案例

ESPCMS V5

自動探測工具

CSRFTester
工具使用代理抓取瀏覽器的連結及表單資訊,修改表單,重新提交,偽造客戶端請求,請求成功則存在漏洞

繞過Referer技巧

referer告訴伺服器請求的來源
將攻擊者搭建的網站資料夾名與路徑進行修改