*文章来源:https://blog.egsec.cn/archives/472

*本文将主要说明:Web中间件常见漏洞的产生原因以及修复方案

什么是Web中间件?

百度百科是这样解释的:中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

中间件=平台+通信

通俗的理解是这样的:中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。Apache的Tomcat、IBM公司的WebSphere、BEA公司的WebLogic、Kingdee公司的Apusic都属于中间件。中间件技术已经不局限于应用服务器、数据库服务器。围绕中间件,在商业中间件及信息化市场主要存在微软阵营、Java阵营、开源阵营。


一、IIS中间组件

IIS的安全脆弱性曾长时间被业内诟病,一旦IIS出现远程执行漏洞威胁将会非常严重。远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码,可以导致IIS服务器所在机器蓝屏或读取其内存中的机密数据.

1.   PUT漏洞

漏洞成因:IISServer在Web服务扩展中开启WebDAV,配置了可以写入权限,造成任意文件上传,受影响版本:IIS6.0

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

2.   短文件名猜解

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

漏洞修复:关闭WebDAV服务;使用相关防护设备。

3.   解析漏洞

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

二、Apache中间组件:

1.   解析漏洞

漏洞成因:Apache文件解析漏洞与用户的配置有密切关系,严格来说属于用户配置问题。,Apache文件解析漏洞涉及到一个解析文件的特性:Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别,不在mime.tyoes内,则继续向左识别,当请求这样一个文件:shell.xxx.yyy,当yyy无法识别,则向左,当xxx也无法识别,继续向左,发现后缀为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进行解析攻击

漏洞修复:

1、将php.ini文件中的cgi.fix_pathinfo的值设为0.这样php在解析1.php/1.jpg这样的目录时,只要1.jpg不存在就会显示404;

2、将/etc/php5/fpm/pool.d/www.conf中security.limit_ectensions后面的值设为.php。

2.   目录遍历

漏洞修复:Nginx目录遍历与Apache一样,属于配置方面的问题,错误的配置可到导致目录遍历与源码泄露

漏洞修复::将/etc/nginx/sites-avaliable/default里的autoindex on改为autoindex off.

3.   CRLF注入

漏洞修复:CRLF时“回车+换行”(\r\n)键的简称,HTTPHeader与HTTPBody时用两个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.   远程代码执行

漏洞修复:Tomcat运行在Windows主机上,且启用了 HTTP PUT请求方法,可通过构造的攻击请求向服务器上传包含任意代码JSP文件,造成任意代码执行,受影响版本:Apache Tomcat 7.0.0 – 7.0.81

漏洞修复:

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中间组件:

反序列化漏洞

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

漏洞修复:

1.不需要http-invoker.sar 组件的用户可直接删除此组件;

2.用于对httpinvoker组件进行访问控制.

war后门文件部署

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

六、WebLogic中间组件:

1.   反序列化漏洞

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

漏洞修复:

1.升级Oracle 10月份补丁;

2.对访问wls-wsat的资源进行访问控制.

2.   SSRF

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

漏洞修复:

1.将SearchPublicRegistries.jsp直接删除;

2.删除uddiexplorer文件夹、限制uddiexplorer应用只能内网访问;

3.将weblogic安装目录wlserver_10.3/server/lib/uddiexplorer.war做好备份、将weblogic安装目录下的server/lib/uddiexplorer.war下载、用winrar等工具打开uddiexplorer.war、将其下的SearchPublicRegistries.jsp重命名为SearchPublicRegistries.jspx、保存后上传回服务端替换原先的uddiexplorer.war、对于多台主机组成的集群,针对每台主机都要做这样的操作、由于每个server的tmp目录下都有缓存所以修改后要彻底重启weblogic(即停应用–停server–停控制台–启控制台–启server–启应用).

3.   任意文件上传

漏洞修复:通过访问config.do配置页面,先更改WorkHome工作目录,用有效的已部署的Web应用目录替换默认的存储JKSKeystores文件的目录,之后使用”添加Keystore设置”的功能,可上传恶意的JSP脚本文件

漏洞修复:

1.使用Oracle官方通告中补丁链接:http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html;https://support.oracle.com/rs?type=doc&id=2394520.1;

2:进入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版本;

2.在apache上做文章,开启url过滤,把危险的命令行参数给过滤掉,由于这种方法修补比较简单,具体方案:修改http.conf文件,找到<Directory/>增加以下三行代码:

***********增加代码 - 开始 ***********

RewriteEngine on

RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]

RewriteRule ^(.*) $1? [L]

***********增加代码 - 结束 ***********

注:重启Apache服务即可,但是要考虑到,相当于每次request就要进行一次url过滤,如果访问量大的话,可能会增加Apache服务负担.

3.打上PHP补丁,补丁下载地址:https://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/.


总结可能存在有误差,需自行百度补充。

可用于安全行业面试知识点。

Web中间件 - 常见漏洞总结的更多相关文章

  1. Web中间件常见漏洞总结

    一.IIS中间组件: 1.PUT漏洞 2.短文件名猜解 3.远程代码执行 4.解析漏洞 二.Apache中间组件: 1.解析漏洞 2.目录遍历 三.Nginx中间组件: 1.文件解析 2.目录遍历 3 ...

  2. web中间件常见漏洞总结笔记

    之前看吐司别人发的个文档,简单记的笔记 ----- IIS     解析漏洞        IIS 6            *.asp;.jpg会被当作asp解析            *.asp/ ...

  3. Web中间件常见漏洞

    IIS Internet Information Services--windows 解析漏洞 IIS 6.x 基于文件名:该版本默认会将 *.asp;.jpg 此种格式的文件名,当成 Asp 解析, ...

  4. Web安全常见漏洞修复建议

    转载地址:https://security.pingan.com/blog/17.html SQL注入 在服务器端要对所有的输入数据验证有效性. 在处理输入之前,验证所有客户端提供的数据,包括所有的参 ...

  5. web中间件

    0x00 Web中间件概述 通俗来说,中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通.Apache的Tomcat.IBM公司的WebSphere.BEA公司的WebLogic ...

  6. 常见web中间件漏洞(一)IIS漏洞

    web中间件作为web安全的重要一块,经常会有人问balabala,虽然有很多已经人尽皆知并且基本不再构成威胁了,但是还是有必要说一下,了解历史,了解我们从哪里来 鉴于内容实在是太多,本来打算一起写完 ...

  7. 常见web中间件漏洞(四)Tomcat漏洞

    这部分好久没写了,继续更新web中间件漏洞思路整理(不复现) ,争取...整理完 前几篇指路链接: nginx: https://www.cnblogs.com/lcxblogs/p/13596239 ...

  8. web端常见安全漏洞测试结果分析-- appscan

    基于appscan测试结果分析: 一.XSS跨站脚本 指的是攻击者往Web页面里插入恶意html代码,通常是JavaScript编写的恶意代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被 ...

  9. Web开发常见的几个漏洞解决方法 (转)

    基本上,参加的安全测试(渗透测试)的网站,可能或多或少存在下面几个漏洞:SQL注入漏洞.跨站脚本攻击漏洞.登陆后台管理页面.IIS短文件/文件夹漏洞.系统敏感信息泄露. 1.测试的步骤及内容 这些安全 ...

随机推荐

  1. Analysis of Hello2 source code

    Hello2 应用程序是一个 Web 模块,它使用 Java Servlet 技术来显示问候语和响应,使用的是 Java Servlet 技术. 该应用程序源代码在 tutorial-examples ...

  2. SWUST OJ 有趣的三位数(0319)

    有趣的三位数(0319) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 158 Accepted: 62   Description ...

  3. 监控Linux系统所选的服务所占进程内存占用

    [代码] #!/bin/bash #程序功能描述: # 监控系统所选的服务所占进程内存占用 #作者:孤舟点点 #版本:1.0 #创建时间:-- :: PATH=/bin:/sbin:/usr/bin: ...

  4. 每日一译系列-模块化css怎么玩(译文)

    原文链接:How Css Modules Work 原文作者是Preact的作者 这是一篇关于如何使用Css Modules的快速介绍,使用到的工具是Webpack吊炸的css-loader 首先,我 ...

  5. Swift 进阶 第 4 课 集合类型协议

    • Read 序列 一个序列 (sequence) 代表的是一系列具有相同类型 的值,你可以对这些值进行迭代.遍历一个序列最简单的方式是使用 for 循环: 123 for element in so ...

  6. 浅谈.NET Framework 与CLR

            承载公共语言运行时 (CLR) 的所有应用程序均需启动(或称“激活”)CLR 以运行托管代码.             通常,.NET Framework 应用程序在生成它的 CLR ...

  7. 《OneForAll框架搭建之旅》前端篇:微前端架构设计(Vue)

    心之所向,勇往直前!记录开发过程中的那些小事,给自己加点经验值. 前言 作为一个.Net后端开发,在竞争愈加激烈的当下,掌握点前端配菜好像已经是家常便饭了. 刚好在工作的第5个年头,辞去小主管职务的我 ...

  8. 前端如何真正晋级成全栈:腾讯 Serverless 前端落地与实践

    Serverless 是当下炙手可热的技术,被认为是云计算发展的未来方向,拥有免运维.降低开发成本.按需自动扩展等诸多优点.尤其是在前端研发领域,使用 Node 开发云函数,可以让前端工程师更加专注于 ...

  9. 《自拍教程36》段位三_Python面向对象类

    函数只能面向过程,来回互相调用后顺序执行, 简单的编码项目,还能应付的过来, 复杂的大型项目,调用多了,就会乱. 如何才能不乱呢,可尝试下, 面向对象类的概念, 将现实世界的事物抽象成对象,将现实世界 ...

  10. 前端每日实战:131# 视频演示如何用纯 CSS 创作一把剪刀

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/GXyGpZ 可交互视频 此视频是可 ...