Web中间件漏洞笔记(持续更新....)

IIS

IIS文件解析漏洞

IIS文件解析漏洞存在于两个版本,一个是IIS6.0的文件解析漏洞,一个是IIS7.5的文件解析漏洞,IIS7.5的文件解析漏洞原理和IIS6.0类似,均因为存在逻辑问题。

IIS6.0解析漏洞

一.漏洞原理
IIS6.0在处理含有特殊符号的文件路径时会出现逻辑错误(文件目录名称为test.asp,目录中的文件会被当做asp执行;后缀名为.asp;.jpg时,当作asp文件执行),从而造成文件解析漏洞。
二.漏洞演示
现在iis服务器上写入一个1.asp;.jpg

然后访问发现成功解析

在服务器上创建一个1.asp目录,里面写入asp文件

访问发现成功解析

三.漏洞修复
1.对新建目录文件名进行过滤,不允许新建包含.的文件夹甚至禁止新建目录
2.限制上传文件的执行权限,不允许执行
3.过滤.asp/xm.jpg等,在httpd.ini中加入过滤规则(此方法为网络上的解决办法,但在server2003中未搜索到该文件)。
4.升级IIS版本

IIS7.5解析漏洞

IIS6.0的解析漏洞同样存在于IIS 5.x的版本,而IIS7.5的畸形解析漏洞的攻击方法同样适用于IIS7.0和Nginx<8.037版本。
IIS7.5文件解析漏洞出现是因为url中只要看到后缀.php,无论存在与否均交给php处理,而php又默认开启“cgi.fix_pathinfo”,会对文件路径进行整理(从后向前判定是否存在,不存在则删减,存在则当作php文件执行。)

在Fast-CGI开启状态下,在文件路径后加上 /xx.php ,即 xx.jpg/xx.php 会被解析为php文件

IIS命令执行漏洞

IIS6.0命令执行漏洞,在开启WebDav服务器的情况下存在可远程执行漏洞。
一.漏洞原理
在IIS6.0处理PROPFIND指令的时候,由于对url的长度没有进行有效的长度控制和检查,导致执行memcpy对虚拟路径进行构造的时候,引发栈溢出,该漏洞可以导致远程代码执行。

二.漏洞复现
Github上的一个开源exp: https://github.com/edwardz246003/IIS_exploit
修改IP地址未对应的目标机地址

但是我没有复现成功23333…
三.漏洞修复
将IIS管理器中,web服务器扩展下,webDAV禁用,即可修复,修复后再此运行脚本,未出现弹框。

IIS短文件名

参考博客:利用windows特性猜解文件名
IIS短文件名漏洞,通过IIS短文件名机制,暴力列举短文件名,尝试猜解后台地址、敏感文件甚至直接下载对应的文件。但局限于只能猜解长文件名前6位和扩展名前3位,同时需要IIS和.net两个条件都满足
一.漏洞原理
利用了IIS短文件名机制,即为了兼容16位MS-DOS程序,Windows为文件名较长的(计算后缀后文件名长度大于9)文件(和文件夹)生成了对应的windows 8.3 短文件名。可以通过此漏洞猜解后台地址、敏感文件等。

二.漏洞复现
尝试10.10.10.132/122~1/a.asp和10.10.10.132/123~1/a.asp;得到不同的结果


根据不同的回显我们可以判断正在猜解的对象是文件还是文件夹。
三.漏洞修复
目前几种修复方式,可选择升级.net framework或者将在注册表
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem中修改NtfsDisable8dot3NameCreation为1,但修改方法尝试多次,不易成功。
除去上述方式,较易成功的方式为将web文件夹内容拷贝到其他区域,将原文件夹删除后,再将拷贝的文件夹移动回来**

IIS6.0PUT上传任意文件

一.漏洞要求:
1.IIS在Web服务扩展中开启了WebDAV。
2.IIS配置了可以写入的权限,包括网站。


二.漏洞复现
利用burp测试
1.随便请求一个页面,将GET方法改成OPTIONS后测试

2.利用PUT方法上传一句话
参考博客:https://blog.csdn.net/nzjdsds/article/details/96431844
三.漏洞修补
关闭WebDAV和写权限。

Apache

文件解析问题

文件解析漏洞通常和文件上传漏洞密不可分。
一.漏洞原理
因为apache解析php时,当文件的最后一个后缀php相关时,会把文件交给php处理器处理,完成结果后返回给apache,再发送给浏览器。而当一个文件以多个点分隔无法识别时,则继续向左识别。
例如:
我们上传一个1.php.aaa.x2
由于我们不能识别x2,aaa,Apache会从左向右判断,所以这个文件会识别成php文件执行。

二.漏洞修复
在配置文件中,不使用AddHandler,改用SetHandler,写好正则,就不会有解析问题。

1
2
3
<FilesMatch “.+.php$”> 
SetHandler application /x-httpd-php
</FilesMatch>

1
2
3
<FilesMatch “.+.ph(p[3457]?|t|tml).”> 
Require all denied
</FilesMatch>

AddHandler导致的解析漏洞

一般这个漏洞不会出现。
一.漏洞原理
如果运维人员给.php后缀增加了处理器:AddHandler application/x-httpd-php .php那么,在有多个后缀的情况下,只要一个文件名中含有.php后缀,即被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
二.漏洞复现
我们可以上传1.php.jpg,因为文件名中存在php,所以这个文件会被解析成php文件,而不是jpg文件。

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

影响范围:2.4.0~2.4.29版本
一.漏洞原理
CRLF漏洞,根本原因就是,$在正则表达式中不仅可以匹配字符串结尾位置,也可以匹配\n或\r。所以,如果服务器写入如下配置:

1
2
3
<FilesMatch \.php$>    
SetHandler application/x-httpd-php
</FilesMatch>

所以我们可以上传1.php\x0A将按照php后缀进行解析,导致绕过一些服务器安全策略。
二.复现
这个漏洞只能在Linux下使用,因为1.php\x0A文件名在windows不合法,不会创建的。
三.漏洞修复
1.升级到最新版本。
2.或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行脚本权限。

Nginx

Nginx配置文件错误导致的解析漏洞

Nginx的解析漏洞说白了就是PHP的解析漏洞,只是这个漏洞在Nginx上出现的比较多。
一.漏洞原理
涉及到的选项cgi.fix_pathinfo,默认值为1,表示开启。

1
2
3
4
5
6
7
8
9
10
server {
location ~ \.php$ {
root /work/www/test;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fpm.sock;
}
}

当攻击者访问/info.jpg/xxx.php时, Nginx将查看URL,看到它以.php结尾,并将路径传递给PHP fastcgi处理程序。
PHP根据URL映射,在服务器上寻找xxx.php文件,但是xxx.php不存在,又由于cgi.fix_pathinfo默认是开启的,因此PHP 会继续检查路径中存在的文件,并将多余的部分当作 PATH_INFO。接着PHP在文件系统中找到.jpg文件,而后以PHP的形式执行.jpg的内容。
这个漏洞和Ngnix版本没有关系。
二.漏洞修补
1将cgi.fix_pathinfo设置成0。
2如果需要使用到cgi.fix_pathinfo这个特性(例如:Wordpress),那么可以禁止上传目录的执行脚本权限。
3或将上传存储的内容与网站分离,即站库分离。
4或高版本PHP提供了security.limit_extensions这个配置参数,设置security.limit_extensions = .php

Nginx空字节任意代码执行漏洞

影响版本:Nginx 0.5, 0.6,0.7 <= 0.7.65,0.8 <= 0.8.37
一.漏洞原理
还是00截断问题
二.漏洞复现
上传info.jpg..php,抓包在hex选项卡打开,将jpg后面后的.的十六进制改成00.
三.漏洞修补
升级Nginx版本

Nginx配置不当

Nginx配置不当除了造成文件解析漏洞,还可能造成两种后果:1、可以进行目录遍历(或目录穿越);2、存在CRLF注入,CRLF是”回车+换行”(rn)的简称。目录穿越将在补充内容中进行介绍。
一.漏洞原理

查看Nginx文档,可以发现有三个表示uri的变量:

1
2
3
1.$uri
2.$document_uri
3.$request_uri

1和2表示的是解码以后的请求路径,不带参数;3表示的是完整的URI(没有解码)

Nginx目录遍历漏洞和apache一样,属于配置方面的问题。错误的配置可能导致目录遍历与源码泄露。

CRLF利用了HTTP包Header与Body是用两个CRLF分隔的这一特性,通过控制HTTP消息头中的字符。若采用解码跳转,攻击者就可以注入一些恶意的换行来注入一些会话Cookie或者HTML代码。
二.漏洞复现

当autoindex on;存在时,可直接访问目录。

CRLF注入

开启burp,刷新页面,抓包,修改数据包。


参考博客:

https://www.anquanke.com/post/id/166616#h2-29

https://mp.weixin.qq.com/s/2rSNjMxHZjAGMmzKStF28w

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×