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-2023-25136-PoC — Environnement de reproduction minimal basé sur Docker pour la vulnérabilité de double libération avant authentification d'OpenSSH 9.1p1 (CVE-2023-25136), démontrant une corruption mémoire et un déni de service via un client Python de preuve de concept. | Kitploit
Outils/GitHubGitHub/lane0218/cve-2023-25136-poc
Analyse des VulnérabilitésExploitationTests d'IntrusionApprentissage et ÉducationExploitation de Binaires
GitHublane0218/cve-2023-25136-poc

CVE-2023-25136-PoC

Environnement de reproduction minimal basé sur Docker pour la vulnérabilité de double libération avant authentification d'OpenSSH 9.1p1 (CVE-2023-25136), démontrant une corruption mémoire et un déni de service via un client Python de preuve de concept.

Voir le dépôt
il y a 9 moisPas 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

Reproduction de la vulnérabilité CVE-2023-25136

Ce projet fournit un environnement d'expérimentation local minimaliste pour reproduire la vulnérabilité de corruption mémoire double free en pré-authentification dans OpenSSH 9.1p1 (CVE-2023-25136), et observer l'effet de crash du processus serveur (DoS).

Note : Les analyses officielles et dominantes considèrent que cette vulnérabilité est "difficile à exploiter concrètement pour une exécution de code à distance" dans la configuration de sécurité par défaut. Cet environnement sert principalement à démontrer une erreur mémoire et un effet de déni de service.

Description de l'environnement

  • Cible (Target) :

    • Fonctionne dans un conteneur Docker avec OpenSSH 9.1p1
    • Un utilisateur de séparation de privilèges sshd est configuré
    • Pour faciliter l'observation du crash double free, la construction utilise --with-sandbox=no pour désactiver le bac à sable seccomp
    • Le conteneur écoute sur le port 22 interne, mappé sur le port 2222 de l'hôte (WSL)
  • Attaquant (Attacker) :

  • Se trouve sur la même machine hôte / WSL
  • Utilise Python3 + paramiko pour exécuter le PoC, construisant un identifiant client SSH spécifique et initiant une poignée de main pré-authentification

Structure du répertoire :

  • Dockerfile : Image pour construire l'environnement vulnérable OpenSSH 9.1p1
  • poc.py : Client PoC minimal pour déclencher le double free en phase de pré-authentification

Prérequis

Avant d'effectuer les opérations suivantes dans ce répertoire, assurez-vous :

  • Docker est installé (sous WSL2, il est recommandé d'utiliser Docker Desktop ou d'installer Docker directement dans WSL)
  • Python 3 et pip sont installés

1. Construction de la cible (OpenSSH 9.1p1 dans Docker)

  1. Construire l'image

Exécutez dans ce répertoire :

root@kitploit:~
docker build -t sshd-9.1p1-vuln .
  1. Démarrer le conteneur
root@kitploit:~
docker run --rm -d --name sshd-vuln -p 2222:22 sshd-9.1p1-vuln

Explication :

  • --rm : Supprime automatiquement le conteneur après sa sortie
  • --name sshd-vuln : Nom du conteneur
  • -p 2222:22 : Mappe le port 22 interne du conteneur sur le port 2222 de l'hôte
  1. Vérifier l'état de sshd
root@kitploit:~
docker ps

Vous devriez voir quelque chose comme :

root@kitploit:~
CONTAINER ID   IMAGE              COMMAND               STATUS          PORTS
xxxxxx         sshd-9.1p1-vuln    "/usr/sbin/sshd -D…"  Up ...          0.0.0.0:2222->22/tcp

2. Utilisation du PoC de l'attaquant

1. Installer les dépendances PoC

Exécutez dans ce répertoire :

root@kitploit:~
pip install paramiko

2. Description du script PoC (poc.py)

poc.py utilise paramiko.Transport pour établir activement une connexion avec le serveur SSH cible, contrefait l'identifiant client en phase de pré-authentification et tente de déclencher le double free.

Caractéristiques clés :

  • Cible par défaut : 127.0.0.1:2222 (c'est-à-dire le conteneur Docker local)
  • Identifiant client par défaut : SSH-2.0-PuTTY_Release_0.64
  • Fournit des paramètres simples en ligne de commande :
    • -t/--target : IP cible (par défaut 127.0.0.1)
    • -p/--port : Port cible (par défaut 2222)
    • -c/--client-id : Identifiant SSH client contrefait
    • --timeout : Délai d'attente (secondes)
    • -v/--verbose : Affiche les informations d'erreur détaillées

3. Exécuter le PoC

Assurez-vous que le conteneur sshd-vuln est démarré, puis exécutez dans ce répertoire :

root@kitploit:~
python3 poc.py

Ou spécifiez explicitement les paramètres :

root@kitploit:~
python3 poc.py -t 127.0.0.1 -p 2222 -v

Exemple de sortie attendue du client :

root@kitploit:~
==============================================
   CVE-2023-25136 OpenSSH Pre-Auth Double Free
              Minimal PoC Client
==============================================
[2024-xx-xx xx:xx:xx] Target: 127.0.0.1:2222, ClientID: SSH-2.0-PuTTY_Release_0.64
[+] Sending crafted pre-auth handshake...
[-] Authentication failed or connection closed early.
    请在服务端 sshd 日志中查看是否出现 'free(): double free detected' 等信息,以确认是否触发 CVE-2023-25136。

Explication :

  • Du côté client, l'erreur Authentication failed ou connection closed est attendue, car le sous-processus de pré-authentification du serveur peut planter ou fermer activement la connexion pendant le traitement.

3. Résultats attendus et méthode de vérification

1. Logs du serveur (conteneur)

Après avoir exécuté le PoC, consultez les logs du conteneur sur l'hôte :

root@kitploit:~
docker logs sshd-vuln

Vous devriez voir une sortie similaire :

root@kitploit:~
Server listening on 0.0.0.0 port 22.
Server listening on :: port 22.
Invalid user  from 172.17.0.1 port xxxxx
free(): double free detected in tcache 2

Où :

  • Invalid user : En raison de l'utilisation d'un nom d'utilisateur vide par le PoC, OpenSSH enregistre une tentative d'utilisateur invalide
  • free(): double free detected in tcache 2 : glibc détecte un double free et termine le sous-processus sshd en cours ; c'est le phénomène de corruption mémoire / DoS que cette expérience vise à observer

Remarque : Pour pouvoir voir cette ligne, nous avons désactivé le bac à sable seccomp lors de la construction d'OpenSSH (--with-sandbox=no). Sinon, le bac à sable pourrait intercepter le comportement anormal avant le double free et terminer directement le sous-processus.

2. Nature de l'effet

  • Dans cet environnement expérimental, le PoC déclenche de manière fiable un crash du sous-processus de pré-authentification (DoS), entraînant l'échec de la connexion SSH en cours. Le processus principal sshd continue de créer de nouveaux sous-processus pour les connexions ultérieures.
  • Étant donné que le sous-processus de pré-authentification s'exécute dans un environnement à privilèges réduits + chroot et que plusieurs mécanismes de sécurité sont activés par défaut, les chercheurs considèrent généralement qu'il est extrêmement difficile de se fier uniquement à ce double free pour une exécution de code à distance.
Télécharger l’outil