Aprenda e pratique Hacking AWS:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Aprenda e pratique Hacking GCP: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
**Verifique todos os detalhes desta técnica em [https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)**
Quando um mecanismo **PHP** recebe uma **requisição POST** contendo arquivos formatados de acordo com o RFC 1867, ele gera arquivos temporários para armazenar os dados enviados. Esses arquivos são cruciais para o manuseio de uploads de arquivos em scripts PHP. A função `move_uploaded_file` deve ser usada para realocar esses arquivos temporários para um local desejado se o armazenamento persistente além da execução do script for necessário. Após a execução, o PHP exclui automaticamente quaisquer arquivos temporários restantes.
**Alerta de Segurança: Atacantes, cientes da localização dos arquivos temporários, podem explorar uma vulnerabilidade de Inclusão de Arquivo Local para executar código acessando o arquivo durante o upload.**
{% endhint %}
O desafio para o acesso não autorizado reside em prever o nome do arquivo temporário, que é intencionalmente randomizado.
#### Exploração em Sistemas Windows
No Windows, o PHP gera nomes de arquivos temporários usando a função `GetTempFileName`, resultando em um padrão como `<path>\<pre><uuuu>.TMP`. Notavelmente:
- O caminho padrão é tipicamente `C:\Windows\Temp`.
- O `<uuuu>` representa um valor hexadecimal único. Crucialmente, devido à limitação da função, apenas os 16 bits inferiores são usados, permitindo um máximo de 65.535 nomes únicos com caminho e prefixo constantes, tornando a força bruta viável.
Além disso, o processo de exploração é simplificado em sistemas Windows. Uma peculiaridade na função `FindFirstFile` permite o uso de curingas em caminhos de Inclusão de Arquivo Local (LFI). Isso possibilita a criação de um caminho de inclusão como o seguinte para localizar o arquivo temporário:
Em certas situações, uma máscara mais específica (como `php1<<` ou `phpA<<`) pode ser necessária. Pode-se tentar sistematicamente essas máscaras para descobrir o arquivo temporário enviado.
Para sistemas GNU/Linux, a aleatoriedade na nomeação de arquivos temporários é robusta, tornando os nomes nem previsíveis nem suscetíveis a ataques de força bruta. Mais detalhes podem ser encontrados na documentação referenciada.
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.