W Froxlor przed wersją 2.3.6 administrator z uprawnieniem `change_serversettings` może wstrzyknąć dowolny kod PHP do pliku konfiguracyjnego poprzez parametr `privileged_user` podczas dodawania lub edycji serwera MySQL. Podatność jest krytyczna, ponieważ wstrzyknięty kod wykonywany jest przy każdym kolejnym żądaniu HTTP do serwera.
▸ Pokaż oryginał (EN)
Froxlor is open source server administration software. Prior to version 2.3.6, `PhpHelper::parseArrayToString()` writes string values into single-quoted PHP string literals without escaping single quotes. When an admin with `change_serversettings` permission adds or updates a MySQL server via the API, the `privileged_user` parameter (which has no input validation) is written unescaped into `lib/userdata.inc.php`. Since this file is `require`d on every request via `Database::getDB()`, an attacker can inject arbitrary PHP code that executes as the web server user on every subsequent page load. Version 2.3.6 contains a patch.
Funkcja `PhpHelper::parseArrayToString()` zapisuje wartości tekstowe do jednokwotowych literałów PHP bez ucieczki znaków specjalnych (brak escapowania apostrofów). Parametr `privileged_user` przekazywany przez API nie podlega żadnej walidacji danych wejściowych, a jego wartość trafia bezpośrednio do pliku `lib/userdata.inc.php`. Plik ten jest dołączany (instrukcją `require`) przy każdym żądaniu przez metodę `Database::getDB()`, co powoduje, że wstrzyknięty kod PHP jest wykonywany automatycznie jako użytkownik procesu serwera WWW przy każdym kolejnym załadowaniu strony.
Atakujący może wykonać dowolny kod PHP z uprawnieniami procesu serwera WWW (RCE), co może prowadzić do pełnego przejęcia kontroli nad serwerem, kradzieży danych, modyfikacji konfiguracji lub instalacji backdoora.
Należy niezwłocznie zaktualizować Froxlor do wersji 2.3.6, która zawiera patch eliminujący podatność. Patch dostępny jest w repozytorium GitHub (commit 3589ddf93ab59eb2a8971f0f56cbf6266d03c4ae) oraz w oficjalnym wydaniu 2.3.6.
Froxlor we wszystkich wersjach przed 2.3.6. Wymagane jest konto administratora z uprawnieniem `change_serversettings`.
Mimo krytycznego wyniku CVSS (9.1), do wykorzystania podatności wymagane jest posiadanie konta administratora z uprawnieniem `change_serversettings`, co ogranicza powierzchnię ataku. Podatność nie figuruje w CISA KEV.
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:HFroxlor
APPFroxlor< 2.3.6
Powiązane podatności
Froxlor: RCE przez path traversal w parametrze def_language
RCE z uprawnieniami root w Froxlor przez błąd walidacji pól e-mail
Improper Link Resolution Before File Access in GitHub repository froxlor/froxlor prior to 2.1.0.
Improper Restriction of Excessive Authentication Attempts in GitHub repository froxlor/froxlor prior to 2.0.20...
Authentication Bypass by Primary Weakness in GitHub repository froxlor/froxlor prior to 2.0.13.