对FCKEditor <= 2.6.4 通杀 exploit 的分析

简介:

 Author: handt

site     :upload/2011/3/201103240211173836.jpg” border=”0″ small=”0″ alt=”" />

0×01 exploit 使用演示

在 /phpweb 目录下建立文件vuln.php ,将 [1] 中给出的exploit代码复制进去,保存。

确保你的php.exe在环境变量中,在/phpweb目录shift+右键,打开命令行,输入:

php vuln.php

出现使用提示:

本地的fckeditor路径为 /htdocs/js/fckeditor/editor……

所以输入命令为:

php vuln.php 127.0.0.1 /js/fckeditor/

是config.php文件中没有开启上传功能,ok,修改config.php第30行:$Config['Enabled'] = false;

再次输入 php vuln.php 127.0.0.1 /js/fckeditor/

看来是遇到死循环了,没办法,自己打印一些中间信息进行查看,在connector.php文件中对传入的三个参数进行简单处理后调用了

FileUpload( $sResourceType, $sCurrentFolder, $sCommand ) ;

这里三个参数值分别为:Image,/fuck.php .gif/,FileUpload 。

FileUpload()在commands.php中定义:

function FileUpload( $resourceType, $currentFolder, $sCommand )
{
if (!isset($_FILES)) {
global $_FILES;
}
$sErrorNumber = ’0′ ;
$sFileName = ” ;
echo ‘#4#’;
if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
{
echo ‘#5#’;
global $Config ;

$oFile = $_FILES['NewFile'] ;
echo ‘#10#’;
// Map the virtual path to the local server path.
$sServerDir = ServerMapFolder( $resourceType, $currentFolder, $sCommand ) ;

通过打印 #x# 的提示信息,可以判断出问题出在ServerMapFolder()函数上,该函数在io.php中定义:

function ServerMapFolder( $resourceType, $folderPath, $sCommand )
{

// Get the resource type directory.
$sResourceTypePath = GetResourceTypeDirectory( $resourceType, $sCommand ) ;

再看GetResourceTypeDirectory()的代码:

function GetResourceTypeDirectory( $resourceType, $sCommand )
{
global $Config ;
if ( $sCommand == “QuickUpload”)
{
if ( strlen( $Config['QuickUploadAbsolutePath'][$resourceType] ) > 0 )
return $Config['QuickUploadAbsolutePath'][$resourceType] ;

// Map the “UserFiles” path to a local directory.
return Server_MapPath( $Config['QuickUploadPath'][$resourceType] ) ;
}
else
{
if ( strlen( $Config['FileTypesAbsolutePath'][$resourceType] ) > 0 )
return $Config['FileTypesAbsolutePath'][$resourceType] ;

// Map the “UserFiles” path to a local directory.
return Server_MapPath( $Config['FileTypesPath'][$resourceType] ) ;
}
}

最后,路径信息落到了Server_MapPath()里面,这里$Config['FileTypesPath'][$resourceType] 值在config.php中设置,此处为

$Config['FileTypesPath']['Image']的值,看看Server_MapPath()的内容:

function Server_MapPath( $path )
{
// This function is available only for Apache
if ( function_exists( ‘apache_lookup_uri’ ) )
{
echo ‘func exist!!’;

echo $path;  // 注意,这里打印的信息
$info = apache_lookup_uri( $path ) ;
return $info->filename . $info->path_info ;
}

// This isn’t correct but for the moment there’s no other solution
// If this script is under a virtual directory or symlink it will detect the problem and stop
return GetRootPath() . $path ;
}

函数中$path打印的值为:/userfiles/image/ 很正常,而最后返回的值为/index.php/userfiles/image/,显然是因为function_exists( ‘apache_lookup_uri’ )为true,导致$info->filename执行,导致结果错误。

注释掉 return $info->filename . $info->path_info

再次执行:

php  vuln.php 127.0.0.1 /js/fckeditor/

ok,让人欣喜的结果出来了,看看/htdocs/userfiles/image目录吧:

现在小马已经写入服务器,接下来就是用客户端连接了。这里,推荐大家使用”中国菜刀“这款工具,可以直接对php、asp、aspx的一句话木马进行连接:

看到效果了吧:

 

0×02 实战

这个因为比较危险,所以具体的过程和方式就不详细叙述了。

总之,通过自己的实战证明,这个exploit绝对可以拿到webshell,只是概率并不高,需要耐心和良好的google关键字。

0×03 成因分析

0×01中只是演示了利用过程,下面对背后的原理进行分析。水平有限,错误的地方还请指出。

待有时间了补充

0×04 小结

在使用中自己想深入了解的地方有:

1.“一句话木马客户端”的原理,以及如何编写木马客户端。

2.漏洞的发掘过程,目前企业界好像很流行fuzzing测试,但是这种具体的程序怎么进行测试我还是不了解,有知道的朋友还请不吝赐教: mail2gw@qq.com














本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/528236,如需转载请自行联系原作者

相关文章
|
11月前
|
Web App开发 移动开发 安全
WordPress插件wp-file-manager任意文件上传漏洞(CVE-2020-25213)
WordPress插件WPFileManager中存在一个严重的安全漏洞,攻击者可以在安装了此插件的任何WordPress网站上任意上传文件并远程代码执行。
392 1
|
Android开发 Python
Crack App | 低版本绕过某视频 App (dy) 商品抓包限制(读者投稿 - 将玄学进行到底)
Crack App | 低版本绕过某视频 App (dy) 商品抓包限制(读者投稿 - 将玄学进行到底)
241 0
|
10月前
|
存储 移动开发 开发框架
关于 SAP UI5 应用附件上传的病毒扫描功能 virus scan profile
关于 SAP UI5 应用附件上传的病毒扫描功能 virus scan profile
|
安全 算法 Linux
Cobalt Strike <=4.7 xss复现和NTLM V2窃取(不会RCE)
Cobalt Strike <=4.7 xss复现和NTLM V2窃取(不会RCE)
140 0
|
安全 Shell Linux
靶机实战-vuluhub系列-Hack djinn:1 : walkthrough
靶机实战-vuluhub系列-Hack djinn:1 : walkthrough
靶机实战-vuluhub系列-Hack djinn:1 : walkthrough
|
安全 前端开发 JavaScript
【漏洞复现-dedecms-文件上传】vulfocus/dedecms-cve_2019_8933
【漏洞复现-dedecms-文件上传】vulfocus/dedecms-cve_2019_8933
473 0
【漏洞复现-dedecms-文件上传】vulfocus/dedecms-cve_2019_8933
|
iOS开发 MacOS
使用 google_breakpad 分析 Electron 崩溃日志文件
本机(MacBook Pro)上 Electron 的路径:/usr/local/lib/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron
1169 1
使用 google_breakpad 分析 Electron 崩溃日志文件
|
JavaScript 安全 前端开发
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞(下)
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞
235 0
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞(下)
|
存储 安全 JavaScript
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞(上)
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞
246 0
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞(上)
|
存储 JavaScript 安全
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞(中)
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞
218 0
[PiKaChu靶场通关]Cross-Site Scripting XSS漏洞(中)