ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学习笔记三十六:文件内容检查的突破

2021-12-25 15:33:23  阅读:154  来源: 互联网

标签:三十六 文件 检查 type 笔记 content php 上传


文件内容检查包括:

  • content-type检查
  • 文件头检查
  • getimagesize()检查
  • php_exif模块检查
  • imagecreatefromjpeg二次渲染

测试流程:(前提是已经拿到一个上传点)

  • 上传一张正常的照片,验证上传功能是否正常(照片可以用.jpg或者.php等格式进行尝试上传)
  • 最好直接上传一张图片一句话马,它可以绕过content-type,文件头,getimagesize(),php_exif检查,进而成功上传
  • 针对二次渲染,寻找图片数据中不会被转换的部分,将代码插入其中(这种情况就是在你已经将含有php代码的文件成功上传了,并且文件连接也是成功的,但是无法实施执行操作,这就意味着网站可能对我们上传的文件进行了二次渲染)

content-type检查:

就是上传点会对你上传的图片的content-type值进行检查

绕过方法:

使用burp suite抓包直接修改content-type值,比如将.php格式的content-type:application/x-php  改为.jpg格式的content-type:image/jpeg

文件头检查:

将一个正常的图片放进C32Asm里并选择16进制模式,会显示,这就是上传点对文件头检查要检查的东西

绕过方法:

在文件头部添加gif89a(要注意的是,这样做确实可以成功绕过,但是他也会导致我们上传的文件变成.gif格式,进而导致php一句话木马无法起作用,但我们可以让它与其他漏洞结合来操作,比如结合文件包含漏洞)

gif89a
<?php
phpinfo();
?>

图片一句话

结合文件包含漏洞或者解析漏洞

getimagesize()检查和php_exif模块检查:

getimagesize()函数:

示例:

<?php
$remote_png_url = 'http://www.runoob.com/wp-content/themes/w3cschool.cc/assets/img/logodomain-green2.png';
$img_data = getimagesize($remote_png_url);
print_r($img_data );
?>

输出:

Array
(
      [0] => 290
      [1] => 69
      [2] => 3
      [3] => width="290" height="69"
      [bits] => 8
      [mime] => image/png
)

注释:

  • 索引 0 给出的是图像宽度的像素值
  • 索引 1 给出的是图像⾼度的像素值
  • 索引 2 给出的是图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM
  • 索引 3 给出的是⼀个宽度和⾼度的字符串,可以直接⽤于 HTML 的 <image>标签
  • 索引 bits 给出的是图像的每种颜⾊的位数,⼆进制格式
  • 索引 channels 给出的是图像的通道值,RGB 图像默认是 3
  • 索引 mime 给出的是图像的 MIME 信息,此信息可以⽤来在 HTTP Content-type 头信息中发送正确的信息,如: header("Content-type: image/jpeg");

绕过方法:

在文件头部添加gif89a

图片一句话,结合解析漏洞或文件包含漏洞

imagecreatfromjpeg二次渲染:

⼆次渲染:就是根据⽤户上传的图⽚,新⽣成⼀个图⽚,将原始图⽚删除,将新图⽚添加到数据库中。⽐如⼀些⽹ 站根据⽤户上传的头像⽣成⼤中⼩不同尺⼨的图像。

绕过方法:

寻找渲染前后不变的地⽅(可以在c32里进行比对),替换成⼀句话

标签:三十六,文件,检查,type,笔记,content,php,上传
来源: https://www.cnblogs.com/ling-chen/p/15730664.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有