Java代码审计中的CSRF漏洞检测

前言

CSRF跨站请求伪造(Cross-site request forgery)是一种安全漏洞,当某个接口没有设置CSRF验证时,用户点击了恶意链接就有可能导致对该接口发送数据,从而使得数据被篡改。这种攻击常见于敏感操作,如转账、修改密码等场景。为了防止CSRF攻击,开发者应该在接口中设置CSRF验证机制,以确保用户请求的合法性和安全性。

GET型

利用这段代码非常简单,只需构造一个IMG标签,加载时便会发送一个恶意的GET请求。可以与XSS联合使用,也可以通过钓鱼或诱导点击的方式让用户点击GET请求链接。 <img src=”https://xxx.cn/csrf?xx=11″ />

POST型

controller/CSRF.java

@GetMapping("/")<br>public String index() {<br>return "form";<br>}@PostMapping("/post")<br>@ResponseBody<br>public String post() {<br>return "CSRF passed.";<br>}

在前端提交数据页面中,通过Spring框架调用_csrf.parameterName方法可以有效地防止CSRF攻击。

<div><br><!-- th:action with Spring 3.2+ and Thymeleaf 2.1+ can automatically force Thymeleaf to include the CSRF token as a hidden field --><br><!-- <form name="f" th:action="@{/csrf/post}" method="post"> --><br><form name="f" action="/csrf/post" method="post"><br><input type="text" name="input" /><br><input type="submit" value="Submit" /><br><input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" /><br></form><br></div>

通过携带token值进行正常提交请求。

图片[1]-Java代码审计中的CSRF漏洞检测-山海云端论坛

没有进行token验证的防护,该字段是用于表单提交和POST请求验证的csrf_token,由后端生成并与后端校验。如果直接使用POSTMAN或其他post请求提交时缺少csrf的token,则无法完成请求。

图片[2]-Java代码审计中的CSRF漏洞检测-山海云端论坛

审计方法

在审计前端html、jsp等页面时,请检查提交表单时是否包含token(隐藏属性)。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容