Fileupload
@ Zhang zhiyang · Monday, Jan 1, 0001 · 2 minute read · Update at Monday, Jan 1, 0001

文件上传漏洞

0x00 Base

linux

  • 大小写严格区分

windows

  • ./[空格]结尾的文件,windows默认会去除 ./[空格]
  • ::$DATA后的数据会当作文件流处理
extension MIME header
jpg image/jpeg FFD8FF
png image/png 89504E47
gif image/gif 47494638
copy a.jpg/b(binary) + b.txt/a(ascii) demo.jpg  //合成图片马
<html>           //一个简单的上传网页
<head><meta charset="utf-8">
<title>上传测试</title></head>
<body>
	<form action="" method="post" enctype="multipart/form-data">
    <label for="file">文件名:</label>
    <input type="file" name="file"><br>
    <input type="submit" name="submit" value="提交">
    </form>
</body>
</html>

<?php
$tmp_path=$_FILES['file']['tmp_name'];
$name=$_FILES['file']['name'];
if(!$_FILES['file']['error']){
    $upload=move_uploaded_file($tmp_path,"upload/$name");
    if($upload){
        echo '上传成功';
    }  
}

0x01 00截断

00截断中的00是指ascii(0)这个字符,编码为%00和0x00

  • php version<=5.3.4
  • magic_quotes_gpc=off(转义特殊字符)

0x02 extension

language extension
asp asp,aspx,asa,asax,ascx,ashx,asmx,cer,aSp,aSpx,aSa,aSax,aScx,aShx,aSmx,cEr
php php,php5,php4,php3,php2,pHp,pHp5,pHp4,pHp3,pHp2,html,htm,phtml,pht,Html,Htm,pHtml
jsp jsp,jspa,jspx,jsw,jsv,jspf,jtml,jSp,jSpx,jSpa,jSw,jSv,jSpf,jHtml

0x03 Image check function

getimagesize(local|url):通过文件头检测文件的格式和大小

exif_imagetype(local|url){php_exif}:检测格式

  • jpg:不知道
  • png:前八位字节(8950 4E47 0D0A 1A0A)
  • gif:前四位字节(GIFa)

load image{php_GD}

需声明图片文件 header("content-type:image/jpeg")

  • imagecreatefromjpeg(local|url)/imagejpeg($resource,)
  • imagecreatefrompng(local|url)/imagepng( $resource,filename)
  • imagecreatefromgif(local|url)/imagegif( $resource,filename)

0x04 Webserver

1.IIS 6.0解析漏洞:

  • .asp结尾的文件夹,里面任意文件当作asp执行
  • ;截断后面字符

2.IIS 7.0畸形解析漏洞:同nginx

2.Apache

  • apache自右向左解析文件,不支持解析的会直接跳过寻找下一个支持的
  • %0a(CVE-2017-15715)
  • .htaccess:apache的配置文件
SetHandler application/x-httpd-php   //将所有文件都当作php执行

3.Nginx

  • 畸形解析漏洞:文件后加'/.',1.jpg/.php=1.php
  • 未经编码的空格和截至符(/0)—(CVE-2013-4547)
Zhang zhiyang's blog
不过是些许风霜罢了
c cyber http linux math mysql php python 前端

© 2016 - 2022 Zhangzhiyang的博客

Powered by Hugo with theme Dream.

我听别人说这世界上有一种鸟是没有脚的,它只能够一直的飞呀飞呀,飞累了就在风里面睡觉,这种鸟一辈子只能下地一次,那一次就是它死亡的时候。

日程

Zhangzhiyang的 ❤️ 博客

其他

如果你喜欢我的开源项目或者它们可以给你带来帮助,可以赏一杯咖啡 ☕ 给我。~

If you like my open source projects or they can help you. You can buy me a coffee ☕.~

PayPal

https://paypal.me/g1eny0ung

Patreon

Become a Patron!

微信赞赏码

wechat

最好附加一下信息或者留言,方便我可以将捐助记录 📝 下来,十分感谢 🙏。

It is better to attach some information or leave a message so that I can record the donation 📝, thank you very much 🙏.