Arhivă etichetă prevenirea directory traversal

dehackeradvisor™

Directory Traversal

Directory Traversal este abilitatea de a trece de la un director la altul. Servere web seteaza de obicei un singur subdirector pentru a fi accesat public, prin browserele web, iar restul de directoare sa fie cu acces limitat.

Atacurile Directory Traversal

 

Daca sunteti autentificat pe server ca si utilizator, ati putea rula comenzi pentru a va deplasa in directoare pe server:

 

[username:/export/home/user/public_html/] cd ..
[username:/export/home/user/]

Atacurile de tip Directory Traversal (cunoscute si sub numele de atacuri „dot dot slash”) cauta sa exploateze aceasta comanda text, si sa gaseasca vulnerabilitati in implementarea programelor sau scripturilor pentru a accesa date sau fisiere in afara directorului web setat ca fiind public.

 

Cea mai veche modalitate de a executa acest atac, este direct din fereastra de tastare URL-uri a browser-ului web in sine. Daca ar fi sa navigam in bara de tastare URL-uri, am putea cere browser-ului sa afiseze un director mai mare.

www.mysite.com/index.html -> maps to /export/home/user/public_html/index.html


stim ca un fisier special, numit showSecrets.php este in directorul inaccesibil /export/home/user/secrets, asa ca vom incerca sa pacalim browser-ul sa afiseze fisierul prin accesarea urmatorului URL:

www.mysite.com/../secrets/showSecrets.php -> maps to /export/home/user/secrets/showSecrets.php

 

Daca serverul web nu este securizat impotriva acestui tip de atac, va afisa showsecrets.php!

 

O alta metoda mai putin cunoscuta, foloseste date de intrare pentru a cere site-ului dvs., sa returneze fisiere. Imaginati-va ca ati avea implementate unele functionalitati pentru a prelua fisiere dintr-un anumit director, si sa afiseaza o lista a acestor fisiere utilizatorilor. Cand un utilizator da click pe fisier, vei trimite anumite date catre o noua adresa URL, pentru a afisa fisierul.

URL:

www.mysite.com/getFile?fileName.txt

 

Codul PHP pentru a gasi si afisa fisierul:

 

<?php
$filename=$_GET["getFile"];	//get the filename from the URL
$fh = fopen("/export/home/user/public_html/files/".$filename, "R");	//open file for reading
echo fread($fh, filesize($filename));	//read and display contents
?>

 

Un atacator poate observa acest lucru, si sa modifice URL-ul pentru a solicita un fisier secret, similar cu ceea ce am vazut mai sus:

www.mysite.com/getFile?../../secrets/showSecrets.php

Site-ul afiseaza acum continutul fisierului secret atacatorului! Fisierul PHP se deschide si ar arata asa:

/export/home/user/public_html/files/../../secrets/showSecrets.php -> maps to /export/home/user/secrets/showSecrets.php

 

Cum afecteaza asta securitatea mea ?

 

Directory traversal poate fi foarte periculos, dat fiind faptul ca expune informatii private pe internet. Atacatorii pot folosi acest acaesta metoda pentru a descarca fisiere personale, sau pentru a ataca in diferite moduri sistemul dumneavoastra. In functie de modul in care fisierele sunt accesate folosind aceasta metoda, atacatorii pot fi in masura sa execute procese pe server, pot descarca fisiere cu parole sau pot a expune codul sursa pentru analize suplimentare, in vederea lansarii de noi atacuri.

 

Prevenirea Directory Traversal

 

Pentru atacuri bazate pe browser (punerea … / in URL-ul browser-ului), actualizarea software-ul serverului ar trebui sa corecteze vulnerabilitatea la acest atac. Recent serverele web, inclusiv IIS si Apache, ofera protectie impotriva acestui tip de atac Directory Traversal.

Atacul de tip Directory Traversal este mai greu de identificat si prevenit. Cea mai buna aparare impotriva lui este filtrarea datelor introduse de utilizator. Aceste date pot proveni din cookie-uri, din formulare de intrare (POST si GET), din URL-uri, precum si orice alte surse de date care pot fi influentate de catre un utilizator. Directory Traversal poate surveni in diverse forme. Asigurati-va ca verificati cel putin urmatoarele substitute, sau mai bine puneti intr-un whitelist toate intrarile posibile ale utilizatorilor.

  • ..
  • %2e%2e urmat de / or %2f
  • %c1%1c si similar Unicode strings care s-ar translata la  ../

De asemenea, puteti testa ca lungimea path-ului catre fisier trebuie sa fie de o lungime exacta. In exemplele date anterior, calea catre:

/export/home/user/public_html/files/

contine exact 36 de caractere. Orice altceva diferit de aceasta valoare, este invalid.

Resurse Suplimentare

Wikipedia Directory Traversal

 

Cauta Setarile necorespunzatoare pe serverul tau

HackerAdvisor.com  include scanari numeroase si diferite, care te vor ajuta sa-ti securizezi site-ul, inclusiv te vor ajuta sa desscoperi daca esti vulnerabil la Directory Traversal.