
Una semplice vulnerabilità basata su C nelle versioni di Webmin da 1.890 a 1.920
Introduzione:
Webmin Exploit è un exploit mirato per il servizio Webmin, che può essere sfruttato sulle versioni precedenti di Webmin. Questo exploit utilizza varie tecniche per eseguire codice malevolo e ottenere accesso non autorizzato al sistema target.
Prevede:
L'uso di codice C e Assembly per eseguire comandi sul sistema target.
L'impiego di tecniche come l'anti-debugging, la decrittazione XOR e syscall come execve e prctl per generare una reverse shell.
Caratteristiche: Anti-debugging: usa la syscall ptrace per impedire il debug dell'exploit.
Decrittazione XOR: decodifica stringhe cifrate come kthreadd e /bin/sh in memoria usando la cifratura XOR.
Syscall prctl: cambia il nome del processo in kthreadd per nascondere l'exploit dall'elenco dei processi.
Syscall execve: esegue la reverse shell /bin/sh sul sistema target per ottenere accesso completo al sistema.
Combinazione di C e Assembly: questo exploit unisce la flessibilità del C con la potenza del linguaggio assembly per syscall personalizzate.
Requisiti: Sistema operativo: Linux o qualsiasi distribuzione basata su Unix.
Librerie richieste:
libcurl per stabilire connessioni tra client e server.
GCC per compilare l'exploit.
La libreria -lcurl per caricare la libreria curl in C.
Come usarlo: Configurazione dell'ambiente: Assicurati di avere privilegi di root, poiché alcune azioni, come execve, richiedono permessi elevati.
Installa le librerie richieste:
sudo apt-get install libcurl4-openssl-dev
Compilazione dell'exploit: Scarica il file webmin_exploit.c sul tuo computer.
Compila il codice dell'exploit usando GCC con l'opzione -no-pie per disabilitare il PIE (Position Independent Executable):
gcc -no-pie webmin_exploit.c -o webExploit -lcurl
Nota: se riscontri problemi legati al PIE, assicurati di usare -no-pie come mostrato sopra.
Esecuzione dell'exploit: Configura le impostazioni dell'exploit: modifica l'URL target, LHOST (host locale) e LPORT (porta locale) nel codice secondo necessità.
Esegui l'exploit: dopo la compilazione, esegui l'exploit sulla macchina target:
./webExploit Ricezione della reverse shell:
Una volta che l'exploit viene eseguito con successo, dovrebbe stabilire una connessione reverse shell verso il tuo LHOST e LPORT (ad esempio, 192.168.0.174:4444).
Assicurati di essere in ascolto sulla porta specificata usando Netcat o uno strumento simile:
nc -lvnp 4444
Analisi tecnica: Istruzioni chiave nel codice: Anti-debugging: la syscall ptrace viene usata per impedire che l'exploit venga sottoposto a debug da strumenti come gdb. Questo rende più difficile per gli analisti fare reverse engineering dell'exploit.
Decrittazione XOR: le stringhe kthreadd e /bin/sh sono cifrate con XOR nel binario usando la chiave 0x41 (ASCII 'A'). Queste stringhe vengono decrittate a runtime in memoria.
Syscall:
prctl(PR_SET_NAME, "kthreadd"): cambia il nome del processo in kthreadd, aiutando l'exploit a evitare il rilevamento.
execve("/bin/sh"): esegue una reverse shell verso /bin/sh, dando all'attaccante accesso completo al sistema.
Istruzioni principali: mov: carica valori nei registri.
xor: esegue un'operazione XOR sui dati.
syscall: esegue syscall come execve e prctl per la generazione della shell e la rinomina del processo.
lea: carica un indirizzo in un registro.
Risoluzione dei problemi: Se incontri problemi durante la compilazione, ricontrolla di usare il flag -no-pie per disabilitare gli eseguibili indipendenti dalla posizione (PIE).
Se i problemi persistono, assicurati che il tuo ambiente di sviluppo sia aggiornato con le librerie necessarie.
Avvisi: Usa questo exploit solo in ambienti di test. Non eseguire mai questo exploit su sistemi live o su sistemi per cui non hai il permesso esplicito di test.
Disattiva i firewall sulla macchina target se necessario, per garantire che la reverse shell possa connettersi correttamente.
Assicurati di essere in ascolto sulla porta usando Netcat o uno strumento simile per intercettare la connessione della reverse shell.