跨站請求偽造--CSRF
阿新 • • 發佈:2021-07-30
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告訴伺服器請求的來源
將攻擊者搭建的網站資料夾名與路徑進行修改