漏洞简介
漏洞编号:
CVE-2020-1938
漏洞详情:
Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。而该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者可通过构造特定参数读取webapp目录下的任意文件。
漏洞影响范围:
Apache Tomcat = 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
漏洞复现
环境搭建:
安装docker
1. curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
2. yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
3. yum install docker-ce
4. systemctl start docker
更换镜像的下载源
vi /etc/docker/daemon.json
直接替换里面的内容为:
{
“registry-mirrors”: [“https://xxxxx.mirrors.aliyun.com”]
}
网址在阿里云容器镜像服务获取:
https://www.aliyun.com/product/acr?spm=a2c4g.11174283.2.1.625e4541j1IFor
重启docker服务:
systemctl daemon-reload
systemctl restart docker
测试docker服务是否正常:
docker pull busybox
docker run busybox echo “hello world”
输出hello world即docker正常运行。
部署漏洞所需环境:
复现漏洞可以直接使用vulhub上的docker镜像
项目可以下载至任意目录下,我这里在root目录下
git clone https://github.com/vulhub/vulhub
进入项目需要复现的漏洞编号下
cd vulhub/vulhub-master/tomcat/CVE-2020-1938
把我们需要的项目起来
docker-compose up -d
此命令需要python环境,还需要再单独下载
yum install -y python38
可能yum源里没有python38,也可以装其他版本,可以执行get-pip.py文件即可
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
pip -version
pip install docker-compose
环境搭建完成,测试docker运行情况,查看映射端口:
docker ps
web服务端口为8080,8009为AJP服务端口,打开浏览器输入虚拟机+8080出现下图则说明环境搭建成功。
漏洞验证:
这里提供两个exp地址(我用的第二个):
https://github.com/0nise/CVE-2020-1938
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
靶机添加测试文件:
攻击机尝试利用exp读取该文件:
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.0.105 -p 8009 -f WEB-INF/test.txt
测试读取成功,还可以读取目录下其他文件,这里不再演示至此漏洞复现成功。
漏洞修复意见:
1.关闭AJP默认开启端口(这里是8009)
2.升级tomcat,新版本已经修复漏洞。
加油!