SecretJenkins
✍️ Autor: El Pingüino de Mario🔍 Dificultad: Fácil 📅 Fecha de creación: 11/05/2024
Last updated
✍️ Autor: El Pingüino de Mario🔍 Dificultad: Fácil 📅 Fecha de creación: 11/05/2024
Last updated
En primer lugar, tras conectarnos a la máquina, utilizamos el comando:
para verificar la conectividad de red.
A continuación, realizamos el comando:
para realizar un escaneo de puertos y servicios detallado en la dirección IP.
Como podemos observar durante el escaneo que el puerto 22 perteneciente al servicio SSH y el puerto 8080 perteneciente al servicio HTTP están abiertos por lo que a continuación se indagará más.
Se utiliza el comando:
para que nos proporcione más información sobre esos puertos específicamente.
Seguimos indagando más sobre los puertos y ahora indagamos sobre el servicio HTTP. Se ingresó la dirección IP en el navegador lo que llevó a que la página web sea un panel de Login.
Revisando el código fuente no encontramos nada relevante.
Ahora buscaremos directorios con la herramienta Gobuster a través de:
Podemos probar accediendo a ciertos recursos que nos proporcionan respuestas útiles. Por ejemplo, en la sección /people
podemos observar tanto la versión en la parte inferior como varias opciones de botones.
Al hacer clic en el botón people, se muestra información sobre dos posibles usuarios.
Probamos con credenciales genéricas para ambos usuarios, pero no pudimos acceder. Dado que tenemos la versión del sistema, buscamos algún exploit que podamos utilizar. Encontramos varias opciones en Google.
Para esta ocasión, utilizaremos un exploit disponible en Exploit-DB. Descargamos el archivo .py
correspondiente, lo ejecutamos y logramos obtener la información del archivo que estábamos buscando.
Sabemos que tenemos la capacidad de leer archivos. En este caso, buscaremos las credenciales de los usuarios de Jenkins leyendo el archivo /var/jenkins_home/users/users.xml
. Este archivo contiene información sobre los usuarios creados, incluidas las credenciales, permisos y roles asociados. Al ejecutar el comando para leer este archivo, podremos observar el ID de los usuarios.
Una vez que tenemos el identificador del usuario, podemos aprovecharlo para acceder a su archivo de configuración, donde se encuentra su contraseña en formato hash. El archivo está ubicado en el directorio /var/jenkins_home/users/admin_4715893701316860439/config.xml.
Al ejecutar el exploit, conseguimos obtener el passwordHash
.
Para romper el hash, guardamos el valor en un archivo llamado hash
. Intentamos obtener la contraseña, pero no tuvimos éxito, ya que no se encuentra en el diccionario utilizado.
Con john no se puede por lo que probamos por SSH con el usuario bobby.
Con la información obtenida anteriormente, realizamos el comando:
que utiliza la herramienta Hydra para realizar un ataque de fuerza bruta contra el servicio SSH de una máquina con la IP 172.17.0.2.
Al realizar el ataque de fuerza bruta, hemos descubierto la contraseña de russoski. Sabiendo esto, nos conectamos a través de SSH al usuario con el comando:
Al estar dentro y ejecutar:
aún no somos root, por lo que hacemos:
para ver si hay algo para explotar.
Para aprovechar esta situación, visitamos la página de GTFOBins y buscamos la entrada correspondiente a Python. Encontramos un código en la sección de sudo
que podemos ejecutar, aunque es importante considerar ciertas modificaciones, ya que no es para obtener acceso root directamente.
Antes de ejecutar el comando completo, es necesario agregar la opción -u pinguinito
, ya que los permisos están asignados a ese usuario. Si ingresamos el comando correctamente, podremos confirmar que hemos cambiado al usuario pinguinito
.
Al inspeccionar el script, verificamos que somos los propietarios del archivo, y además, este tiene permisos de lectura y ejecución. Al abrir el archivo, descubrimos que su función principal es copiar /opt/script.py
al directorio /tmp
bajo el nombre script_backup.py
, seguido de un mensaje que confirma la copia exitosa.
Dado que somos los propietarios, intentamos agregar permisos de escritura al script. Este cambio se realizó correctamente, lo que nos brinda la oportunidad de aprovecharlo para realizar modificaciones adicionales.
Modificamos el archivo para que podamos tener acceso a una nueva shell.
Ya tenemos acceso como root por lo que tenemos los máximos privilegios.