*本文作者:sjy93812,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
新的一年开始了,发点小福利。无意间发现了一个影响phpcms最新版本的漏洞。最近我一个使用phpcms框架搭建的系统,无故多出了一个超级管理员。确定不是出于本意添加的,然后联想到可能是这个框架中可能是存在SCRF漏洞,但是去看添加管理员的数据包的时候貌是有防CSRF的字符串,那么这个管理员从哪里来的呢?
然后我去分析了一下后台中可能存在SCRF的地方,能在不知不觉中被CSRF的点也只可能是在前台提交的数据,在后台能看到的地方,可能只有友情链接这里了,然后我进一步的去分析了一下。
这是申请链接的入口,这里输入的数据会在后台显示。这里我们提交一个数据,然后抓包看一下。
这里调用了link模块我们看一下这个模块的功能
这里可以看到对我们提交的一些参数做了安全过滤,也就是我们直接想往后台插入恶意数据基本上是不可能的。接着往下看,下面就是直接入库的操作。
可以看到这里正常插入了,而已数据也是正常的,到这里为止都是正常的。接下来就是看哦我们在后台读取这些数据的时候有没有问题。
同样的我们找到后台读取数据库数据的代码
这里直接在数据库中得到了表中的数据,这里非管理权限是不能操作的,这里也不存在什么问题,接着往下跟数据包的流向。
可以看到这里加载了一个link_list文件,这里继续跟一下。这里将要向页面输出的数据打印出来看一下。
这里看起来都是正常的,但是在分析数据包的时候发现响应包中出现了一段对url处理的JS。这里就出现了问题,这里遍历了所有的a标签,并在a标签的href属性值后面全部添加了pc_hash字段。
经过这段JS处理之后的我们之前提交的链接变成了如下的格式:
那么这个链接就存在很大的问题了,这里在访问你之前提交的超链接时会将这个参数以GET方式携带过去。这里就造成了会话凭证的泄露。
然后在自己的服务器中写一个接收参数的页面
然后将你本地的链接提交到后台审核
然后当管理员去审核你提交的链接时你就可以拿到这个防csrf的字符串了,那么就可以做很多事情了。
本文仅供学习研究,正在使用该程序的站长要注意一下这个问题。
*本文作者:sjy93812,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。