SSTI Python Code Editor - Pentesting Web

Exploitation SSTI – Python Code Editor

Un éditeur de code Python est découvert sur le port 5000. Lors de tentatives d’injection classiques (import os, exec, etc.), des erreurs sont générées.

Pour contourner les restrictions, on utilise une boucle pour identifier une classe permettant l'accès aux fonctions intégrées (__builtins__) :

Cette boucle Python tente d'exploiter une injection de template côté serveur (SSTI) en cherchant parmi les sous-classes des objets de base de Python (object) une qui donne accès à l’environnement global (__globals__) de sa méthode __init__. À chaque itération, elle tente de récupérer le dictionnaire des fonctions intégrées (__builtins__) en reconstruisant son nom pour éviter d’être détecté facilement. Si l’objet obtenu contient la fonction eval (très dangereuse car elle permet d’exécuter du code arbitraire), alors l’indice de la classe est affiché. Ce code est souvent utilisé pour localiser une classe qui permet d’accéder à des fonctions critiques comme eval, exec, open, etc., dans le but d’en abuser.

Lecture de /etc/passwd

Une fois l’objet contenant eval identifié, nous exécutons :

Cela révèle deux utilisateurs : martin et production.

Reverse Shell

Mise en écoute sur le port 443 :

Script de reverse shell :

Création d’un fichier index.html contenant :

Lancement d’un serveur web :

Injection du payload :

Mis à jour

Ce contenu vous a-t-il été utile ?