<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
Se sei interessato alla **carriera di hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
1. Se vengono applicati, **controllare** le **estensioni precedenti**. Testarle anche utilizzando alcune **lettere maiuscole**: _pHp, .pHP5, .PhAr ..._
2._Controllare **aggiungendo un'estensione valida prima** dell'estensione di esecuzione (utilizzare anche le estensioni precedenti):_
3. Provare ad aggiungere **caratteri speciali alla fine**. Potresti utilizzare Burp per **forzare** tutti i caratteri **ascii** e **Unicode**. (_Nota che puoi anche provare a utilizzare le **estensioni precedentemente** menzionate_)
4. Provare a eludere le protezioni **ingannando il parser delle estensioni** lato server con tecniche come **raddoppiare** l'estensione o **aggiungere dati spazzatura** (byte **null**) tra le estensioni. _Puoi anche utilizzare le **estensioni precedenti** per preparare un payload migliore._
6. Provare a mettere l'estensione **exec prima dell'estensione valida** e sperare che il server sia configurato in modo errato. (utile per sfruttare le errate configurazioni di Apache dove qualsiasi cosa con estensione\*\* _**.php**_**, ma** non necessariamente terminante in .php\*\* eseguirà il codice):
7. Utilizzare lo **stream di dati alternativi NTFS (ADS)** in **Windows**. In questo caso, verrà inserito un carattere due punti ":" dopo un'estensione vietata e prima di una consentita. Di conseguenza, verrà creato un **file vuoto con l'estensione vietata** sul server (ad es. "file.asax:.jpg"). Questo file potrebbe essere modificato successivamente utilizzando altre tecniche come l'utilizzo del suo nome breve. Il modello “**::$data**” può anche essere utilizzato per creare file non vuoti. Pertanto, aggiungere un punto dopo questo modello potrebbe essere utile per eludere ulteriori restrizioni (ad es. “file.asp::$data.”)
8. Provare a superare i limiti del nome del file. L'estensione valida viene tagliata. E il PHP dannoso viene lasciato. AAA<--SNIP-->AAA.php
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # meno 4 qui e aggiungendo .png
# Carica il file e controlla la risposta quante caratteri permette. Diciamo 236
* Bypassa i controlli sul **Content-Type** impostando il **valore** dell'**header Content-Type** su: _image/png_, _text/plain_, _application/octet-stream_
1. Wordlist per Content-Type: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
* Bypassa il controllo del **magic number** aggiungendo all'inizio del file i **byte di un'immagine reale** (confondere il comando _file_). Oppure introduci il codice shell all'interno dei **metadati**:\
* Se viene aggiunta **compressione alla tua immagine**, ad esempio utilizzando alcune librerie PHP standard come [PHP-GD](https://www.php.net/manual/fr/book.image.php), le tecniche precedenti non saranno utili. Tuttavia, potresti utilizzare il **chunk PLTE** [**tecnica definita qui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) per inserire del testo che **sopravviverà alla compressione**.
* La pagina web potrebbe anche **ridimensionare** l'**immagine**, utilizzando ad esempio le funzioni PHP-GD `imagecopyresized` o `imagecopyresampled`. Tuttavia, potresti utilizzare il **chunk IDAT** [**tecnica definita qui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) per inserire del testo che **sopravviverà alla compressione**.
* Un'altra tecnica per creare un payload che **sopravvive a un ridimensionamento dell'immagine**, utilizzando la funzione PHP-GD `thumbnailImage`. Tuttavia, potresti utilizzare il **chunk tEXt** [**tecnica definita qui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) per inserire del testo che **sopravviverà alla compressione**.
3. Carica un file con **“.”, “..”, o “…” come nome**. Ad esempio, in Apache in **Windows**, se l'applicazione salva i file caricati nella directory “/www/uploads/”, il nome del file “.” creerà un file chiamato “uploads” nella directory “/www/”.
6. Carica un file in **Windows** utilizzando **nomi riservati** (**proibiti**) come CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT9.
* Prova anche a **caricare un eseguibile** (.exe) o un **.html** (meno sospetto) che **eseguirà del codice** quando aperto accidentalmente dalla vittima.
Se stai cercando di caricare file su un **server PHP**, [dai un'occhiata al trucco del file **.htaccess per eseguire codice**](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Se stai cercando di caricare file su un **server ASP**, [dai un'occhiata al trucco del file **.config per eseguire codice**](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
I file `.phar` sono come i file `.jar` per Java, ma per PHP, e possono essere **usati come un file PHP** (eseguendolo con PHP o includendolo all'interno di uno script...).
L'estensione `.inc` viene talvolta utilizzata per i file PHP che vengono utilizzati solo per **importare file**, quindi, a un certo punto, qualcuno potrebbe aver permesso **l'esecuzione di questa estensione**.
Se puoi caricare un file XML su un server Jetty, puoi ottenere [RCE perché i **nuovi file \*.xml e \*.war vengono elaborati automaticamente**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Quindi, come indicato nell'immagine seguente, carica il file XML in `$JETTY_BASE/webapps/` e attendi la shell!
Per una dettagliata esplorazione di questa vulnerabilità, controlla la ricerca originale: [Sfruttamento di uWSGI RCE](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Le vulnerabilità di Esecuzione di Comandi Remoti (RCE) possono essere sfruttate nei server uWSGI se si ha la capacità di modificare il file di configurazione `.ini`. I file di configurazione uWSGI fanno leva su una sintassi specifica per incorporare variabili "magiche", segnaposti e operatori. In particolare, l'operatore '@', utilizzato come `@(filename)`, è progettato per includere il contenuto di un file. Tra i vari schemi supportati in uWSGI, lo schema "exec" è particolarmente potente, consentendo la lettura dei dati dall'output standard di un processo. Questa funzionalità può essere manipolata per scopi malintenzionati come l'Esecuzione di Comandi Remoti o la Scrittura/Lettura Arbitraria di File quando un file di configurazione `.ini` viene elaborato.
L'esecuzione del payload avviene durante l'analisi del file di configurazione. Per attivare e analizzare la configurazione, il processo uWSGI deve essere riavviato (potenzialmente dopo un arresto anomalo o a causa di un attacco di negazione del servizio) o il file deve essere impostato per il ricaricamento automatico. La funzionalità di ricaricamento automatico, se abilitata, ricarica il file a intervalli specificati alla rilevazione di modifiche.
È cruciale comprendere la natura permissiva dell'analisi del file di configurazione di uWSGI. In particolare, il payload discusso può essere inserito in un file binario (come un'immagine o un PDF), ampliando ulteriormente il campo delle potenziali vulnerabilità.
In alcune occasioni potresti scoprire che un server sta utilizzando **`wget`** per **scaricare file** e puoi **indicare** l'**URL**. In questi casi, il codice potrebbe verificare che l'estensione dei file scaricati sia all'interno di una whitelist per garantire che vengano scaricati solo file consentiti. Tuttavia, **questo controllo può essere eluso.**\
La **lunghezza massima** di un **nome file** in **Linux** è **255**, tuttavia, **wget** tronca i nomi file a **236** caratteri. Puoi **scaricare un file chiamato "A"\*232+".php"+".gif"**, questo nome file **eluderà** il **controllo** (come in questo esempio **".gif"** è un'estensione **valida**) ma `wget` rinominerà il file in **"A"\*232+".php"**.
New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.
Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’
Nota che **un'altra opzione** a cui potresti pensare per eludere questo controllo è far sì che il **server HTTP reindirizzi a un file diverso**, in modo che l'URL iniziale eluda il controllo e wget scaricherà il file reindirizzato con il nuovo nome. Questo **non funzionerà****a meno che** wget venga utilizzato con il **parametro**`--trust-server-names` perché **wget scaricherà la pagina reindirizzata con il nome del file indicato nell'URL originale**.
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) è un potente strumento progettato per assistere Pentesters e Bug Hunters nel testare i meccanismi di caricamento file. Sfrutta varie tecniche di bug bounty per semplificare il processo di identificazione e sfruttamento delle vulnerabilità, garantendo valutazioni approfondite delle applicazioni web.
* Imposta il **nome file** su `; sleep 10;` per testare alcune iniezioni di comando (più [trucchi per iniezioni di comando qui](../command-injection.md))
* Se puoi **indicare al server web di acquisire un'immagine da un URL** potresti provare a sfruttare un [SSRF](../ssrf-server-side-request-forgery/). Se questa **immagine** verrà **salvata** in un sito **pubblico**, potresti anche indicare un URL da [https://iplogger.org/invisible/](https://iplogger.org/invisible/) e **rubare informazioni da ogni visitatore**.
* PDF appositamente creati per XSS: La [pagina seguente mostra come **iniettare dati PDF per ottenere l'esecuzione di JS**](../xss-cross-site-scripting/pdf-injection.md). Se puoi caricare PDF, potresti preparare alcuni PDF che eseguiranno JS arbitrario seguendo le indicazioni fornite.
* Carica il \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) contenuto per verificare se il server dispone di un **antivirus**
* Verifica se c'è un **limite di dimensione** per il caricamento dei file
Ecco una lista dei primi 10 obiettivi che puoi raggiungere tramite il caricamento (da [qui](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
Fai riferimento a [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](https://en.wikipedia.org/wiki/List\_of\_file\_signatures) per altri tipi di file.
La creazione inaspettata di file in directory durante la decompressione è un problema significativo. Nonostante le ipotesi iniziali che questa configurazione potesse proteggere dall'esecuzione di comandi a livello di sistema operativo tramite caricamenti di file dannosi, il supporto alla compressione gerarchica e le capacità di attraversamento delle directory del formato di archivio ZIP possono essere sfruttati. Ciò consente agli attaccanti di eludere le restrizioni ed uscire dalle directory di caricamento sicure manipolando la funzionalità di decompressione dell'applicazione presa di mira.
Un exploit automatizzato per creare tali file è disponibile su [**evilarc su GitHub**](https://github.com/ptoomey3/evilarc). L'utilità può essere utilizzata come segue:
Inoltre, il **trucco del symlink con evilarc** è un'opzione. Se l'obiettivo è quello di mirare a un file come `/flag.txt`, dovrebbe essere creato un symlink a tale file nel tuo sistema. Questo assicura che evilarc non incontri errori durante la sua operazione.
Per ulteriori dettagli **controlla il post originale su**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
3.**Modifica con un Editor Esadecimale o vi**: I nomi dei file all'interno dello zip vengono modificati utilizzando vi o un editor esadecimale, cambiando "xxA" in "../" per attraversare le directory.
Carica questo contenuto con un'estensione di immagine per sfruttare la vulnerabilità **(ImageMagick, 7.0.1-1)** (dall'[exploit](https://www.exploit-db.com/exploits/39767))
L'incorporazione di una shell PHP nel chunk IDAT di un file PNG può bypassare efficacemente determinate operazioni di elaborazione delle immagini. Le funzioni `imagecopyresized` e `imagecopyresampled` di PHP-GD sono particolarmente rilevanti in questo contesto, poiché sono comunemente utilizzate per ridimensionare e campionare le immagini, rispettivamente. La capacità della shell PHP incorporata di rimanere indenne da queste operazioni è un vantaggio significativo per determinati casi d'uso.
Una dettagliata esplorazione di questa tecnica, inclusa la sua metodologia e le potenziali applicazioni, è fornita nell'articolo seguente: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Questa risorsa offre una comprensione esaustiva del processo e delle sue implicazioni.
Ulteriori informazioni su: [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/)
I file poliglotti fungono da strumento unico nella cybersecurity, agendo come camaleonti che possono esistere validamente contemporaneamente in diversi formati di file. Un esempio intrigante è un [GIFAR](https://en.wikipedia.org/wiki/Gifar), un ibrido che funziona sia come GIF che come archivio RAR. Tali file non si limitano a questa combinazione; sono anche possibili combinazioni come GIF e JS o PPT e JS.
L'utilità principale dei file poliglotti risiede nella loro capacità di aggirare le misure di sicurezza che controllano i file in base al tipo. La pratica comune in varie applicazioni prevede di permettere solo determinati tipi di file per il caricamento, come JPEG, GIF o DOC, per ridurre il rischio rappresentato dai formati potenzialmente dannosi (ad esempio, file JS, PHP o Phar). Tuttavia, un poliglotta, conformandosi ai criteri strutturali di più tipi di file, può aggirare stealthily queste restrizioni.
Nonostante la loro adattabilità, i poliglotti incontrano delle limitazioni. Ad esempio, mentre un poliglotta potrebbe incarnare contemporaneamente un file PHAR (PHp ARchive) e un JPEG, il successo del suo caricamento potrebbe dipendere dalle politiche sull'estensione dei file della piattaforma. Se il sistema è rigoroso riguardo alle estensioni consentite, la mera dualità strutturale di un poliglotta potrebbe non essere sufficiente a garantirne il caricamento.
Ulteriori informazioni su: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
Se sei interessato a una **carriera nel hacking** e a hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**