🏛️Persistencia Post-Explotación
Ahora que hemos trabajado tanto para conseguir este punto de apoyo, no queremos perderlo. El objetivo es usar este host como punto de apoyo para acceder al resto de la red interna. Nuestro shell aún es relativamente inestable y no queremos seguir configurando el acceso con múltiples pasos para ser lo más eficientes posible y dedicar el máximo tiempo posible a la evaluación, no a manipular los shells.
Hundiendo nuestros anzuelos
Ahora que tenemos las credenciales (srvadm:ILFreightnixadm!), podemos aprovechar el puerto SSH que vimos abierto anteriormente y conectarnos para obtener una conexión estable. Esto es importante porque queremos volver lo más cerca posible del mismo punto al inicio de las pruebas cada día, para no perder tiempo en la configuración.
Ahora no siempre tendremos SSH abierto a internet y es posible que tengamos que lograr la persistencia de otra manera. Podríamos crear un binario de reverse shell en el host, ejecutarlo mediante la inyección de comandos, obtener un reverse shell o un shell de Meterpreter y luego trabajar con él. Dado que SSH está disponible, lo usaremos. Hay muchas maneras de pivotar y tunelizar nuestro tráfico, que se trataron en profundidad en el módulo Pivoting, Tunelling y port Forwarding , por lo que vale la pena probar algunas de ellas en esta sección para adquirir más práctica. Necesitaremos usar algunas de ellas a medida que profundicemos en esta red.
También es útil tener una forma alternativa de volver a acceder al usar las credenciales de alguien, ya que podrían notar que su cuenta está comprometida o que llega ese momento del mes en que se les solicita cambiar su contraseña, y no podremos volver a conectarnos al día siguiente. Siempre debemos anticiparnos, analizar cada aspecto e intentar anticiparnos a los problemas antes de que surjan. Un laboratorio es muy diferente del mundo real, y no hay reinicios ni segundas oportunidades, por lo que debemos trabajar meticulosamente y mantener el máximo conocimiento de la situación.
afsh4ck@kali$ ssh srvadm@10.129.203.111
The authenticity of host '10.129.203.111 (10.129.203.111)' can't be established.
ECDSA key fingerprint is SHA256:3I77Le3AqCEUd+1LBAraYTRTF74wwJZJiYcnwfF5yAs.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.129.203.111' (ECDSA) to the list of known hosts.
srvadm@10.129.203.111's password:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-113-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Tue 21 Jun 2022 07:30:27 PM UTC
System load: 0.31
Usage of /: 95.8% of 13.72GB
Memory usage: 64%
Swap usage: 0%
Processes: 458
Users logged in: 0
IPv4 address for br-65c448355ed2: 172.18.0.1
IPv4 address for docker0: 172.17.0.1
IPv4 address for ens160: 10.129.203.111
IPv6 address for ens160: dead:beef::250:56ff:feb9:d30d
IPv4 address for ens192: 172.16.8.120
=> / is using 95.8% of 13.72GB
* Super-optimized for small spaces - read how we shrank the memory
footprint of MicroK8s to make it the smallest full K8s around.
https://ubuntu.com/blog/microk8s-memory-optimisation
97 updates can be applied immediately.
30 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable
Last login: Wed Jun 1 07:08:59 2022 from 127.0.0.1
$ /bin/bash -i
srvadm@dmz01:~Ahora que tenemos una conexión estable a través de SSH, podemos comenzar a enumerar más.
Escalada de privilegios locales
Podríamos subir un script de enumeración al sistema como LinPEAS , pero siempre intento dos comandos simples después de obtener acceso:
idpara ver si la cuenta comprometida está en algún grupo local privilegiado.sudo -lpara ver si la cuenta tiene algún tipo de privilegiossudopara ejecutar comandos como otro usuario o como root.
Hasta ahora, hemos practicado muchas técnicas de escalada de privilegios. Es genial tener estas técnicas en nuestro bolsillo trasero, especialmente si aterrizamos en un sistema muy reforzado. Sin embargo, estamos tratando con administradores humanos, y los humanos cometen errores y también van por conveniencia.
La mayoría de las veces, mi camino para escalar privilegios en una máquina Linux durante un pentest no fue un ataque complejo, sino algo simple como un sudo su sin una contraseña para obtener privilegios de root o no tener que escalar privilegios porque el servicio que exploté se estaba ejecutando en el contexto de la cuenta root. Es necesario comprender y practicar tantas técnicas como sea posible porque, como hemos dicho algunas veces, cada entorno es diferente y queremos tener el conjunto de herramientas más completo posible a nuestra disposición.
Al ejecutar sudo -l, vemos que podemos ejecutar el comando /usr/bin/openssl como root sin necesidad de contraseña. Como se sospechaba, existe un GTFOBin para el binario de OpenSSL. La entrada muestra varias maneras de aprovechar esto: para cargar y descargar archivos, obtener una reverse shell, y leer y escribir archivos.
Probemos esto para ver si podemos obtener la clave privada SSH del usuario root. Esto es ideal en lugar de intentar simplemente leer el archivo /etc/shadow u obtener una reverse shell, ya que el archivo ida_rsa de clave privada nos permitirá acceder al entorno por SSH como root, lo cual es perfecto para configurar nuestros pivotes.
La entrada indica que podemos utilizar el binario para lecturas de archivos privilegiadas de la siguiente manera:
Vamos a intentarlo.
Este archivo siempre lo deberíamos almacenar en notas o en un documento seguro para que podamos utilizarlo para acceder por SSH sin especificar una contraseña.
Estableciendo la persistencia
¡Éxito! Ahora podemos guardar la clave privada en nuestro sistema local, modificar los privilegios y usarla para acceder por SSH como root y confirmar los privilegios.
Funcionó y ahora estamos dentro y tenemos un "punto de guardado" para regresar al entorno interno rápidamente y podemos usar este acceso SSH para configurar un Port Forwarding y pivotar internamente.
Caso práctico
Pregunta 1
Escale los privilegios en el host de destino y envíe el contenido del archivo flag.txt en el directorio /root.
Conexión por SSH
Permisos de ejecución
El usuario srvadm puede ejecutar openssl. Vamos a buscar en GTFO Bins:
En la sección de File Write indica que podemos utilizar el binario para lecturas de archivos privilegiadas de la siguiente manera:
Escalada de privilegios con openssl
Obtenemos la clave privada id_rsa de root! Esta clave debemos almacenarla bien en nuestro equipo para tener siempre un punto de acceso sin contraseña. Lo guardaremos con el nombre del host para identificarlo, en este caso dmz01_key.
Acceso root
Acceso a la flag
Última actualización

