文件上传要点
文件上传
windows特性:
1.ntfs文件系统的存储数据流的一个data属性
phpinfo.php::$data 会被解析成一个phpinfo.php文件
2.1.php:.jpg这类文件在上传后,在 Windows中会被保存为一个空的1.php文件,然后可
以再上传一个1.php<>或者1php<或者其他 Windows不允许的后缀,就会覆盖前边那个空的
1.php
3.上传 shell.php(%80-99),会被识别成shell.php
IIS解析漏洞:
- 目录解析
以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。
- 文件解析
*.asp;.pg 像这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。
nginx漏洞:
1.解析漏洞
上传一个带木马的1.jpg图片
然后访问1.jpg/1.php,首先看到php后缀,先交给php判断,发现没有1.php那么删除,然后判断1.jpg是否存在,存在,把它当作要执行的文件,可以在配置文件中修改一个信息,允许把jpg文件解析成php文件,那么这样子就会造成解析漏洞。
还有一种解析漏洞:利用方法1.jpg%00.php %00截断
cve-2013-4547漏洞
http://127.0.0.1/file.htmlAAA.php
我们需要的是未编码的空格和截止符(\0),那么我们把第一个A改成20(空格的ascii值),第二个A改成00(截止符),第三个A改成2e(.的ascii值)
畸形后缀:
php3 php4 php5 php7 phtml pht phps
绕过:
1.任意文件直接上传
2.前端JS绕过
3.黑名单/白名单绕过——扩展名绕过。
4.Windows特性绕过
5.大小写、双写绕过
6.解析漏洞绕过(apache解析漏洞,从右往左解析,遇到不知道的后缀直接绕过)
7.条件竞争绕过
8.与文件包含漏洞结合绕过
9.%00截断绕过
10.文件类型绕过(Content-Type)
- .htaccess(apache)和.user.ini(ngnix)
文件下载
一般都是目录穿越
download.php?f=../../../../../../etc/passwd
read.php?f=file:///etc/passwd