【漏洞靶场】文件上传后端检测二次渲染绕过--upload-labs

一、漏洞描述

在upload-labs第十七关使用了了二次渲染的方法对图片作了处理,将上传的png,jpg,gif图片进行尺寸等操作做成新图片。可以通过不同文件格式的特性对图片做处理,让服务端不改变插入语句的位置,然后再用文件包含的漏洞利用。这里详细对gif格式做处理。

二、漏洞发现

先在本地写php脚本若上传成功,且知道上传后文件在网站保存的路径,可通过网页访问获得服务器配置信息,命名为z.php。但是在这里不能用php文件直接上传,需要制作图片马来绕过服务器检测文件二进制头信息。

有两种方法,但都是一个意思,将写入图片里面

方法一准备z.php和一个真jgif图片用cmd命令行输入copy 1.gif/b+z.php/a 2.gif

参数/b指定以二进制格式复制合并文件

参数/a指定以ascll格式复制合并文件

方法二直接用010edior打开zzz.gif,在末尾加上执行语句。

直接看源码,先定义了文件上传路径,然后取文件后缀。

$_FILES['myFile']['name']文件上传时候本身的名字,用户定义的名字

$_FILES['myFile']['type']文件的类型,需要浏览器提供该信息的支持,如“image/gif”

$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认

basename()函数:返回路径中的文件名部分

strchr()函数:查找字符在另一个字符串中首次出现的位置

substr()函数:从第几个位置开始截取后面所有字符串

在这里我非常迷惑,这个靶场这一关是要用二次渲染绕过上传文件,但是它先执行move_uploaded_file()函数返回结果false也会上传文件。这也算个漏洞。先判断后缀和文件类型是否为gif,再判断文件是否上传成功,未成功删除图片。成功则创建画布将gif图片载入,用随机数定义图片新名字,定义新路径,再将载入图片输出到新路径,返回ture

move_uploaded_file(file,newloc)函数:file是要传入的文件,newloc是规定文件的新位置

imagecreatefromgif():创建一块画布,并从gif文件或url地址载入一幅画像

unlink()函数:删除一个文件,成功返回0,否则返回-1,加@屏蔽错误信息输出

time()函数:返回当前时间的时间戳

srand()函数:为随机数生成器rand()设置种子

strval()函数:用于获取变量的字符串值

imagegif()函数:以gif格式将图像输出到浏览器或文件

当然只上传图片访问后是不能当作php执行的,这里要配合文件包含漏洞利用。靶场也很贴心的直接给了一个包含漏洞页面。用get方式接受file变量,include直接包含运行文件,所以1.jpg也能当php执行。

文件包含漏洞的环境要求:

allow_url_fopen=On(默认为On)规定是否允许从远程服务器或者网站检索数据

allow_url_include=On(php5.2之后默认为off)规定是否允许include/require远程文件

因为靶场返回上传图片给客户端,所以直接获得上传后的图片和上传前的图片,可以通过010editor软件将图片二进制打开,对比没有发生变化的地方,在这些地方插入语句就不会被渲染,配合文件包含漏洞直接利用。

三、漏洞利用

改图片后缀为gif并且上传,保存上传返回的图片

打开010editor对比两个图片相同的地方,在这里面随便插

插入语句

再次上传,得到上传之后的图片地址。

利用文件包含漏洞,直接执行获取服务器配置信息,也可上传一句话木马,通过蚁剑,菜刀等后门工具链接获取webshell。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Edward Hopper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值