web中间件漏洞

IIS

        IlS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。 

        PUT漏洞

        原理:lls Server 在 Web服务扩展中开启了WebDAV,配置了可以写入的权限,造成任意文件上传。版本: IIS6.0
        修复:关闭WebDAV和写权限。

        文件解析

                目录解析

        原理

        在IIS5.x/6.0 中,在网站下建立文件夹的名字为*.asp、*.asa、*.cer、*.cdx 的文件夹,那么其目录内的任何扩展名的文件都会被IIS当做asp文件来解释并执行。例如创建目录 test.asp,那么 /test.asp/1.jpg 将被当做asp文件来执行。

        修复

        1、对新建目录文件名进行过滤,不允许新建包含‘.’的文件

        2、曲线网站后台新建目录的功能,不允许新建目录

        3、限制上传的脚本执行权限,不允许执行脚本

        4、过滤.asp/xm.jpg,通过ISApi组件过滤

                文件解析

        在IIS5.x/6.0 中, 分号后面的不被解析,也就是说 xie.asp;.jpg 会被服务器看成是xie.asp。还有IIS6.0默认的可执行文件除了asp还包含这两种 .asa .cer 。而有些网站对用户上传的文件进行校验,只是校验其后缀名。所以我们只要上传 *.asp;.jpg、*.asa;.jpg、*.cer;.jpg 后缀的文件,就可以通过服务器校验,并且服务器会把它当成asp文件执行。

                畸形解析漏洞

        原理

        在 IIS7.0中,在默认Fast-CGI开启状况下,将文件保存成test.jpg格式,上传到服务器,假设上传路径为/upload,上传成功后,直接访问/upload/test.jpg/x.php,此时神奇的畸形解析开始发挥作用啦。test.jpg将会被服务器当成php文件执行,所以图片里面的代码就会被执行。我们会神奇的发现在 /upload 目录下创建了一个一句话木马文件 shell.php 。

        修复:设置 cgi.fix_pathinfo=0

        短文件名猜解

IIS短文件名有以下几个特征:

        1.只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同);

        2.后缀名最长只有3位,多余的被截断,超过3位的长文件会生成短文件名;

        3.所有小写字母均转换成大写字母;

        4.长文件名中含有多个 . ,以文件名最后一个 . 作为短文件名后缀;

        5.长文件名前缀/文件夹名字符长度符合0-9和Aa-Zz范围且需要大于等于9位才会生成短文件名,如果包含空格或者其他部分特殊字符,不论长度均会生成短文件;

原理:

        由于短文件名的长度固定(xxxxxx~xxxx),因此攻击者可直接对短文件名进行暴力破解 ,从而访问对应的文件。

        攻击者使用通配符 * 和 ? 发送一个请求到IIS,当IIS接收到一个文件路径中包含 ~ 请求时,它的反应是不同的,即返回的HTTP状态码和错误信息不同。基于这个特点,可以根据HTTP的响应区分一个可用或者不可用的文件。

        目前IIS支持短文件名猜测的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE六种。

漏洞修复:

        (1)升级.net framework
        (2)修改注册表禁用短文件名功能
        (3)CMD关闭NTFS 8.3文件格式的支持

        远程代码执行

        原理

        Microsoft windows Server 2003 R2中的 Interne信息服务IIS6.0中的 WebDAV服务中的

ScStoragePathFromUrl函数中的缓冲区溢出允许远程攻击者通过以 If:<http:// 开头的长标头执行任意代码。

         由恶意的 PROPFIND 请求所引起:当 If 字段包含了 http://localhost/xxxx 这段超长URL时,导致缓冲区溢出(包括栈溢出和堆溢出)具体位置在w3wp.exe,httpext模块的ScStoragePathFromUrl函数处。

  • httpext!ScStoragePathFromUrl+0x360 处复制内存时产生了堆溢出
  • 被溢出的堆块在 httpext!HrCheckIfHeader+0x0000013c 处分配;
  • 崩溃所在位置也是从函数 httpext!HrCheckIfHeader 执行过来的;

        修复

                1.关闭 WebDav服务

                2.升级

                3.部署安全设备

Ngnix

        Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

        文件解析(配置错误)

        解析过程:访问.../test.jpg/test.php    Nginx一看后缀是.php,便直接转交给php去处理,没有验证该文件是否存在。php一看 /test.jpg/test.php 不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成test.php执行了。

        修复办法:

        (1)新版本的php在位置/etc/php5/fpm/pool.d/www.conf中引入了security.limit_extensions ,限制了可执行文件的后缀,默认只允许执行.php文件。

        (2)将php的配置文件 php.ini中选项cgi.fix_pathinfo=0

        目录遍历(配置错误)

        原因:

        Nginx服务器默认是不允许用户以浏览目录的方式去访问资源的。在nginx配置文件的http模块或相应的server及location模块下添加以下配置语句就可以实现目录遍历。(开启了目录浏览功能)

#目录浏览功能(默认off)
autoindex on;

#默认on:显示文件的确切大小,单位bytes;
#改为off:显示文件大概大小,根据文件大小显示合适单位大小(KB,MB或者GB)。
autoindex_exact_size off;

#默认off:显示文件时间为GMT时间
#给为off:显示文件时间为文件的服务器时间
autoindex_localtime on;

#文件名为中文时转码
charset utf-8;

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

        CRLF(回车换行)注入(配置错误)

        原理:Nginx的错误配置如下,该配置的用意是让http请求跳转到https请求。其中$uri就是我们的访问的地址,该变量可控。其中https://$host$uri会出现在http响应报文中,这样我们就可以通过改变$uri来控制http的响应报文。

location / {
    return 302 https://$host$uri;
}

        利用方式:

        1、当我们访问http://192.168.119.131:8080/%0d%0atest时,加一个换行符可以将数据写入响应头%0d%0a\r\n,也就是换行符,在后面加恶意数据,即可将恶意数据写入http响应头。

        2、同理加两个换行符,例如访问 http://192.168.119.131:8080/%0d%0a%0d%0a

<script>alert(1)</script>可以将数据写入响应体,可实现xss攻击。

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

        目录穿越(配置错误)

        原理:Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。在下面配置中/files在匹配字符串的时候可以匹配到 /files..,而 /files..转化成别名时就会变成 /home/..,这样就可以访问到home目录的上一级目录。

location /files {
    alias /home/;
}

        修复:/files改成 /files/即可修改该漏洞。

Apache

        文件解析(配置错误)

        解析文件的特性:Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别(不在mime.types内),则继续向左识别,当我们请求这样一个文件:shell.php.xxx.yyy 发现不认识.yyy,则继续向左识别,也不认识.xxx,当识别后缀为.php时交给php处理这个文件。若是所有后缀都看完了没有一个认识怎么办?此时就会把该文件当做默认类型进行处理了,一般来说,默认类型是text/plain。

        哪些后缀Apache认识,哪些不认识?有一个名为mime.types的文件,其中记录着Apache认识的后缀。在Ubuntu下,该文件位于/etc/mime.types,在Windows下,该文件位于C:/apache/conf/mime.types(类似这样的,注意Apache的安装路径)。

        AddHandler导致的解析漏洞:如果服务器给.php后缀添加了处理器:AddHandler application/x-httpd-php .php那么,在有多个后缀的情况下,只要包含.php后缀的文件就会被识别出php文件进行解析,不需要是最后一个后缀,可绕过白名单过滤。

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

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

        影响范围:2.4.0-2.4.29版本。

        合法后缀配置文件中的正则表达式中$不仅匹配字符串结尾位置,还可以匹配\n或\r,在解析php时,1.php\x0A将按照.php进行解析,而’.php\x0A’ != ‘.php’,可能过滤时过滤了.php但没有过滤.php\x0A从而实现绕过。

        配置文件:过滤后缀名.php

<FilesMatch \.php$>
 	SetHandler application/x-httpd-php
<FilesMatech>`>

        1、如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是test2.php.jpg也会以 php 来执行。
        2、如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是jpg一样能以 php 方式执行。 

        目录遍历(配置错误)

        原理:程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。这里的目录跳转符可以是../,也可是../ASCII编码或者是unicode编码等。目录遍历的标志:Index of /

        修复:httpd.conf文件中找到Options + Indexes + FollowSymLinks + ExecCGI并修改成Options -Indexes + FollowSymLinks + ExecCGI并保存(吧+修改为-

 Tomcat

        Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用 服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应 HTML ( 标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 

        远程代码执行(配置错误)

        原理:只需参数readonly设置为false或者使用参数readonly设置启用WebDAV servlet false,则Tomcat可以不经任何身份验证的控制直接接收PUT方式上传的文件,无论上传者是任何人,也无论上传的是任何文件。此时可以上传jsp文件,直接执行,造成任意代码执行。

        影响范围:Apache Tomcat 7.0.0 – 7.0.79

        两个触发条件:

                第一tomcat需要运行在Windows主机上

                第二要启用PUT请求方法,只需在conf/web.xml中readonly设置为false。当resdonly的值为true时,是不开启PUT的方法的,当它为false时,则是开启PUT方法。

        修复方法:

                1、readonly设置为true。(禁用put方法)

                2、更新并升级至最新版

        war后门文件部署

原理

        Tomcat 支持在后台部署war文件,可以直接将webshell部署到web目录下。

        若后台管理页面存在弱口令,则可以通过爆破获取密码。

漏洞修复

        1、在系统上以低权限运行Tomcat应用程序。创建一个专门的 Tomcat服务用户,该用户只能拥有一组最小权限(例如不允许远程登录)。

        2、增加对于本地和基于证书的身份验证,部署账户锁定机制(对于集中式认证,目录服务也要做相应配置)。在CATALINA_HOME/conf/web.xml文件设置锁定机制和时间超时限制。

        3、以及针对manager-gui/manager-status/manager-script等目录页面设置最小权限访问限制。

        4、后台管理避免弱口令。

JBoss

        JBoss是一个基于J2EE的开发源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。 

        反序列化漏洞

        原理:该漏洞出现在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列,在jboss的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化。我们可以利用post请求,给 /invoker/readonly 发送请求,post内容中包含我们的bash反弹的序列化数据,具体由ysoserial生成一个poc.ser

        修复漏洞:

        有效解决方案:升级到JBOSS AS7版本临时解决方案:

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

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

        war后门文件部署

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

WebLogic

        WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。 

        反序列化漏洞

        原理:

        Java 序列化是指把 Java 对象转换为字节序列的过程便于保存在内存、文件、数据库中,ObjectOutputStream 类的 writeObject() 方法可以实现序列化。

        Java 反序列化是指把字节序列恢复为 Java 对象的过程,ObjectInputStream 类的 readObject() 方法用于反序列化。

        序列化与反序列化是让 Java 对象脱离 Java 运行环境的一种手段,可以有效的实现多平台之间的通信、对象持久化存储。

        攻击者可以在未授权的情况下, 在WebLogic Server中执行反序列化操作,造成远程代码执行漏洞,而后利用该漏洞远程执行恶意代码、挖矿脚本、勒索病毒等。

        防御:

        1)升级Oracle 10月份补丁。

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

        SSRF

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

        修复

        方法一:

                以修复的直接方法是将SearchPublicRegistries.jsp直接删除就好了;

        方法二:

                1)删除uddiexplorer文件夹

                2)限制uddiexplorer应用只能内网访问

        方法三:(常用)

                Weblogic服务端请求伪造漏洞出现在uddi组件(所以安装Weblogic时如果没有选择uddi组件那么就不会有该漏洞),更准确地说是uudi包实现包uddiexplorer.war下的SearchPublicRegistries.jsp。

        任意文件上传

        原因

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

        修复

方法一

        1、使用Oracle官方通告中的补丁链接:

http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html
https://support.oracle.com/rs?type=doc&id=2394520.1

方法二

        1)进入Weblogic Server管理控制台;

        2)domain设置中,启用”生产模式”。

        war后门文件部署

        原因

        由于WebLogic后台存在弱口令,可直接登陆后台上传包含后门的war包。

        修复

        防火墙设置端口过滤,也可以设置只允许访问后台的IP列表,避免后台弱口令。

其它中间件相关漏洞

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

        原因

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

        漏洞修复

        更改默认端口

        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过滤,把危险的命令行参数给过滤掉,由于这种方法修补比较简单,采用比较多吧。

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

        参考:

https://blog.csdn.net/huangyongkang666/article/details/123628762?spm=1001.2014.3001.5502

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值