tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Note importante :

image

dl est une fonction PHP qui peut ĂȘtre utilisĂ©e pour charger des extensions PHP. Si la fonction n'est pas dĂ©sactivĂ©e, elle peut ĂȘtre exploitĂ©e pour contourner disable_functions et exĂ©cuter des commandes arbitraires.
Cependant, elle a certaines limitations strictes :

  • La fonction dl doit ĂȘtre prĂ©sente dans l'environnement et non dĂ©sactivĂ©e
  • L'extension PHP doit ĂȘtre compilĂ©e avec la mĂȘme version majeure (version API PHP) que celle utilisĂ©e par le serveur (vous pouvez voir cette information dans la sortie de phpinfo)
  • L'extension PHP doit ĂȘtre situĂ©e dans le rĂ©pertoire qui est dĂ©fini par la directive extension_dir (vous pouvez le voir dans la sortie de phpinfo). Il est trĂšs peu probable qu'un attaquant essayant d'exploiter le serveur ait un accĂšs en Ă©criture sur ce rĂ©pertoire, donc cette exigence empĂȘchera probablement l'exploitation de cette technique.

Si vous remplissez ces conditions, continuez à lire le post https://antichat.com/threads/70763/ pour apprendre à contourner disable_functions. Voici un résumé :

La fonction dl est utilisée pour charger des extensions PHP dynamiquement pendant l'exécution du script. Les extensions PHP, généralement écrites en C/C++, améliorent la fonctionnalité de PHP. L'attaquant, aprÚs avoir remarqué que la fonction dl n'est pas désactivée, décide de créer une extension PHP personnalisée pour exécuter des commandes systÚme.

Étapes suivies par l'attaquant :

  1. Identification de la version PHP :
  • L'attaquant dĂ©termine la version PHP Ă  l'aide d'un script (<?php echo 'PHP Version is '.PHP_VERSION; ?>).
  1. Acquisition du code source PHP :
  1. Configuration locale de PHP :
  • Extrait et installe la version PHP spĂ©cifique sur son systĂšme.
  1. Création de l'extension :

Remarques pour la compilation de l'extension personnalisée :

  1. ZEND_MODULE_API_NO :
  • Le ZEND_MODULE_API_NO dans bypass.c doit correspondre Ă  la version actuelle de la construction de l'extension Zend, rĂ©cupĂ©rable avec :
bash
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  1. Modification de PHP_FUNCTION :
  • Pour les versions rĂ©centes de PHP (5, 7, 8), PHP_FUNCTION(bypass_exec) peut nĂ©cessiter un ajustement. L'extrait de code fourni dĂ©taille cette modification.

Fichiers d'extension personnalisée :

  • bypass.c :
  • ImplĂ©mente la fonctionnalitĂ© principale de l'extension personnalisĂ©e.
  • php_bypass.h :
  • Fichier d'en-tĂȘte, dĂ©finissant les propriĂ©tĂ©s de l'extension.
  • config.m4 :
  • UtilisĂ© par phpize pour configurer l'environnement de construction de l'extension personnalisĂ©e.

Construction de l'extension :

  1. Commandes de compilation :
  • Utilise phpize, ./configure, et make pour compiler l'extension.
  • Le fichier bypass.so rĂ©sultant est ensuite situĂ© dans le sous-rĂ©pertoire des modules.
  1. Nettoyage :
  • ExĂ©cute make clean et phpize --clean aprĂšs la compilation.

Téléchargement et exécution sur l'hÎte victime :

  1. Compatibilité des versions :
  • S'assure que les versions API PHP correspondent entre les systĂšmes de l'attaquant et de la victime.
  1. Chargement de l'extension :
  • Utilise la fonction dl, contournant les restrictions en utilisant des chemins relatifs ou un script pour automatiser le processus.
  1. Exécution du script :
  • L'attaquant tĂ©lĂ©charge bypass.so et un script PHP sur le serveur de la victime.
  • Le script utilise la fonction dl_local pour charger dynamiquement bypass.so et appelle ensuite bypass_exec avec une commande passĂ©e via le paramĂštre de requĂȘte cmd.

Exécution de commandes :

  • L'attaquant peut maintenant exĂ©cuter des commandes en accĂ©dant Ă  : http://www.example.com/script.php?cmd=<command>

Ce guide dĂ©taillĂ© dĂ©crit le processus de crĂ©ation et de dĂ©ploiement d'une extension PHP pour exĂ©cuter des commandes systĂšme, exploitant la fonction dl, qui devrait idĂ©alement ĂȘtre dĂ©sactivĂ©e pour prĂ©venir de telles violations de sĂ©curitĂ©.

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks