IIS
iis7.5解析漏洞
解析文件类型
IIS6.0默认的可执行文件除了asp,还包含以下三种:
*.asa
*.cer
*.cdx
IIS在解析文件时,主要有三个解析漏洞:
- 目录解析
- 文件解析
- 解析文件类型
目录解析:
原理:
当在网站下建立*.asp、*asa格式文件夹的时候,其目录下的任意文件都将被IIS当做asp文件来解析并执行。
利用:
例如创建目录 wooyun.asp,
那么/wooyun.asp/1.jpg将被当做asp文件来执行。
文件解析:
IIS7.5的漏洞与 nginx的类似,都是由于php配置文件中
开启了 cgi.fix_pathinfo,而这并不是 nginx或者iis7.5本身的漏洞。
PS: a.aspx.a; . a.aspx.jpg…pg
原理:
在IIS6.0下, 服务器默认不解析;号后面的内容
当文件为*.asp;1.jpg时,IIS6.0同样会以asp脚本来执行。
利用:
文件wooyun.asp;.jpg
会被服务器看成是wooyun.asp
修复方案
1.目前尚无微软官方的补丁,可以通过自己编写正则,阻止上传 xx.asp;.jpg类型
的文件名。
2.做好权限设置,限制用户创建文件夹。
3.针对IIS7.5解析漏洞修复方案,修改php.ini文件,将 cgi.fix_pathinfo的值设置为0
完成后请重启PHP和IIS
iis短文件名漏洞
成因:
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。
短文件名特征:
只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。
后缀名最长只有3位,多余的被截断。
危害:
攻击者可以利用“~”字符猜解或遍历服务器中的文件名;
对IIS服务器中的.Net Framework进行拒绝服务攻击。
利用“~”字符猜解暴露短文件/文件夹名。
使用通配符”*” 和 “?”发送一个请求到iis,当IIS接收到一个文件路径中包含”~”的请求时,它的反应是不同的.基于这个特点,可以根据http的响应区分一个可用或者不可用的文件。
因此通过此种方式,我们能够快速遍历网站的敏感文件~(一般是备份文件)
- 访问构造的某个存在的短文件名,会返回404
- 访问构造的某个不存在的短文件名,会返回400
举例说明:
如果一个IIS6网站http://www.xxx.com,用它来进行的短文件猜解方法。(注意一定要支持aspx,可用x.aspx判断)
请求 http://www.xxx.com/a*~1*/.aspx 返回404,就说明存在a开头的一个axxx.xxx的文件(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀)。
请求http://www.xxx.com/a*~1*/.aspx 返回400,说明不存在a开头的一个axxx.xxx的文件(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀)。
Apache
Apache 1.x和 Apache 2.x中存在解析漏洞,但是他们与IIS解析漏洞不同。
原理:
Apache解析文件的规则是:从右到左开始判断解析如果扩展名为不可识别文件
解析就再往左判断,直到碰到认识的扩展名为止,如果都不认识,则会露其源码
利用:
test.php.owf.rar和 test.rar.owf这两种后是 apache不可识别的解析,apache就
会吧test.php.owf.rar解析成php。
如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个
test.php.rara.jpg.png…(把你知道的常见后缀名都写上…)去测试是否是合法后缀
修复
1.apache配置文件,禁止php.这样的文件执行,配置文件里面加入
<Files ~ “.(php.|php3.)”>
Order ALLow,Deny
Deny from all
2.用伪静态能解决这个问题,重写类似.php.*这类文件,打开apache的httpd.conf找到
LoadModule rewrite_module modules/mod_rewrite.so
把#号去掉,重启 apache,在网站根目录下建立 .htaccess文件代码如下
Apache认识哪些扩展名
Apache安装目录下”/conf/mine.types”文件中有详细扩展列表
Php cgi (nginx)
php cgi解析漏洞
Nginx是一款高性能的web服务器,通常用来作为php的解析容器, nginx也曾
经被曝过两个“解析漏洞”。
在2008年5月,国内著名的安全团队805EC发现了这个漏洞。但是后面专业人
员却发现,这不是Ngin特有的漏洞,在IIS7.0, IIS7.5 Lighttpd等Web容器中也
经常会出现这样的解析漏洞。
后面人们慢慢发现,这种解析漏洞其实是 php cgi的漏洞。
在php的配置文件中有一个关键的选项: cgi.fi: x_pathinfo。这个
选项在某些版本中是默认开启的,在开启的时候访问URL
比如:在某些使用Nginx的网站中,访问
http://www.xxser.com/x.txt/x.php,其中这个x.php是不存在的文件
或者访问http://www.xxser.com/1.jpg/1.php,这个1.php也是不存在的,
此时的1.jgp会被当作PHP脚本来解析
这就意味着攻击者可以上传合法的“图片”(图片木马)然后在
URL面加上“/xxx.php”,就可以获得网站的 Webshell。
所以php会向前递归解析,于是就造成解析漏洞,可以说这个漏洞
跟nginx的关系并不是很大,但是由于nginx与php配合很容易造成这
种解析漏洞,所以php cgi漏洞通常被认为是nginx解析漏洞。
Nginx<8.03漏洞
原理
nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在 Nginx配置文件中
通过正则匹配设置 SCRIPT_FILENAME。
当访可http://192.1681.103/ phpinfo. jpg/1.php这个URL时
f
a
s
t
c
g
i
s
c
r
i
p
t
n
a
m
e
会
被
设
置
为
“
p
h
p
i
n
f
o
.
j
p
g
/
1.
p
h
p
”
,
然
后
构
造
成
S
C
R
I
P
T
F
I
L
E
N
A
M
E
传
递
给
P
H
P
C
G
I
,
如
果
P
H
P
中
开
启
了
f
i
x
p
a
t
h
i
n
g
这
个
选
项
P
H
P
会
认
为
S
C
R
I
P
T
F
I
L
E
N
A
M
E
是
p
h
p
i
n
f
o
.
j
p
g
,
而
1.
p
h
p
是
P
A
T
H
I
N
F
O
,
所
以
就
会
将
p
h
p
i
n
f
o
.
j
p
g
作
为
P
H
P
文
件
来
解
析
了
。
危
害
利
用
该
漏
洞
,
政
击
者
可
以
将
任
意
文
件
类
型
作
为
P
H
P
文
件
解
析
,
攻
击
者
通
常
利
用
该
漏
洞
来
获
取
到
一
个
W
e
b
s
h
e
l
l
修
复
方
案
1.
修
改
p
h
p
.
i
n
i
文
件
,
将
c
g
i
.
f
i
x
p
a
t
h
i
n
f
o
的
值
设
置
为
0
。
完
成
后
重
后
P
H
P
和
N
G
I
N
X
2.
在
N
g
i
n
x
配
置
文
件
中
添
加
如
下
代
码
:
i
f
(
fastcgi_script_name会被设置为 “phpinfo.jpg/1.php”,然后构造成 SCRIPT_FILENAME传递给 PHP CGI,如果PHP中开启了 fix_pathing这个选项 PHP会认为 SCRIPT_FILENAME是 phpinfo.jpg,而1.php是 PATH_INFO,所以就 会将 phpinfo.jpg作为PHP文件来解析了。 危害 利用该漏洞,政击者可以将任意文件类型作为PHP文件解析,攻击者通常利用该漏 洞来获取到一个 Webshell 修复方案 1.修改php.ini文件,将 cgi.fix_pathinfo的值设置为0。完成后重后PHP和NGINX 2.在 Nginx配置文件中添加如下代码: if(
fastcgiscriptname会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPTFILENAME传递给PHPCGI,如果PHP中开启了fixpathing这个选项PHP会认为SCRIPTFILENAME是phpinfo.jpg,而1.php是PATHINFO,所以就会将phpinfo.jpg作为PHP文件来解析了。危害利用该漏洞,政击者可以将任意文件类型作为PHP文件解析,攻击者通常利用该漏洞来获取到一个Webshell修复方案1.修改php.ini文件,将cgi.fixpathinfo的值设置为0。完成后重后PHP和NGINX2.在Nginx配置文件中添加如下代码:if(fastcgi_script_name~…*/.*php){
return 403;
}
Websphere
其他
在 windows环境下, xx. jpg[空格]或xx.jpg.这两类文件都是不允许存在的若这样命名, windows会默认除去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单.若上传成功,空格和点都会被 windows自动消除这样也可以 getshell