tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: 
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
Verifique os detalhes completos desta técnica em https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
Uploads de Arquivos PHP
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.
note
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.
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 prefixo é geralmente "php".
 - 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 o ataque de 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:
http://site/vuln.php?inc=c:\windows\temp\php<<
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.
Exploração em Sistemas GNU/Linux
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.
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: 
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
HackTricks