PbootCMS v1.1.4 Remote Code Execute Vulnerability

分析

漏洞出现在apps\home\controller\ParserController.php的parserIfLabel函数,漏洞有关的代码在1835到1848行,其中1848行出现了eval函数。

这段函数采用了两次正则匹配的过滤方式,第一次正则需要构造形如{pboot:if(payload)}{/pboot:if}这样的字符串。

第二次正则需要payload中不能出现字母+()这样形式的函数,直接使用形如phpinfo(1)的payload即可。

然后回溯函数可以看到parserIfLabel函数被parserCommom函数所引用,继续回溯可发现该函数出现在如图位置,其中可利用的位置非常多,前台的搜索、留言,后台的各项信息修改等位置都可以传参执行。

以下以留言板举例:


构造这样的留言表单提交,即可成功执行代码。

因其余位置任意代码执行利用同理,此处不再赘述。

修复


系统的高版本对此漏洞进行了修复,增加了安全校验过滤。