discuz漏洞重现--csrf+参数污染组合技脱裤
in 漏洞分析 with 0 comment

discuz漏洞重现--csrf+参数污染组合技脱裤

in 漏洞分析 with 0 comment

很多cms对管理后台的安全重视程度不高,认为后台毕竟要管理员权限,所以管理后台的安全性做的也会比前面差,但是对后台来说,csrf和xss是一定要防御好的,因为这是可以伪造管理员进行操作的地方,今天讲解的是后台的一处csrf配合上一个参数污染能产生多大的危害。(大牛们的文章思维跳跃性都比较强,我在这里给大家细细的讲解)。
参数污染造成的危害本来是有限的,但是这个漏洞的参数污染发生在很敏感的地方--备份数据库
对参数的控制不严,导致我们可以把数据库备份到任意地方,这对管理员权限来讲本来也没什么,但是偏偏这个数据库备份的地方又可以csrf,这就导致普通用户也能直接脱裤了。
进入正文,我们先看看备份数据库的链接

QQ20170520-171738@2x.png

这个操作没有做任何csrf防御,导致普通用户也能通过csrf备份
但是备份的sql文件普通用户也访问不到,这是个小问题
可是这里偏偏有个参数污染的漏洞,我们来看
通过链接中的m=db&a=operate&t=export我们快速定位到该链接指向的代码区域
uc_server\control\admin\db.php
QQ20170519-233039@2x.png
我们传进去的参数中,t=export或者=import,不可控
appid会变成数字,不可控
只有backupdir可控,url中没有nexturl所以进入第一个else,又appid=0进入第二个else,解析出来backupdir作为参数sqlpath带进url中了。
这个这个url其实是这样的
http://127.0.0.1/upload/uc_server/api/db.php?apptype=”UCENTER&”&code=xxxxxxxxx
这样一看,我们又可以确定code被带入的位置定位到uc_server\api\dbbak.php
因为method=export所以我们定位到这个if中
QQ20170519-233343@2x.png
往下看
QQ20170519-233429@2x.png
可以看出来这是一个写文件的操作
$sqldump是dump出来的结果,$dumpfile是文件的路径,很明显$dumpfile是我们感兴趣的东西
往上看看$dumpfile是怎么来的
QQ20170519-233520@2x.png
看到这里心里应该有了底,这个sqlpath不就是我们可控的吗,哈哈
那不是只要让sqlpath=../../../../xxx就可以放到根目录下了,这不就脱裤了吗
事实上,原来这个洞就是这样的,但是discuz做了修补,哪儿有那么简单!!再往上看
QQ20170519-233600@2x.png
这里就是如果sqlpath定义了,那么进入到else中就会替换一些非法字符,心碎了,这个参数不能用。
那backupfilename呢,我们看到
QQ20170519-233642@2x.png
就是说要是没有指定backupfilename参数那$backupfilename就会随机生成,这哪儿能行,怎么能让它随机生成呢
我们这样构造让$backupdir=tem&backupfilename=../../../aaaa.sql
我们来看这样为什么可以
前面讲了$backupdir是没有任何过滤传到sqlpath里面了
那么code解出来应该是sqlpath=tmp&backupfilename=../../../aaaa.sql
这样sqlpath就变成了tmp了,很正常吧,backupfilename又没有经过过滤
所以完全可以用../../../aaaa.sql来跨目录,把数据库备份到根目录下来。然后我们就可以愉快的拿走啦。
贴流程图
这里把backupdir给修改了
QQ20170519-233805@2x.png
然后我们看看效果
QQ20170519-233839@2x.png
到discuz的根目录下了吧。然后我们直接访问就可以了

Comments are closed.