ECTouch xxe漏洞分析

0x00 前言

在安全客上看到有人在审这个cms,在文章末尾给出了可能存在xxe漏洞,最近也在写pocsuite的插件,所以想就这个xxe漏洞来编写自动脚本。

安全客文章链接:https://www.anquanke.com/post/id/169152

cms下载地址:https://github.com/mstxq17/CodeCheck/

cms其实存在多个xxe漏洞,根源就是滥用simplexml_load_string函数,同时没有关闭实体解析,但是在测试时候发现simplexml_load_string函数如果第三个参数不为“LIBXML_NOENT”的话是不会解析的,因此这个漏洞只适用于php5.3-5.4的版本。

0x01 漏洞分析

这里好就好在这个漏洞是前台的漏洞,并且在默认配置就能触发。

漏洞代码位于ECTouch/include/default/controllers/WechatController.class.php第39行

图片[1]-ECTouch xxe漏洞分析-安全小百科

这里由于是construct函数,因此在加载这个类的时候会自动加载,重点看这里首先需要传入一个orgid的参数,但是这个参数不影响流程,因此带上即可

这里获取wxinfo,由于没有配置,因此都会为空,但是没有退出流程的操作,所以也不用理会,38行开始实例化Wechat这个类,然后调用这个类当中的valid函数

我们跟进这个valid函数去看看,代码位于ECTouch/vendor/libraies/Wechat.php第266行

图片[2]-ECTouch xxe漏洞分析-安全小百科

这里可以看到使用post方式,然后将post的数据传入到postStr参数中,最后进入到simplexml_load_string函数中去

但是唯一的问题就是这里没有回显,因此这里其实存在的盲xxe漏洞

另外还有个问题就是这里高版本的simplexml_load_string当第三个参数不为”LIBXML_NOENT”参数时是不会解析xml的,因此这里如果想利用就只能攻击php班博文为5.3-5.4的服务器

0x02 payload解析

payload其实网上公开的盲xxe都很类似,这里就直接用现成的就好

最终攻击的payload就是/index.php?m=default&c=wechat&a=index&orgid=1

然后传入POST数据,同时在vps上配置好xml文件即可,我这里使用ceye来传输接口,同时也可以在远端vps上监听1234端口,用于接收数据

0x03 检测脚本编写

这里构造批量脚本的思路是利用xxe漏洞获取数据,然后将数据回传到ceye上,每次攻击请求之后就访问ceye的api接口,接口的第一个数据即为最新数据,那么比较下请求前和请求后的api id即可,如果发生变化,那么说明接收到了数据,也就表明攻击成功了。

效果测试:

图片[3]-ECTouch xxe漏洞分析-安全小百科

上述如有不当之处,敬请指出~

相关推荐: YIT-CTF(一) WEB类wp

        偶然发现的一个CTF网站,好像是燕京理工学院的一个小比赛,题目不是很多,也不是很难,适合新人入门CTF,以下附上这个小型CTF的wp,题目地址:传送门 1.签到题 签到题总是很简单,可是这种简单程度第一次见。。。连动都不动的,直接告诉答案。。 …

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论