ShowMsg模版注入

dedecms V5.8 /plus/flink.php存在RCE,利用链分析:

最开始调试的错误调用链


在进行了一个插入后会进入showMsg方法(这里可以看到onlymsg=0的,后续会有个判断语句):


这里如果$gourl==-1,则直接将Http_referer赋值给$gourl
gourl根据特定字符replace之后,去除空格等 传递给tgobj参数,之后拼接到$func变量中,最后到了$msg参数中


LoadString方法会根据msg内容md5创建一个文件,并对模版内容进行解析,跟进Display


这里进入WriteCache方法,会有一个CheckDisabledFunctions方法检测危险函数,然后将内容写入模版文件中:


最终通过inclue 包含cacheFile包含模版,执行代码:

一开始自己跟错了入口,导致后面无法将恶意参数拼接写入文件中,原因在于这个showMsg的这个入口,onlymsg被赋值为1了,没办法进入后续的循环,也就导致于没有进入前面分析的链中。

正确调用链入口:

存在上述问题的原因是因为/plus/flink.php触发漏洞点的入口错误,当$gourl的值为-1,会将HTTP_REFERER的值赋值给$gourl,后续想要将\$gourl的值写入模版文件中,则需要满足$onlymsg=0即可,才会进入到拼接模版文件。


将参数拼接到$func,写入模版文件,最后进行include包含,其中还得绕过checkdisable。

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖