客户端绕过
文件上传的前端绕过主要验证手段为前端的 javascript 代码执行
js验证代码如下:
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
直接把前端代码修改掉就行
--------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
直接删除把checkFileExt(this.value) 函数删除,即可上传
如果不行就换浏览器吧
测试链接 http://45.32.81.200:8080/vul/unsafeupload/clientcheck.php
服务器绕过(MIMEtype绕过)
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------测试链接 http://45.32.81.200:8080/vul/unsafeupload/servercheck.php
首先上传一张普通图片,用burpsuite抓取数据包,发现content-type为
----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
image/jpeg
继续上传一个php文件,用burpsuite抓取数据包,发现content-type为
--------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
application /octet-stream
将数据包发送到repeat 模块,将 content-type 修改为 image/jpeg,
发送数据包,发现文件上传成功
getimagesize 绕过
测试链接:http://45.32.81.200:8080/vul/unsafeupload/getimagesize.php
getimagesize() 函数用于获取图像大小及相关信息
根据判断文件类型和文件大小(构造文件头)来判断上传文类型
在cmd中输入命令 copy /b test.png +muma.php ccc.png //伪造头部
其中test.png为 原始图片 ,此命令将 test.png 和muma.php 合成,重新生成ccc.png
然后上传 ccc.png