20 febrero 2013

Weevely, una shell PHP diferente

Hace unos días compartí a través de mi cuenta de Twitter el enlace al proyecto Weevely en GitHub, una shell PHP en 'formato telnet' que, sobre el papel, tiene bastante potencial. Después de haberla probado no me queda más que recomendaros que la añadáis a vuestro 'arsenal' de shells PHP porque gracias a su carácter modular (los módulos se desarrollan en Python) es muy versátil y funcional.

En la propia página del proyecto hay información suficiente para entender su funcionamiento, desde un manual paso a paso y una explicación detallada de los módulos incorporados por detecto, hasta un video explicativo.

Veamos un ejemplo de uso de las funciones nativas de Weevely y su módulo 'net.phpproxy' (permite tunelizar tráfico a través de la máquina en la que se ha instalado la shell).

En primer lugar descargamos la shell desde GitHub (actualmente se encuentra en la versión 1.01):

Será necesario tener instalado Python y los paquetes 'beautifulsoup4' y 'pyredline'. Podéis consultar información relativa a su instalación en el propio manual de Weevely comentado anteriormente.

Una vez descargado y descomprimido el siguiente paso será crear la shell que instalaremos en la máquina remota. Además de la creación de la shell PHP por defecto, Weevely permite crear una imagen con el código PHP incrustado o un fichero .htaccess especialmente manipulado (estas opciones corresponden a los distintos módulos de generación de backdoor).

En el comando para crear la shell PHP ofuscada (que es 'generate') es necesario indicar la contraseña que protegerá la shell de terceros y, de forma opcional, la ruta en la que se creará:

> python .\Weevely.py generate anGa$faRms92 .\backdoor.php

Si accedemos al contenido de la shell que hemos creado vemos que efectivamente está ofuscada. Si se quiere "proteger" un nivel más se puede utilizar la herramienta HideMyPHPShell (desarrollada por Alberto Ortega) desde el repositorio de herramientas de Security by Default.


Para conectarnos a la consola de Weevely basta con indicar la URL de la shell y la contraseña con la que la hemos protegido, por ejemplo:

> python .\Weevely http://localhost/backdoor.php

Una vez conectados nos saldrá la siguiente pantalla (con el comando 'HELP' accedemos a los comandos disponibles):


Para ejecutar un módulo basta con escribir su nombre precedido de ":" y, para ver su ayuda indicarle el nombre del módulo al comando ":help"; como se ve a continuación:


En el caso del módulo 'net.phpproxy' nos creará un proxy en la máquina remota en la ruta que le hayamos especificado (en el ejemplo lo creará en la misma carpeta que la shell y con nombre 'proxy.php'). El proxy que utiliza es PHP-Proxy ligeramente modificado.

Una vez instalado el proxy podremos utilizarlo para navegar a través de la máquina remota:

> http://www.ldelgado.es/proxy.php?u=http://ping.eu/nslookup/


Os recomiendo que le echéis un vistazo al resto de módulos porque permiten acceder a información que, si bien se puede hacer con una shell PHP tradicional, en este caso están al alcance de un sólo comando.

[+] Weevely - http://epinna.github.com/Weevely/
[+] HideMyPHPShell - http://sbdtools.googlecode.com/files/hidemyphpshell.py
[+] PHP-Proxy - https://github.com/milovanderlinden/php-proxy

Artículo cortesía de Luis Delgado

1 comments :

Aarón D. dijo...

Recuerdo haber hecho click en el link de tu tweet, y qué bien hice. De las mejores que vi hasta ahora ;)