一次审计ForestBlog的过程
2019-10-19 19:21:47 Author: forum.90sec.com(查看原文) 阅读量:327 收藏

项目代码地址

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

image

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

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

image

那fastjson这个就无法利用了.

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

image

前台有一个发评论地址.

image

去看下具体请求接收代码

image

跟下第46行代码

image

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

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

image

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

image

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

用burp发一个HTTP请求如下

image

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

image

就成功触发了xss了

image

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

image

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

image

看下具体代码

image

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

在后台链接列表展示这里

image
image

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

image

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

image

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

image

allowSuffix的值为这个.

image

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

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

image

文章来源: https://forum.90sec.com/t/topic/546/1
如有侵权请联系:admin#unsafe.sh