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.
 
Nota importante:

dl é uma função PHP que pode ser usada para carregar extensões PHP. Se a função não estiver desativada, pode ser abusada para contornar disable_functions e executar comandos arbitrários.
No entanto, possui algumas limitações rigorosas:
- A função 
dldeve estar presente no ambiente e não desativada - A extensão PHP deve ser compilada com a mesma versão principal (versão da API PHP) que o servidor está usando (você pode ver essa informação na saída do phpinfo)
 - A extensão PHP deve estar localizada no diretório que é definido pela diretiva 
extension_dir(você pode vê-la na saída do phpinfo). É muito improvável que um atacante tentando abusar do servidor tenha acesso de gravação a esse diretório, então esse requisito provavelmente impedirá que você abuse dessa técnica). 
Se você atender a esses requisitos, continue lendo o post https://antichat.com/threads/70763/ para aprender como contornar disable_functions. Aqui está um resumo:
A função dl é usada para carregar extensões PHP dinamicamente durante a execução do script. Extensões PHP, tipicamente escritas em C/C++, aprimoram a funcionalidade do PHP. O atacante, ao notar que a função dl não está desativada, decide criar uma extensão PHP personalizada para executar comandos do sistema.
Passos Tomados pelo Atacante:
- Identificação da Versão PHP:
 
- O atacante determina a versão PHP usando um script (
<?php echo 'PHP Version is '.PHP_VERSION; ?>). 
- Aquisição do Código Fonte PHP:
 
- Baixa o código fonte PHP do site oficial ou do arquivo se a versão for mais antiga.
 
- Configuração Local do PHP:
 
- Extrai e instala a versão específica do PHP em seu sistema.
 
- Criação da Extensão:
 
- Estuda como criar extensões PHP e inspeciona o código fonte PHP.
 - Foca em duplicar a funcionalidade da função exec localizada em 
ext/standard/exec.c. 
Notas para Compilar a Extensão Personalizada:
- ZEND_MODULE_API_NO:
 
- O 
ZEND_MODULE_API_NOembypass.cdeve corresponder à versão atual da Zend Extension Build, recuperável com: 
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- Modificação de PHP_FUNCTION:
 
- Para versões recentes do PHP (5, 7, 8), 
PHP_FUNCTION(bypass_exec)pode precisar de ajuste. O trecho de código fornecido detalha essa modificação. 
Arquivos da Extensão Personalizada:
- bypass.c:
 - Implementa a funcionalidade principal da extensão personalizada.
 - php_bypass.h:
 - Arquivo de cabeçalho, definindo propriedades da extensão.
 - config.m4:
 - Usado pelo 
phpizepara configurar o ambiente de construção para a extensão personalizada. 
Construindo a Extensão:
- Comandos de Compilação:
 
- Usa 
phpize,./configureemakepara compilar a extensão. - O resultado 
bypass.soé então localizado no subdiretório de módulos. 
- Limpeza:
 
- Executa 
make cleanephpize --cleanapós a compilação. 
Carregando e Executando no Host da Vítima:
- Compatibilidade de Versão:
 
- Garante que as versões da API PHP correspondam entre os sistemas do atacante e da vítima.
 
- Carregamento da Extensão:
 
- Utiliza a função 
dl, contornando restrições usando caminhos relativos ou um script para automatizar o processo. 
- Execução do Script:
 
- O atacante faz upload de 
bypass.soe um script PHP para o servidor da vítima. - O script usa a função 
dl_localpara carregar dinamicamentebypass.soe então chamabypass_execcom um comando passado via o parâmetro de consultacmd. 
Execução de Comandos:
- O atacante agora pode executar comandos acessando: 
http://www.example.com/script.php?cmd=<command> 
Este detalhamento descreve o processo de criação e implantação de uma extensão PHP para executar comandos do sistema, explorando a função dl, que idealmente deve ser desativada para prevenir tais brechas de segurança.
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