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。

        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控制的上述三个属性来读取文件,通过操控上述三个属性从而可以读取到应用目录下的任何文件。

 

五、漏洞复现

    这里下载了apache-tomcat-8.5.32版本进行漏洞复现目前网上有多个POC版本流传,这里列局其中两个,还有很多的SRC和安全中心给了验证方法。

https://github.com/nibiwodong/CNVD-2020-10487-Tomcat-Ajp-lfi-POC

https://github.com/0nise/CVE-2020-1938

六、漏洞修复

1.更新到安全版本
 

Apache Tomcat 7.0.100

Apache Tomcat 8.5.51

Apache Tomcat 9.0.31

https://tomcat.apache.org/download-70.cgi

https://tomcat.apache.org/download-80.cgi

https://tomcat.apache.org/download-90.cgi

或Github下载:https://github.com/apache/tomcat/releases

2.关闭AJP服务,修改Tomcat配置文件Service.xml,注释掉

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

3、配置ajp配置中的secretRequired跟secret属性来限制认证

来自为知笔记(Wiz)

转自:https://www.cnblogs.com/A66666/p/048ac3f5170d724b03f62531da252a20.html