java代码审计-xss漏洞

举报
亿人安全 发表于 2023/03/31 10:15:59 2023/03/31
【摘要】 0x01 前言CSRF跨站请求伪造(Cross-site request forgery),当某个接口没有设置CSRF验证,点击了别人恶意的链接,可能会造成对这个接口发送相应的数据,造成某个数据被更改。常发生在转帐、修改密码等敏感操作中。0x02 GET型利用十分简单,构造一个IMG标签,加载的时候即可发送一个恶意get请求(可以和xss联合使用,也可以是有钓鱼,诱骗的方式让其点击get请求...

0x01 前言

CSRF跨站请求伪造(Cross-site request forgery),当某个接口没有设置CSRF验证,点击了别人恶意的链接,可能会造成对这个接口发送相应的数据,造成某个数据被更改。常发生在转帐、修改密码等敏感操作中。

0x02 GET型

利用十分简单,构造一个IMG标签,加载的时候即可发送一个恶意
get请求(可以和xss联合使用,也可以是有钓鱼,诱骗的方式让其
点击get请求链接)
<img src=https://xxx.cn/csrf?xx=11 />

0x03 POST型

controller/CSRF.java

@GetMapping("/")
    public String index() {
    return "form";
}

@PostMapping("/post")
    @ResponseBody
    public String post() {
    return "CSRF passed.";
}

前端提交数据页面(spring框架中调用_csrf.parameterName方法可以有效防止csrf)

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

正常提交携带token值则能够通过请求
image.png

不提交token验证上面防护,这个字段就是用来表单提交,POST请求验证的csrf_token,后端生成的,提交后会和后端校验。如果我们直接通过POSTMAN或者其他post请求,缺少了csrf的token是无法完成的。如图
image.png

0x04 审计方法

审计前端html、jsp等前端页面,在提交表单时是否有token(隐藏属性)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。