Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2019-0232 — Apache Tomcat - CGIServlet enableCmdLineArguments 远程代码执行(RCE)漏洞分析与 PoC | Kitploit
工具/GitHubGitHub/jaiguptanick/cve-2019-0232
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试远程访问工具Payload 开发
GitHubjaiguptanick/cve-2019-0232

CVE-2019-0232

Apache Tomcat - CGIServlet enableCmdLineArguments 远程代码执行(RCE)漏洞分析与 PoC

查看仓库
301115年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2019-0232

针对 Apache Tomcat - CGIServlet enableCmdLineArguments 远程代码执行(RCE)漏洞的分析与 PoC

视频 PoC 可在 https://www.youtube.com/watch?v=RA7kzuHOWqA 观看

详细信息

Apache Tomcat 的 CGI Servlet 存在一个漏洞,可被利用以实现远程代码执行(RCE)。只有在 Windows 上以非默认配置并结合批处理文件运行时,该漏洞才能被利用。 通用网关接口(CGI)是一种标准协议,允许 Web 服务器通过 Web 请求执行命令行程序/脚本。该协议还支持通过 URL 参数将命令行参数传递给正在执行的脚本或程序。该协议本身在 RFC 3875 中定义。 在 Windows 上启用 enableCmdLineArguments 时,由于 JRE 向 Windows 传递命令行参数的方式存在缺陷,Apache Tomcat 中的 CGI Servlet 容易遭受 RCE 攻击。CGI Servlet 默认处于禁用状态。在 Tomcat 9.0.x 中,CGI 选项 enableCmdLineArguments 默认禁用(并且为响应此漏洞,所有版本都将默认禁用该选项)。

受影响版本

  • Apache Tomcat 9.0.0.M1 至 9.0.17
  • Apache Tomcat 8.5.0 至 8.5.39
  • Apache Tomcat 7.0.0 至 7.0.93

利用步骤

视频 PoC 可在 https://www.youtube.com/watch?v=RA7kzuHOWqA 观看

1.你需要在一台 Windows PC 上安装 Apache 服务器以及上述任一存在漏洞的 Tomcat 版本。此外,你还需要在同一台机器上安装 Java JRE。 2.就我而言,我在 XAMPP 服务器上安装了 Apache Tomcat 9.0.0.M1。 3.安装 Tomcat 后,请对配置进行以下更改:

a.修改 conf/context.xml,将其改为 <Context privileged="true">

img

b.在 /conf/web.xml 文件中,分别在第 366 行和第 420 行附近进行以下更改。

img

由于我们使用的是 Tomcat 9,enableCmdLineArguments 需要设置为 True。

root@kitploit:~
<servlet>
  	<servlet-name>cgi</servlet-name>
  	<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
  	<init-param>
  	  <param-name>cgiPathPrefix</param-name>
  	  <param-value>WEB-INF/cgi</param-value>
  	</init-param>
  	<init-param>
  	  <param-name>executable</param-name>
  	  <param-value></param-value>
  	</init-param>
  	<init-param>
  	  <param-name>enableCmdLineArguments</param-name>
  	  <param-value>true</param-value>
  	</init-param>
  	<load-on-startup>5</load-on-startup>
  </servlet>

img

root@kitploit:~
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi/*</url-pattern>
</servlet-mapping>

4.在 webapps\ROOT\WEB-INF\cgi 中为 CGI 文件创建一个文件夹,并添加一个包含以下内容的 ism.bat 文件:

img

root@kitploit:~
@echo off
echo Content-Type: text/plain
echo .

5.现在一切就绪;启动服务器并访问 http://localhost:8080/cgi/ism.bat?&dir,检查服务器是否正常工作。

img

6.在这里,我们发现该 RCE 后,现在要使用 netcat 获取反向 shell:在攻击者机器上启动服务器(确保该目录中有 nc.exe),并开启一个 netcat 监听器以接收连接。 7.现在运行 cve-2019-0232.py,并在其中添加服务器 IP 和端口。 8.我们最终成功获取了反向 shell。

img

视频 PoC 链接: https://www.youtube.com/watch?v=RA7kzuHOWqA

缓解措施

  • 禁用 CGI 支持(默认情况下已禁用)。
  • 用户应将 CGI Servlet 初始化参数 enableCmdLineArguments 设置为 false,以防止 CVE-2019-0232 被利用。
  • Apache 实现了“正则表达式”模式 [[a-zA-Z0-9\Q-_.\\/:\E]+],以防止输入在 Windows 系统上作为命令执行。

参考资料

  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-0232
  • https://wwws.nightwatchcybersecurity.com/2019/04/30/remote-code-execution-rce-in-cgi-servlet-apache-tomcat-on-windows-cve-2019-0232/
  • https://tomcat.apache.org/tomcat-9.0-doc/cgi-howto.html
  • https://www.trendmicro.com/en_us/research/19/d/uncovering-cve-2019-0232-a-remote-code-execution-vulnerability-in-apache-tomcat.html
  • https://codewhitesec.blogspot.com/2016/02/java-and-command-line-injections-in-windows.html
  • https://github.com/apache/tomcat/commit/4b244d827ade2a36ef3b8734939541207b78f35c?branch=4b244d827ade2a36ef3b8734939541207b78f35c&diff=split
下载工具