代码分析
1.服务器对上传文件的类型、内容没有做任何的校验、检查,存在明显的文件上传漏洞
2.生成上传路径后,服务器会检查是否上传成功并返回相应提示信息,如果上传成功,则会提示,路径+succesfully uploaded!
漏洞测试
随便写一个file_upload.php上传
访问成功
代码分析
较low,medium代码增加了相应限制
1.服务器对上传文件type类型是image/jpeg或 image/png 的
2.大小做了限制,只允许上传小于 100000 字节并且文件。
漏洞测试
后端限制了上传文件类型,可考虑白名单绕过,00截断方式,创建file_upload_medium.php .png上传抓包20修改为00截断
#注意到后端做的是允许文件类型的限制,而不是后缀,可尝试修改字段Content-Type为"image/jpeg" ||"image/png" 也可绕过后端限制
代码分析
较medium,high主要增加了如下校验
1.截取最后一个.后分析
2.限制后缀为图片格式jpg/jpeg/png
3.校验图片合规性
漏洞利用
后缀白名单校验,getimagesize(string)校验 ,截断绕过也没啥用,尝试上传图片码
#copy /b 1.jpg+1.txt shell.jpg
上传成功,图片码解析,思路为找解析漏洞,包含漏洞等
解析漏洞解析
文件包含漏洞解析
找到环境文件包含漏洞
#http://192.168.4.32/dvwa/vulnerabilities/fi/?page=file://C:/phpStudy/WWW/dvwa/hackable/uploads/shell.jpg