Tomcat AJP 文件包含漏洞(CVE-2020-1938) 修复方案 及其思考

漏洞原理:


Tomcat 配置了两个 Connector,它们分别是 HTTP 和 AJP :HTTP 默认端口为 8080,处理 http 请求,而 AJP 默认端口 8009,用于处理 AJP 协议的请求,而 AJP 比 http 更加优化,多用于反向、集群等,漏洞由于 Tomcat AJP 协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器 webapp 下的任意文件以及可以包含任意文件,如果有某上传点,上传图片马等等,即可以获取 shell。

tomcat运行原理图:

漏洞版本:
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
漏洞利用:
https://github.com/0nise/CVE-2020-1938
https://github.com/nibiwodong/CNVD-2020-10487-Tomcat-ajp-POC
https://github.com/Kit4y/CNVD-2020-10487-Tomcat-Ajp-lfi-Scanner
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi/
 

漏洞修复(官方方案):


1. 如未使用 Tomcat AJP 协议:

如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51 或 7.0.100 版本进行漏洞修复。

如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭 AJPConnector,或将其监听地址改为仅监听本机 localhost。

具体操作:

(1)编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):

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


(2)将此行注释掉(也可删掉该行)

<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->


(3)保存后需重新启动,规则方可生效。

2. 如果使用了 Tomcat AJP 协议:

建议将 Tomcat 立即升级到 9.0.31、8.5.51 或 7.0.100 版本进行修复,同时为 AJP Connector 配置 secret 来设置 AJP 协议的认证凭证。例如(注意必须将 YOUR_TOMCAT_AJP_SECRET 更改为一个安全性高、无法被轻易猜解的值):

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>


如无法立即进行版本更新、或者是更老版本的用户,建议为 AJPConnector 配置 requiredSecret 来设置 AJP 协议认证凭证。例如(注意必须将 YOUR_TOMCAT_AJP_SECRET 更改为一个安全性高、无法被轻易猜解的值):

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" requiredSecret="YOUR_TOMCAT_AJP_SECRET" />

思考:

tomcat的这个漏洞感觉就是伪装成为正常的服务执行不正常的操作,加上认证凭证以后服务内部之间要先对“暗号”才能服务,“假服务”没有暗号所以不能执行任何操作,漏洞被解决。


 

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值