En el articulo anterior se mencionaron las 5 primeras alternativas a la hora de generar una webshell, las cuales son muy básicas y casi con total seguridad el lector las conoce bien. En esta ocasión hablaré de otras 5 alternativas que en mi opinión se deberían tener en consideración a la hora de explotar alguna vulnerabilidad de RCE en una aplicación web.
6. phpbash. (https://github.com/Arrexel/phpbash.git)
Se trata de una webshell semi-interactiva que utiliza la función “shell_exec” de PHP. Viene bien especialmente cuando no es posible establecer una shell reversa por el motivo que sea. Dado que se trata de una webshell “stand-alone” no hace falta abrir ningún puerto o establecer conexiones de ningún tipo, salvo las propias peticiones HTTP que se realizarán contra la webshell subida en el servidor web. Esto viene bien para evadir restricciones de un firewall, por ejemplo, ya que como se ha dicho antes no hace falta abrir puertos ni establecer conexiones contra ellos, por lo tanto es ideal para realizar pruebas rápidas de explotación de alguna vulnerabilidad que permita subir una webshell. En el repositorio hay dos ficheros PHP: “phpbash.php” y “phpbash-min.php”. La diferencia esta en que el primero de ellos tiene el código con indentación y el segundo no. Evidentemente esto hace que el tamaño del segundo sea más reducido que el de el primero, lo cual en ciertas circunstancias puede venir bien.
7. weevely. (https://github.com/epinna/weevely3)
No podía faltar Weevely en el listado. Es una de las webshell más potentes que se encuentran disponibles actualmente y de hecho, está pensada para asistir al atacante (o pentester) en los procesos de post-explotación. Es parecida a otras herramientas que buscan el mismo objetivo en el sentido de que cuenta con dos elementos fundamentales: La consola de Weevely y un agente que debe desplegarse en el sistema comprometido. El agente no es más que un programa pequeño en PHP que se debe instalar en el servidor web, mientras que la consola de Weevely se encuentra escrito en Python y permite recibir las conexiones que establece el agente. Para aquellos que habéis trabajado con Empire, se sigue una filosofía parecida (Listener recibe conexiones en la máquina del atacante y el agente establece las conexiones desde la víctima).
Una vez clonado el repositorio, lo primero que hay que hacer es instalar las dependencias definidas en el fichero “requirements.txt”. Tan simple como ejecutar “pip install -r requirements.txt”.
A continuación ya se podrán ver las opciones disponibles en la herramienta.
Como se puede ver, no hay muchas opciones disponibles y resulta fácil de utilizar. Ahora es el momento de generar un nuevo agente, tal como se puede ver se hace con el comando “generate”.
Una vez hecho esto, el siguiente paso evidentemente es subir el agente a la víctima y obtener una sesión en weevely.
El comando “help” permite ver los comandos que se encuentran incluidos en esta potente webshell, sin embargo esto no significa que ya se haya establecido la conexión, esto ocurre solamente ene el momento en el que se ejecuta el primer comando en la consola de weevely.
Pero aquí no termina. Cuenta con varios módulos que permiten llevar a cabo procesos de post-explotación, algunos de estos módulos incluyen: Búsqueda de ficheros SUID inseguros, subida y descarga de ficheros, volcado de bases de datos, establecimiento de puertas traseras “bind” y “reverse”, recolección de información en ficheros sensibles del sistema, establecimiento de un proxy (incluyendo un proxy SOCKS como el que podría tener una instancia de TOR, por ejemplo) para ejecutar conexiones hacia otras redes (como Internet), entre muchas otras cosas. Además, algo que merece la pena mencionar es que es un proyecto que funciona bastante bien y en raras ocasiones me he encontrado con errores en el código que impidan que alguna funcionalidad concreta se ejecute correctamente , como sí que ocurre en otros proyectos de código abierto. Os recomiendo que le echéis un vistazo ya que merece mucho la pena.
8. Webshells en el repositorio de XL7DEV (https://github.com/xl7dev/WebShell).
En éste repositorio hay un conjunto bastante amplio de webshells para múltiples lenguajes y plataformas. Como podréis ver cuando lo visitéis hay webshells para Go, Perl, Python, PHP, ASP, etc. Algunas de ellas han sido muy populares y en su día las podías encontrar en servidores web comprometidos, lo que te permitía saber que alguien más había estado allí aprovechándose de alguna vulnerabilidad o como administrador del sistema para saber que hay algún defecto o mala configuración que le ha permitido a alguien “plantar” ese … ese agujero de seguridad en tu sistema. Si estás empezando a probar webshells es un buen repositorio para conocer algunas de las más interesantes y sino, a lo mejor te traerá algunos recuerdos (ojo, a lo mejor no precisamente buenos).
9. webshells en Kali y FuzzDB.
También tenemos un repositorio bastante completo de webshells de uso general en Kali y por supuesto, en FuzzDB. En Kali las webshells se encuentran ubicadas en el directorio “/usr/share/webshells” y se pueden ver las más básicas para lenguajes como Java, PHP, ColdFusion o ASP. No obstante, en el caso de FuzzDB hay más variedad (https://github.com/fuzzdb-project/fuzzdb/tree/master/web-backdoors) no solamente soporta más lenguajes de programación, sino que las webshells que se encuentran allí son estables y funcionan en prácticamente todos los casos.
10. p0wnyshell. https://github.com/flozz/p0wny-shell
Se trata de una webshell muy simple pero al mismo tiempo muy completa. En primer lugar es una webshell interactiva, por lo tanto su uso resulta mucho más cómodo que con otras que no lo son. Del mismo modo que ocurre con “phpbash”, una vez que la webshell se sube al servidor se puede interactuar con ella de forma directa, sin establecer conexiones reversas o bind, algo que como se ha mencionado antes puede venir muy bien a la hora de realizar pruebas de explotación y evitar posibles problemas en las conexiones establecidas desde y/o hacia la máquina comprometida.
Espero que os haya gustado este pequeño listado, en la próxima publicación os enseñaré 5 webshells más que seguro que os van a gustar.
Un saludo y Happy Hack.
Adastra.