Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2023-25136-PoC — Ambiente di riproduzione minimale basato su Docker per la vulnerabilità double-free pre-autenticazione di OpenSSH 9.1p1 (CVE-2023-25136), che dimostra la corruzione della memoria e il denial-of-service tramite un client PoC Python. | Kitploit
Strumenti/GitHubGitHub/lane0218/cve-2023-25136-poc
Analisi delle VulnerabilitàExploitPenetration TestingApprendimento e FormazioneBinary Exploitation
GitHublane0218/cve-2023-25136-poc

CVE-2023-25136-PoC

Ambiente di riproduzione minimale basato su Docker per la vulnerabilità double-free pre-autenticazione di OpenSSH 9.1p1 (CVE-2023-25136), che dimostra la corruzione della memoria e il denial-of-service tramite un client PoC Python.

Vedi Repository
9 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Riproduzione della vulnerabilità CVE-2023-25136

Questo progetto fornisce un ambiente di laboratorio locale minimale per riprodurre la vulnerabilità di corruzione della memoria double free pre-autenticazione in OpenSSH 9.1p1 (CVE-2023-25136) e osservare l'effetto di crash del processo server (DoS).

Nota: le analisi ufficiali e quelle della maggior parte dei ricercatori ritengono che, con la configurazione di sicurezza predefinita, questa vulnerabilità sia "difficilmente sfruttabile per l'esecuzione remota di codice". Questo ambiente serve principalmente a dimostrare l'errore di memoria e l'effetto di denial of service.

Descrizione dell'ambiente

  • Macchina vittima (Target):

    • Server OpenSSH 9.1p1 in esecuzione in un contenitore Docker
    • Utente di privilege separation sshd configurato
    • Per facilitare l'osservazione del crash double free, la sandbox seccomp è stata disattivata in fase di build con --with-sandbox=no
    • Il contenitore ascolta internamente sulla porta 22, mappata sulla porta 2222 dell'host (WSL)
  • Macchina attaccante (Attacker):

  • Si trova sullo stesso host / nella stessa WSL della macchina vittima
  • Utilizza Python3 + paramiko per eseguire il PoC, costruendo uno specifico identificativo client SSH e avviando un handshake pre-autenticazione

Struttura delle directory:

  • Dockerfile: crea l'immagine dell'ambiente vulnerabile con OpenSSH 9.1p1
  • poc.py: client PoC minimale per innescare il double free nella fase di pre-autenticazione

Prerequisiti

Prima di eseguire le operazioni seguenti in questa directory, assicurati di:

  • Aver installato Docker (in WSL2 si consiglia Docker Desktop oppure l'installazione diretta di Docker in WSL)
  • Aver installato Python 3 e pip

1. Configurazione della macchina vittima (OpenSSH 9.1p1 in Docker)

  1. Costruire l'immagine

Esegui in questa directory:

root@kitploit:~
docker build -t sshd-9.1p1-vuln .
  1. Avviare il contenitore
root@kitploit:~
docker run --rm -d --name sshd-vuln -p 2222:22 sshd-9.1p1-vuln

Note:

  • --rm: rimuove automaticamente il contenitore alla sua uscita
  • --name sshd-vuln: nome del contenitore
  • -p 2222:22: mappa la porta 22 del contenitore sulla porta 2222 dell'host
  1. Verificare lo stato di esecuzione di sshd
root@kitploit:~
docker ps

Dovresti vedere un output simile a:

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. Utilizzo del PoC dalla macchina attaccante

1. Installare le dipendenze del PoC

Esegui in questa directory:

root@kitploit:~
pip install paramiko

2. Descrizione dello script PoC (poc.py)

poc.py utilizza paramiko.Transport per stabilire attivamente una connessione con il server SSH di destinazione e, nella fase di pre-autenticazione, falsifica l'identificativo client nel tentativo di innescare il double free.

Caratteristiche principali:

  • Destinazione predefinita: 127.0.0.1:2222 (cioè il contenitore Docker locale)
  • Identificativo client predefinito: SSH-2.0-PuTTY_Release_0.64
  • Fornisce semplici parametri da riga di comando:
    • -t/--target: IP di destinazione (predefinito 127.0.0.1)
    • -p/--port: porta di destinazione (predefinita 2222)
    • -c/--client-id: identificativo client SSH falsificato
    • --timeout: timeout in secondi
    • -v/--verbose: stampa messaggi di errore dettagliati

3. Eseguire il PoC

Con il contenitore sshd-vuln avviato, esegui in questa directory:

root@kitploit:~
python3 poc.py

Oppure specificando esplicitamente i parametri:

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

Esempio di output atteso dal 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。

Note:

  • È un comportamento atteso che il client riporti Authentication failed o connection closed, poiché il processo figlio di pre-autenticazione del server potrebbe andare in crash o chiudere la connessione durante l'elaborazione.

3. Risultati attesi e modalità di verifica

1. Log del server (contenitore)

Dopo aver eseguito il PoC, sull'host visualizza i log del contenitore:

root@kitploit:~
docker logs sshd-vuln

L'output atteso è simile a:

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

Dove:

  • Invalid user: poiché il PoC utilizza un nome utente vuoto, OpenSSH registra un tentativo di utente non valido
  • free(): double free detected in tcache 2: glibc rileva il double free e termina il processo figlio sshd corrente; è esattamente il fenomeno di corruzione della memoria/DoS che questo esperimento intende osservare

Nota: per poter vedere questa riga, abbiamo disattivato la sandbox seccomp (con --with-sandbox=no) durante la build di OpenSSH; altrimenti la sandbox potrebbe intercettare il comportamento anomalo prima del double free e terminare direttamente il processo figlio.

2. Natura dell'effetto

  • In questo ambiente sperimentale, il PoC innesca in modo stabile il crash (DoS) del processo figlio di pre-autenticazione, causando il fallimento della connessione SSH corrente. Il processo principale sshd continua a generare nuovi processi figli per le connessioni successive.
  • Poiché il processo figlio di pre-autenticazione opera in un ambiente a bassi privilegi + chroot e dispone di molteplici meccanismi di sicurezza predefiniti, i ricercatori concordano nel ritenere estremamente difficile ottenere l'esecuzione remota di codice basandosi esclusivamente su questo double free.
Scarica lo strumento