当前位置:网站首页>网络安全——文件上传内容检查绕过
网络安全——文件上传内容检查绕过
2022-07-24 13:33:00 【Beluga】
文件上传内容检查绕过
第一步,打开网络拓扑,启动实验虚拟机。
第二步,打开桌面上的Chrome浏览器,在地址栏中输入http://127.0.0.1,进入upload-labs页面中,然后点击左侧的导航栏Pass-13进入关卡13

在任务提示中要求上传格式为.jpg\.png\.gif且包含一句话或webshell的图片马,点击查看源代码按钮

在代码的第四行$bin = fread($file, 2);读取文件的前两个字节,接着往下看出现了一个unpack函数,将字节字符串解包成变量,并将变量存放在两个数组分别为chars1和chars2中,并由intval转换为十进制,经过了这一段代码的处理后,文件头中的前面两个字节将以十进制的信息表示,接下来是一个switch的判断,判断文件的格式为jpg、png、gif文件则允许上传跳到上传的程序中,否则判断为unknown则提示上传失败。该程序主要是取上传文件的头两个字节判断文件类型,因此此处可直接上传图片马,操作如下:打开桌面上的pentestbox输入命令cd C:\Users\Administrator\Desktop\隐写术Images\gif,

在该文件中创建一个内容为<?php phpinfo(); ?>的shell.php文件,然后使用命令copy cat_tldzFZS.jpg /b + shell.php /a webshell.jpg拼接图片和木马,

将图片移动到桌面上,然后回到上传页面,上传该图片马同时打开代理使用burpsuite进行抓包,

为了方便观察上传后的路径,右键鼠标选择Send to Repeater将数据包发送到Repeater重放器中,然后直接点Go发送数据包

上传成功,关闭代理功能。

第三步,目前该漏洞无法单独进行利用,需要与文件包含漏洞搭配起来进行利用,由于网站为本地环境,我们直接在本地的网站中模拟这一过程,进入路径C:\Program Files (x86)\upload-labs\WWW中,写一个简单的存在文件包含的页面

此文件已写入到网站中,在自己进行实验时可以不用创建,我们直接访问http://127.0.0.1/include.php即可,

接下来构造利用页面结尾添加?file=upload/8620200104160811.jpg,再次访问

利用成功。
第四步,回到网站首页,点击左侧的导航栏Pass-14进入关卡14,依旧是上传图片马,点击显示源码按钮查看源代码

这里用getimagesize获取文件类型,依旧可以使用图片马进行绕过,在这里简单补充一下getimagesize的知识点

用上一步中的图片木马进行上传,并查看/upload/文件夹中的上传的名称

访问/include.php并构造/include.php?file=upload/9120200104164552.jpeg

第五步,再次回到网站首页,点击左侧的导航栏Pass-15进入关卡15,依旧是上传图片马,点击显示源码按钮查看源代码发现更换了函数

使用了exif_imagetype()函数,读取一个图像的第一个字节并检查其签名,其绕过方法同Pass-13一样,省略复现过程,以上实验完成后。
第六步,进入网站首页,点击左侧的导航栏Pass-16进入关卡16,依旧是上传图片马,点击显示源码按钮查看源代码

通过审阅整个文件的代码,判断了后缀名、centent-type以及利用imagecreatefromgif/jepg/png判断是否为gif、jepg、png图片,最后又做了一次二次渲染。单独看一下文件中关于检测gif的代码

第61行通过两个函数$fileext和$filetype检测文件是否为gif格式,第62行使用了move_uploaded_file函数来做条件判断,如果成功将文件移动到$target_path,就会进入二次渲染的代码,反之则上传失败

这一关破解的思路大致为:首先上传一个gif图片,然后将上传的gif和本地的gif图片进行对比,找出仍然相同的数据块部分,然后将phpinfo()函数的代码插入进去。
第七步,首先上传一张普通的gif图片,进入C:\test路径,将图片test.gif复制到桌面上,改名为1.gif然后再网页中上传1.gif

访问/upload/

点击4575.gif打开图片将文件另存为到本地保存为2.gif

然后使用桌面上的Hex Editor Neo打开2.gif图片与1.gif进行对比发现在a0行的地方两个图片的内容一致,

直接将2.gif的a0位置的字符修改为<?php phpinfo(); ?>

最后将文件保存为3.gif,进行上传。访问upload目录获得文件上传后的名称

使用include.php包含该文件

边栏推荐
- Research and progress of traffic situation awareness based on social media data enhancement
- Vscode configuration user code snippet (including deletion method)
- The EAS BOS development environment client cannot be started, but the server does show that it is ready
- Relevant laws of animation movement (judge where to move according to parameters)
- Windivert: capture and modify packages
- Redis (13) -- on master-slave replication of redis
- [paper reading] mean teachers are better role models
- Selenium environment configuration and eight elements positioning
- Aggregation measurement of robot swarm intelligence based on group entropy
- Kunyu installation details
猜你喜欢
随机推荐
EAS approval process related table
Redis(13)----浅谈Redis的主从复制
Packaging class (mutual conversion between types)
Thread multithreading
Happy number ~ ~ ~ (in fact, I'm not happy at all) & ugly number
Sort method -- bubble sort (use an array to sort a string of numbers from large to small or from small to large)
hdparm
Spelling words~
Realize a JS lottery?
The core capability of accelerating enterprise data application innovation flexibility
Queue (stack)
binary search
基于boost库的搜索引擎
Explain the edge cloud in simple terms | 2. architecture
Embedded problem troubleshooting methods, network problems, SD card problems, device startup problems, serial port problems, I2C problems, SPI problems, PCIe problems, etc
Introduction to single chip microcomputer
Introduction of embedded network interface scheme and summary of driver debugging methods
Representation and basic application of regular expressions
网络安全——过滤绕过注入
Integer inversion of force deduction questions









