W aplikacji Innoshop w wersji do 0.4.1 uwierzytelniony atakujący może uzyskać zdalne wykonanie kodu na serwerze poprzez manipulację funkcją menedżera plików w panelu administracyjnym. Podatność jest krytyczna, ponieważ pozwala na pełne przejęcie kontroli nad serwerem przez każdego zalogowanego administratora lub atakującego z dostępem do konta administracyjnego.
▸ Pokaż oryginał (EN)
In Innoshop through 0.4.1, an authenticated attacker could exploit the File Manager functions in the admin panel to achieve code execution on the server, by uploading a crafted file and then renaming it to have a .php extension by using the Rename Function. This bypasses the initial check that uploaded files are image files. The application relies on frontend checks to restrict the administrator from changing the extension of uploaded files to .php. This restriction is easily bypassed with any proxy tool (e.g., BurpSuite). Once the attacker renames the file, and gives it the .php extension, a GET request can be used to trigger the execution of code on the server.
Aplikacja Innoshop implementuje weryfikację typów plików wyłącznie po stronie klienta (frontend), co sprawia, że ograniczenie rozszerzenia przesyłanych plików do obrazów jest łatwe do ominięcia. Atakujący przesyła dowolny plik (np. webshell PHP) podszywający się pod plik graficzny, a następnie za pomocą funkcji Rename w menedżerze plików zmienia jego rozszerzenie na .php — blokada po stronie frontendu jest neutralizowana przez przechwycenie i modyfikację żądania HTTP za pomocą narzędzia proxy (np. BurpSuite). Po zmianie rozszerzenia wystarczy wysłać żądanie GET pod adres URL przesłanego pliku, aby serwer wykonał zawarty w nim kod PHP.
Atakujący uzyskuje zdalne wykonanie dowolnego kodu na serwerze (RCE), co może prowadzić do pełnego przejęcia serwera, kradzieży danych, naruszenia poufności i integralności systemu oraz potencjalnie do dalszego lateral movement w infrastrukturze.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dodatkowo zaleca się przeniesienie walidacji rozszerzeń i typów plików wyłącznie na stronę serwera (backend), zablokowanie wykonywania skryptów PHP w katalogach przeznaczonych na pliki przesyłane przez użytkowników oraz ograniczenie dostępu do panelu administracyjnego na poziomie sieci i uwierzytelnienia.
Innoshop w wersjach do 0.4.1 włącznie
Szczegółowy opis techniki ataku oraz odkrycia podatności opublikowano na platformie Medium przez badacza posługującego się pseudonimem 'The_Hiker' (referencja: https://medium.com/@The_Hiker/how-i-found-multiple-cves-in-innoshop-0-4-1-12c8f84ad87f). CWE-420 oznacza brak ochrony kanału alternatywnego — w tym przypadku brak serwerowej walidacji rozszerzeń plików.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L