Web中间件常见漏洞总结

kenton 发布于 2025-03-19 52 次阅读


一、IIS漏洞分析

1、PUT漏洞

版本:IIS6.0

漏洞成因:IS Server 在 Web 服务扩展中开启了 WebDAV ,配置了可以写入的权限,造成任意文件上传。

漏洞修复:关闭WebDAV 和写权限

2、短文件名猜解

漏洞成因:IIS的短文件名机制,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400。

漏洞修复

a.升级.net framework   
b.修改注册表禁用短文件名功能  
c.CMD关闭NTFS 8.3文件格式的支持。
d 将we文件夹的内容拷贝到另一个位置

3、远程代码执行

版本:IIS6.0

漏洞成因:处理PROPFIND指令的时候,对url的长度没有进行有效的长度控制和检查,执行memcpy对虚拟路径进行构造时,引发栈溢出,导致远程代码执行

漏洞修修复:关闭WebDAV服务、使用相关的防护措施

4、解析漏洞

漏洞成因:在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。

版本:IIS6.0

利用方式

/test.asp/test.jpg 
第一种是新建一个名为 "test.asp" 的目录,该目录中的任何文件都被 IIS 当作 asp 程序执行(特殊符号是 “/” )

test.asp;.jpg
第二种是上传名为 "test.asp;.jpg" 的文件,虽然该文件真正的后缀名是 ".jpg", 但由于含有特殊符号 ";" ,仍会被 IIS 当做 asp 程序执行

版本:IIS7.5

利用方式:

test.jpg/.php
若有文件 test.jpg ,访问时在其后加 /.php ,便可以把 "test.jpg/.php" 交给 php , php 修理文件路径 "test.jpg/.php" 得到 ”test.jpg" ,该文件存在,便把该文件作为 php 程序执行了。

漏洞修复:

1、对新建目录文件名进行过滤,不允许新建包含'.'的文件
2、取消网站后台新建目录的功能,不允许新建目录
3、限制上传的脚本执行权限,不允许执行脚本
4、过滤aps/xm.jpg,通过ISApi逐渐过滤

二、Apache漏洞分析

1、解析漏洞

漏洞成因:Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别(不在mime.tyoes内),则继续向左识别,当我们请求这样一个文件:shell.xxx.yyy

yyy->无法识别,向左
xxx->无法识别,向左

php->发现后缀是php,交给php处理这个文件

漏洞修复: 将AddHandler application/x-httpd-php .php的配置文件删除

2、目录遍历

漏洞成因:由于配置错误导致目录遍历

漏洞修复:修改apache配置文件httpd.conf

找到Options+Indexes+FollowSymLinks +ExecCGI并修改成 Options-Indexes+FollowSymLinks +ExecCGI 并保存

三、Nginx漏洞分析

1、文件解析漏洞

漏洞成因:对任意文件名后面添加/任意文件名.php解析漏洞。

漏洞利用:原文件名:test.jpg 可以添加test.jpg/x.php进行利用

漏洞修复:

将php.ini中的cgi.fix_pathinfo的值设为0,这样只要后者不存在就直接显示404

2、目录遍历

漏洞成因:与Apache相同,属于配置问题。

漏洞修复:

将/etc/nginx/sites-avaliable/default的autoindex on 改为 autoindex off

3、CRLF注入

CRLF是 回车+换行 (\r\n)的简称。

漏洞成因:

HTTP Header与HTTP Body时用两个CRLF分隔的,浏览器根据两个CRLF来取出HTTP内容并显示出来。
通过控制HTTP消息头中的字符,注入一些恶意的换行,就能注入一些会话cookie或者html代码,由于Nginx配置不正确,导致注入的代码会被执行。

漏洞修复:

Nginx的配置文件/etc/nginx/conf.d/error1.conf修改为使用不解析的url跳转

4、目录穿越

漏洞成因:

Nginx反向代理,静态文件存储在/home/下,而访问时需要在url中输入files,配置文件中/files没有用/闭合,导致可以穿越至上层目录。

漏洞修复:

Nginx 的配置文件/etc/nginx/conf.d/error2.conf的files使用/闭合

四、Tomcat漏洞分析

1、远程代码执行

版本:Apache Tomcat 7.0.0 -7.0.81

漏洞成因:Tomcat运行在Windows主机上,且启用了http pu请求方法,可通过构造的攻击请求想服务器上传包含任意代码的JSP文件,造成任意代码执行。

漏洞修复:

1)检测当前版本是否在影响范围内,并禁用PUT方法。
2)更新并升级至最新版。

2、war后门文件部署

漏洞成因:

Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。
弱后台管理页面存在弱口令,则可以通过爆破获取密码。

漏洞修复:

1、低权限运行Tomcat程序。创建专门的Tomcat服务用户,且只拥有最小权限。
2、增加对于本地基于证书的身份验证,部署账户锁定机制。
对于集中式认证,目录服务也要做相应配置)。在CATALINA_HOME/conf/web.xml文件设置锁定机制和时间超时限制。
3、针对manager-gui/manager-status/manager-script等目录页面设置最小权限访问限制。
4、后台管理,避免弱口令。

五、jBoss漏洞分析

1、反序列化漏洞

漏洞成因:

java序列化,简而言之就是把java对象转化为字节序列的过程。而反序列话则是再把字节序列恢复为java对象的过程,然而就在这一转一变得过程中,程序员的过滤不严格,就可以导致恶意构造的代码的实现。

漏洞修复:

升级到JBOSS AS7版本解决:
1、不需要http-invoker.sar组件的用户可以直接删除此组件
2、用于对httpinvoker组件进行访问控制

2、war 后门文件部署

漏洞成因:jBoss后台管理页面存在弱口令,通过爆破获得账号密码,登陆后台上传包含后门的war包。

漏洞修复:

六、WebLogic漏洞分析

1、反序列化漏洞

漏洞成因:

Java序列化,简而言之就是把java对象转化为字节序列的过程。而反序列话则是再把字节序列恢复为java对象的过程,然而就在这一转一变得过程中,程序员的过滤不严格,就可以导致恶意构造的代码的实现。

漏洞修复:

1、升级Oracle 补丁
2、对访问wls-wsat的资源进行访问控制

2、SSRF

漏洞成因:

WebLogic中存在一个SSRF漏洞,利用该漏洞可以发送HTTP请求,进而攻击内网redis、fastcgi等脆弱组件。

漏洞修复:

1、直接将SearchPublicRegistries.jsp删除
2、删除uddiexplorer文件、限制uddiexplorer应用只能内网访问

3、Weblogic服务端请求伪造漏洞出现在uddi组件(所以安装Weblogic时如果没有选择uddi组件那么就不会有该漏洞),更准确地说是uudi包实现包uddiexplorer.war下的SearchPublicRegistries.jsp。方法二采用的是改后辍的方式,修复步骤如下:
a、将weblogic安装目录下的wlserver_10.3/server/lib/uddiexplorer.war做好备份
b、将weblogic安装目录下的server/lib/uddiexplorer.war下载
c、用winrar等工具打开uddiexplorer.war
d、将其下的SearchPublicRegistries.jsp重命名为SearchPublicRegistries.jspx
e、保存后上传回服务端替换原先的uddiexplorer.war
f、对于多台主机组成的集群,针对每台主机都要做这样的操作
g、由于每个server的tmp目录下都有缓存所以修改后要彻底重启weblogic(即停应用--停server--停控制台--启控制台--启server--启 应用)

3、任意文件上传

漏洞成因:

访问config.do页面,更改Work Home工作目录,用有效的已部署的Web应用目录替换默认的存储JKS Keystores文件的目录,之后使用“添加Keystore设置”的功能,就可以上传恶意的JSP脚本文件。

漏洞修复:

方案一、使用Oracle官方通告中的补丁连接
方案二、进入Weblogic Server管理控制台,进入Domain设置中,启用“生产模式”

4、war后门文件部署

漏洞成因:Weblogic后台存在弱口令,可直接登陆后台上传包含后门的war包。

漏洞修复:防火墙设置端口过滤,设置只允许访问后台的ip列表,避免后台弱口令。

七、其他中间件相关漏洞

1、FastCGI未授权访问、任意命令执行

漏洞成因:

服务的短使用fastcgi协议并对外网开发9000端口,可以构造fastcgi协议包内容,实现未授权访问服务端.php文件以及执行任意命令。

漏洞修复:

更改默认端口

2、PHPCGI远程代码执行

漏洞成因:

在apache调用php解释器解释.php文件时,会将url参数传传给php解释器,如果在url后加传命令行开关(例如-s、-d 、-c或-dauto_prepend_file%3d/etc/passwd+-n)等参数时,会导致源代码泄露和任意代码执行。
此漏洞影响php-5.3.12以前的版本,mod方式、fpm方式不受影响。

漏洞修复:

1、升级php版本;(php-5.3.12以上版本)

2、在Apache上开启url过滤,过滤危险命令参数。
修改http.conf文件,找到<Directory/>增加以下三行
RewriteEngine on
RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteRule ^(.*) $1? [L]
重启一下apache即可,但是要考虑到,相当于每次request就要进行一次url过滤,如果访问量大的话,可能会增加apache的负担。

3、打php补丁。
此作者没有提供个人介绍
最后更新于 2025-03-19