Tomcat的文件包含漏洞(CVE-2020-1938)
漏洞介绍
该漏洞是由于Tomcat AJP协议存在缺陷所引发的漏洞,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件,若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。
漏洞影响范围
该漏洞在Tomcat7到Tomcat9的许多版本中存在。
受影响版本
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
不受影响版本
Apache Tomcat = 7.0.100
Apache Tomcat = 8.5.51
Apache Tomcat = 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控制的上述三个属性来读取文件,通过操控上述三个属性从而可以读取到应用目录下的任何文件。
漏洞修复建议
<Connector port= "8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET" /> |
2. 使用Tomcat 8的用户可为AJP Connector配置requiredSecret来设置AJP协议的认证凭证。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" requiredSecret="YOUR_TOMCAT_AJP_SECRET" /> |
其中,上述两种情况下都必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值。
转载于CSDN,详情请点击阅读原文
中电运行是专业专注培养能源企业IT工匠和提供IT整体解决方案的服务商,也是能源互联网安全专家。
●
●
●
●
●