Sim Master Posted July 22, 2012 Report Posted July 22, 2012 Frumos articol. Eu cred ca e putin cam neprofesional sa restrictionezi anumite tipuri de fisiere mai ales daca ai un serviciu de file-sharing. Parerea mea e ca cele mai bune metode de a te proteja este ori sa salvezi fisierele cu un nume random si salvarea numelui original intr-o baza de date, dar totusi e posibil sa se poata descarca direct daca se afla calea catre fisier. Sau si mai sigur ar fi sa le salvezi intr-un folder inafara folderului root al sitului + filtrarea numelui ca sa nu se ajunga ca in primul caz cu nume de genul "../../index.php", iar apoi downloadul se face printr-un script php. Quote
Xander Posted July 22, 2012 Report Posted July 22, 2012 exista cazuri cand trebuie sa lasi acces direct catre fisierele uploadate... un exemplu accelerare cu nginx reverse proxy Quote
Wubi Posted July 22, 2012 Report Posted July 22, 2012 ^ Ce zici tu ar veni cam asa nu? Client <-> Nginx:80 <--> Apache-HTTP:80Corecteaza`ma daca gresesc. Quote
Xander Posted July 22, 2012 Report Posted July 22, 2012 se poate face in 2 feluriclient <-> Nginx(ip:80) <-> apache(127.0.0.1:80)sauclient <-> Nginx(ip:80) <-> apache(ip:81/8080/etc...) Quote
BogdanNBV Posted July 22, 2012 Report Posted July 22, 2012 (edited) In ziua de astazi se verifica si extensia fisierului, nu doar tipul trimis de utilizator, cel putin asa este cel mai bine.Si metoda asta este de cand lumea, si se poate si mai simplu face asa ceva, cu Mozilla Firefox si pluginul Tamper Data si cu un script php redenumit in script.jpg, script.gif, script.orice.Procedura: Intri cu Firefox pe site-ul dorit, dai Cotrobaie, alegi fisierul script.gif, si inainte sa dai pe butonul ce trimite formularul te duci la Tools -> Tamer Data, apesi pe Start Tamper sus in dreapta, te muti inapoi in fereastra de Firefox, apesi pe butonul ce trimite formularul, Firefox va fi oprit iar tu vei fi intrebat daca datele trimise sa treaca prin plugin, sau sa continue, fereastra care te va intreba va avea parca 3 butoane si un checkbox, lasi electat checkbox-ul acela cu Continue Tampering, si apesi Stamper, se va deschide o alta fereastra unde vei avea header-ul si datele trimise, te uiti pe acolo, cauti script.gif si cand gasesti inlocuiesti din .gif in .php, dai OK, dai Submit la celelalte intrebari daca sa treaca prin plugin datele sau nu, si pagina se va incarca, iar fisierul va fi urcat cu extensia .php, Daca nu ati inteles cereti si am sa va fac un tutorial cu poze :3 Edited April 25, 2013 by BogdanNBV 1 Quote
shaggi. Posted July 22, 2012 Report Posted July 22, 2012 sau te poti folosi de .htaccess si sa faci in asa fel ca nimic sa nu interpreteze, adica toate sa fie de download (application/octet-stream) eu zic ca ar merge... Quote
Xander Posted July 23, 2012 Report Posted July 23, 2012 @wubi blochezi folderu uploads din htaccess in totalitate si se ocupa nginx de servirea fisierelor statice ( adica pe scurt: da ) Quote
cosmon Posted July 27, 2012 Report Posted July 27, 2012 Daca nu ati inteles cereti si am sa va fac un tutorial cu poze :3Ar fi util un tutorial Quote
dumblegate Posted July 27, 2012 Report Posted July 27, 2012 Acum atacatorul poate intra in: uploads/wubi.jpgCe idiot ar configura Apache sa interpreteze .jpg ca .php? Quote
Wubi Posted July 27, 2012 Report Posted July 27, 2012 Ce idiot ar configura Apache sa interpreteze .jpg ca .php?Codul PHP(Shell-ul) este inserat in comment-ul imaginii. Deoarece daca respectivul cod PHP ar fi inserat direct in imagine, headerul ar fi corupt, lucru ce va face ca uploadarea sa esueze. Punand codul in comment-ul imaginii va face ca interpretatorul PHP sa vada acel executabil PHP. Quote
dumblegate Posted July 27, 2012 Report Posted July 27, 2012 (edited) eu am inteles care-i treaba, dar interpretorul va executa codul din imagine doar daca-i instruit in sensul asta. ce idiot ar da eval() la continutul unei imagini?PS:if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg')un fisier nu poate fi si GIF si JPEG in acelasi timp. Edited July 27, 2012 by dumblegate Quote
Sim Master Posted July 27, 2012 Author Report Posted July 27, 2012 PS:if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg')un fisier nu poate fi si GIF si JPEG in acelasi timp.Conditia e pusa ca fisierul sa nu fie nici jpeg nici gif. Quote
DarkyAngel Posted July 27, 2012 Report Posted July 27, 2012 eu am inteles care-i treaba, dar interpretorul va executa codul din imagine doar daca-i instruit in sensul asta. ce idiot ar da eval() la continutul unei imagini?PS:if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg')un fisier nu poate fi si GIF si JPEG in acelasi timp.Mai pe scurt, nu stii sa citesti..: Atacatorul poate executa cu succes un shell php daca a incarcat cu succes un fisier numit ".htaccess", ce contine o linie de cod similara cu asta:Code: AddType application/x-httpd-php .jpgLinia de mai sus instruieste web serverul Apache sa execute imaginile jpg in cazul in care acestea au fost scripturi PHP. Atacatorul poate acum sa incarce un fisier cu o extensie jpg, ce contine cod PHP. Quote