本篇文章由团队成员提供:HeiHu577
本文章已在FreeBuf发表
上篇:审计|通读审计之HYBBS 上篇
RedCode-HeiHu577,公众号:RedCode Team审计|通读审计之HYBBS(内附原创漏洞)上篇
0x04 后台上传getshell
当然了,谈起黑盒测试大家经常会进入后台找一个心仪的上传点,该CMS也是存在“允许上传文件的配置项”的问题的,笔者在后台直接进行fuzz结果是确实可以进行文件上传的。
随便找一处上传点
直接上传PHP文件。
像我们平时比较忙的时候,也有XSS收信没有收到的情况,这个时候我们需要配合Ajax一键getshell了。毕竟这是个守株待兔的过程。
但是笔者发现该上传点不利于配合Ajax。
在此处抓包
我们看一下admin类下的op成员方法是如何处理的。
...部分是接收一系列POST请求,为了方便截图暂时换成... , 可以看到将配置文件写入到./Conf/conf.php文件中,我们打开看一下。
一个JSON文件,如果我们将POST请求改为如下:
重要的信息都被接收为“空”,网站直接die掉了
0x05 后台插件getshell
笔者在后台左点右点,挖掘到了第二个getshell点。
在 插件 --- 制作插件 中。
此处进行抓包
在admin类下的code方法,我们看一下处理逻辑。
没有做任何过滤,直接引入file_put_contents函数中。
那么构造Payload:name=&gn=add&name=111',phpinfo(),//&name2=3&user=1&mess=1
如图:
Phpinfo:
而且php并没有禁止直接访问。
0x06 构造一个Ajax请求
为什么笔者非要构造Ajax来配合Xss,直接构造表单发送POST请求不香嘛?
在Admin.php的__construct方法中有这样一段代码:
验证了referer,并且refere不能为空。
这个时候我们配合XSS来实现CSRF。
构造一个远程的Js:
$.ajax({
url: "/?admin/code",
data: {name: '111',phpinfo(),//',gn:'add',name2:'3',user:'1',mess:'6'},
type: "POST",
dataType: "json",
success: function(data) {
}
})
外部引入结果:
发送请求
生成恶意文件
访问
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
RedCode Team 拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
原文始发于微信公众号(RedCode Team):审计|通读审计之HYBBS(Getshell)下篇
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论