记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

PbootCMS V3.0.1任意代码执行漏洞

2020-10-02 12:36

PbootCMS V3.0.1任意代码执行漏洞-极度安全

漏洞分析

先查看apps\home\controller\ParserController.php中的parserIfLabel方法的两个if标签的过滤项

  1. if (preg_match_all('/([\w]+)([\/\*\<\>\%\w\s\\\\]+)?\(/i', $matches[1][$i], $matches2)) {
  2.                     foreach ($matches2[1] as $value) {
  3.                         if (function_exists($value) && ! in_array($value$white_fun)) {
  4.                             $danger = true;
  5.                             break;
  6.                         }
  7.                     }
  8.                 }
  1. if (preg_match('/(\$_GET\[)|(\$_POST\[)|(\$_REQUEST\[)|(\$_COOKIE\[)|(\$_SESSION\[)|(file_put_contents)|(file_get_contents)|(fwrite)|(phpinfo)|(base64)|(`)|(shell_exec)|(eval)|(assert)|(system)|(exec)|(passthru)|(pcntl_exec)|(popen)|(proc_open)|(print_r)|(print)|(urldecode)|(chr)|(include)|(request)|(__FILE__)|(__DIR__)|(copy)|(call_user_)|(preg_replace)|(array_map)|(array_reverse)|(getallheaders)|(get_headers)|(decode_string)|(htmlspecialchars)/i', $matches[1][$i]))

关于第一处的判断,我们依然可以使用在函数名和括号之间插入控制字符的方法来绕过该处校验,对于第二处,可以看到在黑名单中相较于上个分析版本(2.0.9)添加了getallheaders的黑名单判断,于是该处我们需要寻找新的方法来实现代码执行的目的,这让我想到了array_filter函数

PbootCMS V3.0.1任意代码执行漏洞-极度安全

通过该函数我们可以实现执行php代码,例如array_filter(['whoami'],'system');

那么接下来我们需要思考如何绕过黑名单中对system的检测,在这里我们依然可以将system放到header头中,这里可以使用session_id(session_start())的方法来取到session的值,我们可以将session的值置为system,就可以成功的调用system函数来执行命令了,通过上面的思路写出利用payload使用的时候却发生了如下问题

PbootCMS V3.0.1任意代码执行漏洞-极度安全

该处的冒号被替换成了@符号


知识来源: https://www.secvery.com/2110.html

阅读:71259 | 评论:0 | 标签:cms 漏洞 执行

想收藏或者和大家分享这篇好文章→复制链接地址

“PbootCMS V3.0.1任意代码执行漏洞”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

❤人人都能成为掌握黑客技术的英雄⛄️

ADS

标签云