龙空技术网

网络渗透上传漏洞闯19关-第13,14,15 文件幻术分析绕过

Web安全陪跑团 156

前言:

今天我们对“php扩展exif”大约比较关怀,看官们都想要剖析一些“php扩展exif”的相关内容。那么小编也在网上收集了一些关于“php扩展exif””的相关资讯,希望我们能喜欢,小伙伴们一起来学习一下吧!

本次上传突破13,14,15关任务和之前的不同,这里只需要成功上传图片马,并且图片马里有完整的webshell即可

对于第十三关第十四关和第十五关这三关都是对文件幻数进行了检测,只不过第十四关使用的是getimagesize函数,第十五关使用的是exif_imagetype函数,函数返回值内容不一样而已

要想突破文件幻数检测,首先要了解jpg、png、gif这三种文件的头部格式,每种类型的图片内容最开头会有一个标志性的头部,这个头部被称为文件幻数。

jpg文件头部格式截图如下:

文件头值为FFD8FFE000104A464946 png文件头格式,网上大部分资料写的都是89504E47,但是经过我的测试,这四个16进制是仅仅不够的,如果只是89504E47的话,会使getimagesize函数和exif_imagetype函数报错

经过我的测试真正的文件头值应该是89504E470D0A1A0A

gif文件头格式

文件头值为474946383961经过测试,getimagesize函数和exif_imagetype函数都只是是对文件头进行检查,只要文件头部符合函数就会返回内容

<?php

echo "check jpg</br>";

echo "getimagesize function return:</br>";

var_dump(getimagesize("heishacker.jpg"));

echo "exif_imagetype function return:</br>";

var_dump(exif_imagetype("heishacker.jpg"));

echo "</br>check png</br>";

echo "getimagesize function return:</br>";

var_dump(getimagesize("mingren.png"));

echo "exif_imagetype function return:</br>";

var_dump(exif_imagetype("mingren.png"));

echo "</br>check gif</br>";

echo "getimagesize function return:</br>";

var_dump(getimagesize("xiangtian.gif"));

echo "exif_imagetype function return:</br>";

var_dump(exif_imagetype("xiangtian.gif"));

?>

所以这几关都可以上传图片马,图片马的文件头就是正常图片的文件头格式,从而绕过图片幻数检测windows下图片马制作方式

copy x.jpg|png|gif/b+x.php/a x.jpg|png|gif

参数/b指定以二进制格式复制、合并文件(图片),参数/a指定以ASCII格式复制、合并文件(php文件),x.php文件里为要写的一句话木马这三关都可以成功上传图片马,并且里面有完整的一句话木马,但是有时候图片马里面的一些字符会使php报错,导致用文件包含或者解析漏洞去解析图片马中的php时导致解析不了,可以看到利用文件包含去解析三个图片马时均不能解析,哎,运气太差

而且有时候对文件大小也有限制,所以绕过文件幻数最合适的方式是利用16进制编辑器自己制作一个伪图片马,这里利用winhex分别创建shell.jpg、shell.png、shell.gif三个伪图片马

之后上传这三个伪图片马,这样不光可以上传成功,也可以利用文件包含漏洞或解析漏洞解析成功

这三关均可以采用这种方式通关,第十五关需要在php配置文件中开启php的php_exif扩展

By the way,许多对安全感兴趣但没有这方面经验的小朋友,看到这里总是感觉显示一个phpinfo的页面能代表什么,能够执行phpinfo(),这个函数证明,上传的文件可以执行PHP脚本,这个时候如果上传的是一句话木马<?php eval($_POST['A'])?>,就可以直接配合『菜刀』拿下整个站点,查看源码,甚至修改数据库或者控制操作系统。

标签: #php扩展exif