前言

项目是java-sec-code:https://github.com/JoyChou93/java-sec-code

XSS一般是将恶意的JavaScript代码植入html里面,导致访问请求的时候会造成JavaScript代码的执行,主要的有存储形XSS、反射形XSS、DOM形XSS。

看下具体的实例

0X00 从java代码出发

进入controller文件

/src/main/java/org/joychou/controller/XSS.java

先看第一个反射形的。

图片

29行代码可以看出,接收一个参数xss,并直接将xss返回。示例:弹出当前页面存储的cookie

图片

再来看下存储形的。

图片

图片

43行代码:将接收到的XSS参数,存储在cookie里面,并非我们常见的将数据存储在数据库里面。

然后通过/stored/show 将存储在cookie里面键名为xss的值返回到页面上。

图片

图片

一般来说存储形XSS是存在数据库里面,导致访问该页面的用户都有可能会造成蠕虫攻击,而这种人为存储在cookie里面的,利用范围比较小吧,没有什么实际意义。

0X01 修复

图片

将接收的参数进行字符串的替换。主要是进行HTML转义替换。

1
2
3
4
5
6
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;");