cve-2020-1938 漏洞学习笔记

本文介绍了GhostCat漏洞,该漏洞源于TomcatAJP协议的设计缺陷,允许攻击者读取任意文件。文章详细讲解了Tomcat的架构,包括server、service、connector和container等组件,并展示了漏洞复现的过程,包括启动docker容器、端口映射问题的解决,以及利用POC获取web.xml源码的步骤。
摘要由CSDN通过智能技术生成

去年在xctf还是在哪儿碰到过一个web题目是关于漏洞穿越的题目 , 后面查资料看到过一个相关的幽灵猫(ghostcat漏洞)没怎么实际的去怎么学习过,这次偶然间在freebuf看到了一下相关的详解 地址:Tomcat AJP文件包含漏洞(CVE-2020-1938) - FreeBuf网络安全行业门户,这次特地好好学习一下。

首先得知道tomcat 的结构

可以看到 一个 tomcat 就是一个 server 服务器 然后这个server可以有多个service (指的是抽象的逻辑层) ,而一个service里面还能有connecter 和container 还有jsp 引擎和日志之类的其他组件。

这个漏洞中的主要问题在connecter 和 container

现在说说这个漏洞主要的缺陷:由于Tomcat AJP协议设计上存在缺陷,攻击者通过Tomcat AJP Connector可以读取或包含Tomcat上所有webapp目录下的任意文件(AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接SERVLET容器连接。)

好了基本都清楚的了解了问题在于conncter 和container,现在来说说这两个组件之间的ajp 通信

下图为conncter 接收请求数据包后的解析过程 ,之后会将解析后的交给container处理

container里面又有多个host(虚拟主机 )可以对应多个域名,

host下面还有多个context(相当于一个个的web应用)

而context 中还有多个wrapper (相当于servlet )

这边开始复现漏洞:

启动镜像:

docker run -d -p 8080:8080 -p 8009:8009 --name ghostcat duonghuuphuc/tomcat-8.5.32

运行脚本发现主机无法实现访问docker中的tomcat服务器

这边遇到了关于docker里面的tomcat无法实现端口访问的问题,然后找了很多的信息(比如如何将docker部署到宿主机同网段,端口映射之类的方法),解决方法如下:

(60条消息) 【Docker】Docker服务外部无法访问ubuntu docker外部无法访问MAXLZ的博客-CSDN博客

(60条消息) 如何让宿主机访问docker容器内的服务_Simple_IDE的博客-CSDN博客

大部分都是修改端口映射但是我觉得最重要的是需要重启一下电脑,(ps:我平时用的虚拟机从来不关机,后面找了很多的办法才想到重启一下试试)

这边终于可以实现主机访问tomcat了

可以看到我们用已有的poc已经拿到了该网站的web.xml源码

漏洞复现完成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值