当前位置:   article > 正文

Java代码审计之XSS攻击_xss攻击代码

xss攻击代码

深入了解Java中的XSS攻击

存在XSS漏洞的java代码:

第一段

反射型XSS

@RequestMapping("/reflect")
    @ResponseBody
    public static String reflect(String xss) {
        return xss;
    }
  • 1
  • 2
  • 3
  • 4
  • 5

payload

http://localhost:8888/xss/reflect?xss=%3Cscript%3Ealert(%27tpa%27);%3C/script%3E
  • 1

在这里插入图片描述

第二段

存储型XSS

@RequestMapping("/stored/store")
    @ResponseBody
    public String store(String xss, HttpServletResponse response) {
        Cookie cookie = new Cookie("xss", xss);
        response.addCookie(cookie);
        return "Set param into cookie";
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

访问如下地址存储脚本到Cookie中

http://localhost:8888/xss/stored/store?xss=%3Cscript%3Ealert(%27tpa%27)%3C/script%3E
  • 1

在这里插入图片描述

当后端再获取Cookie返回时

@RequestMapping("/stored/show")
@ResponseBody
public String show(@CookieValue("xss") String xss) {
    return xss;
}
  • 1
  • 2
  • 3
  • 4
  • 5

访问

http://localhost:8888/xss/stored/show
  • 1

成功弹窗

在这里插入图片描述

修复

目前最有效的办法,对特殊字符进行实体转义。

XSS安全代码:

@RequestMapping("/safe")
    @ResponseBody
    public static String safe(String xss) {
        return encode(xss);
    }

    private static String encode(String origin) {
        origin = StringUtils.replace(origin, "&", "&");
        origin = StringUtils.replace(origin, "<", "&lt;");
        origin = StringUtils.replace(origin, ">", "&gt;");
        origin = StringUtils.replace(origin, "\"", "&quot;");
        origin = StringUtils.replace(origin, "'", "&#x27;");
        origin = StringUtils.replace(origin, "/", "&#x2F;");
        return origin;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

XSS排查

利用xsstriker等工具进行扫描

手动输入特殊字符看被没被实体转义

关键字:getParamter、<%=、param

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/150081
推荐阅读
相关标签
  

闽ICP备14008679号