CVE-2018-11686 - FlexPaper PHP 发布服务 RCE <= 2.3.6

由 Red Timmy Security 发现
技术分析:
安全通告:
FlexPaper(PHP)的 change_config.php 文件不会检查管理员是否正确认证,从而允许攻击者删除服务器上的任意文件:

unlink 函数删除服务器上文件的路径攻击者可以构造如下请求,删除其选定文件夹中的文件:
POST /flexpaper/php/change_config.php HTTP/1.1
Host: 127.0.0.1:8888
[...]
SAVE_CONFIG=1&SWF_Directory=config/
通过此请求,攻击者可以删除 config 目录中的所有文件。
由于 config/ 文件夹中的所有文件均已被删除,FlexPaper 将认为该应用程序从未被初始化:

因此,攻击者能够重新设置 FlexPaper。但为什么呢?
在 setup.php 中有一个名为 pdf2swfEnabled 的函数,它使用 PHP 的 exec 命令,其参数由用户在 POST 中传递。由于这是 FlexPaper 的初始化过程(见第 2 步),因此没有身份验证。

攻击者可以构造如下 payload:?step=4&PDF2SWF_PATH=id;,从而导致执行 exec(id; --version 2>&1)。
攻击者可以将命令的输出重定向到 config 文件夹内的文件中,然后发送 GET 请求读取输出:

身份验证检查已添加到 change_config.php 的开头
