一次审计ForestBlog的过程【通过】

项目代码地址

这个博客是基于SSM实现的.先看下pom.xml

可以看到使用了fastjson 1.2.47版本的.这个版本的fastjson如果java环境低于8u121可以使用rmi协议远程命令执行.

搜索项目没有反序列化地方只有序列化

那fastjson这个就无法利用了.

前台搜索处有一个反射型xss

前台有一个发评论地址.

去看下具体请求接收代码

跟下第46行代码

获取了request header中的ip地址并且没有做任何过滤.如果有输出IP的地方那就会出现xss了.

第55行到58行是获取评论输入的昵称、邮箱、网址、和内容信息.使用了HtmlUtil.escape进行过滤.跟下这里的代码.

使用的是cn.hutool.http.HtmlUtil过滤 escape 方法过滤规则为

可以看到过滤的很全.但是这个url规则也是这样过滤的,如果url在a标签href属性里面出现岂不是可以写伪协议进行xss.

用burp发一个HTTP请求如下

进入后台首页,点击这个昵称

就成功触发了xss了

在管理评论列表页面,因为展示了ip信息所以就直接触发了.

前台还有一个申请友链的地方.

看下具体代码

可以看到没做任何过滤直接把传过来的参数代入数据库中了.

在后台链接列表展示这里

xss代码相继触发了,URL地址在a标签href属性里面点击URL就可以触发了.

后台写文章这里有一个上传功能.

上传一张图片,然后看下实现.

allowSuffix的值为这个.

文件前缀是 取上传文件名称第一个小数点位置前面的字符。文件后缀是取最后一个小数点后面的字符并且判断了字符的白名单。

后面文件名称冲突也没有可利用的办法,这里是不可以绕过了,但是这里如果把文件名称写成带xss代码的文件名也是可以上传,例如.png也可以上传成功,但是这个功能只有后台才可以上传。

  • 通过
  • 未通过

0 投票者