
CVE-2023-4863 (libwebp में heap buffer overflow) का पूर्णतः पृथक और स्वचालित Docker वातावरण में पुनरुत्पादन। CEFIRE के एथिकल हैकिंग मॉड्यूल के अभ्यास पर आधारित।
निजी नेटवर्क में आठ containers तैनात करता है:
| Container | भूमिका |
|---|---|
| attacker | craft.c के साथ exploit.webp उत्पन्न करता है और इसे एक नकली फ़िशिंग पेज के साथ HTTP पर serve करता है |
| victim-cli | libwebp 1.2.2-2ubuntu0.22.04.1 (असुरक्षित) के साथ Ubuntu 22.04। exploit को स्वचालित रूप से डाउनलोड और प्रोसेस करता है → crash |
| victim-patched | Ubuntu के सुरक्षा repo से libwebp (पैच किया हुआ) के साथ Ubuntu 22.04। वही exploit → नियंत्रित त्रुटि, कोई crash नहीं |
| victim-gui | XFCE, VNC और Firefox 110 (असुरक्षित) के साथ Ubuntu 22.04। exploit.webp के साथ ब्राउज़र का वास्तविक crash |
| victim-gui-patched | XFCE, VNC और Firefox 126 (पैच किया हुआ) के साथ Ubuntu 22.04। वही exploit → ब्राउज़र बच जाता है |
| postgres | PostgreSQL — Guacamole के प्रमाणीकरण और कनेक्शन का backend |
| guacd | Apache Guacamole का डेमॉन (प्रोटोकॉल प्रॉक्सी) |
| guacamole | वेब इंटरफ़ेस जिससे आप कुछ भी और इंस्टॉल किए बिना सभी containers तक SSH या VNC से पहुँच सकते हैं |
स्वचालित डेमो (victim-cli बनाम victim-patched) स्टार्ट होते ही अपने आप चल जाता है। GUI में विज़ुअल डेमो के लिए Guacamole से मैन्युअल इंटरैक्शन की आवश्यकता होती है।
make up
make up पहली बार होने पर स्वचालित रूप से तीन काम करता है:
initdb.sh चलाता है)पहली बार build में कुछ मिनट लगते हैं (बेस इमेज डाउनलोड करता है, PoC का repo क्लोन करता है, पैकेज इंस्टॉल करता है)। अगली बार Docker कैश का उपयोग होता है और यह लगभग तुरंत हो जाता है।
समाप्त होने पर आपको output में Guacamole का URL दिखेगा। जब तक attacker तैयार नहीं होता और exploit serve नहीं कर रहा, विक्टिम containers शुरू नहीं होते (healthcheck)।
| पहुँच | उपयोगकर्ता | पासवर्ड |
|---|
जब लैब चल रहा हो, एक टर्मिनल में:
# Ver el crash en la víctima vulnerable
make logs-victim-cli
# Ver la respuesta controlada en la víctima parcheada
make logs-victim-patched
victim-cli में आपको यह दिखेगा:
[*] Ejecutando: dwebp /tmp/exploit.webp -o /tmp/salida.png
Decoding of exploit.webp failed.
Status: 3(BITSTREAM_ERROR)
*** glibc detected *** double free or corruption (!prev) ***
Aborted (core dumped)
[!] EXIT CODE: 134 (SIGABRT)
[!] CVE-2023-4863 CONFIRMADO
victim-patched में आपको यह दिखेगा:
[*] Ejecutando: dwebp /tmp/exploit.webp -o /tmp/salida.png
Decoding of exploit.webp failed.
Status: 3(BITSTREAM_ERROR)
[+] EXIT CODE: 1 — Error controlado
[+] CVE-2023-4863 MITIGADO
सबसे विज़ुअल डेमो XFCE डेस्कटॉप के टर्मिनल से dwebp का उपयोग करके victim-gui (असुरक्षित) की victim-gui-patched (पैच किया हुआ) से तुलना करके किया जाता है।
guacadmin / guacadminfirefox --no-sandbox http://attacker/index.html
exploit.webp को render करने का प्रयास करता है → crash (SIGABRT, प्रोसेस मृत)Mozilla अपने सभी संस्करणों का स्थायी सार्वजनिक संग्रह releases.mozilla.org पर रखता है। Google ने Chrome के पुराने संस्करणों के URL अपने CDN से हटा दिए, जिससे Chrome 116 को विश्वसनीय रूप से डाउनलोड करना असंभव हो गया। Firefox 110 भी उतना ही असुरक्षित है (दोनों आंतरिक रूप से libwebp एम्बेड करते हैं) और Mozilla संग्रह से इसका डाउनलोड स्थिर और पुनरुत्पादनीय है।
ssh root@localhost -p 2220 # attacker
ssh root@localhost -p 2221 # victim-cli
ssh root@localhost -p 2223 # victim-patched
ssh root@localhost -p 2222 # victim-gui
ssh root@localhost -p 2224 # victim-gui-patched
सीधा VNC: localhost:5900 (victim-gui) और localhost:5901 (victim-gui-patched)।
make logs # todos los logs en tiempo real
make status # estado de los containers
make shell-attacker # shell en el atacante
make shell-victim-cli
make shell-victim-gui
make shell-victim-gui-patched
make down # parar el lab
make clean # parar + borrar imágenes y redes
Chrome और libwebp: Chrome अपनी खुद की libwebp कॉपी बंडल करता है (सिस्टम वाली का उपयोग नहीं करता)। संस्करण ≥ 116.0.5845.187 में पैच शामिल है। चूँकि Google ने पुराने संस्करणों के URL हटा दिए हैं, Dockerfile वर्तमान स्थिर (पैच किए गए) संस्करण के fallback पर चला जाता है। dwebp के साथ crash डेमो समान रूप से मान्य और अधिक विश्वसनीय है।
पृथक नेटवर्क: निष्पादन के दौरान किसी भी container के पास इंटरनेट एक्सेस नहीं है। सारा ट्रैफ़िक निजी Docker नेटवर्क cve4863-lab-net के भीतर ही रहता है।
| Guacamole (web) | guacadmin | guacadmin |
| सभी containers के लिए SSH | root | toor |
| VNC victim-gui और victim-gui-patched | — | secret |