domingo, 4 de enero de 2015

Gorosaurus I: introducción

¡Saludos!

     En estas fechas, entre comida y cena familiar amenizada con alcohol después de los postres, me surgió la necesidad de utilizar una webshell. Como no tenía ninguna a mano en ese instante empecé a codearme una sencillita que supliera las necesidades que tenía en ese momento. Básicamente necesitaba moverme entre directorios, subir y descargar ficheros, dumpear las bases de datos, y como es lógico ejecutar comandos del propio SO.

      Al día siguiente, mientras me recuperaba del cubata overflow, le añadí un par de detalles más y es la versión que voy a subir ahora mismo a GitHub. Es una versión bastante primitiva, que iré puliendo en esta semana que estoy libre, a la que iré añadiéndole más funcionalidades.

      La webshell, Gorosaurus -el nombre de Ethylic WebShell quizás hubiese sido más correcto dadas las circunstancias de cuando la hice-, consta de un archivo PHP que es el que se acaba subiendo al servidor y de un script en PERL que actúa como cliente para la comunicación. Dicha comunicación se establece enviando la contraseña y los comandos a ejecutar a través de cabeceras HTTP que deberemos de definir previamente. De esta forma en un análisis preliminar no debería de verse en los logs habituales, ya que únicamente vería peticiones GET hacia el archivo -en el siguiente capítulo hablaremos de como camuflar esto también-.

     Una vez que hemos definido los datos principales (contraseña, nombre de la cabecera HTTP que contendrá la contraseña y el comanod a ejecutar) y hemos subido el PHP al servidor con el que estamos trabajando, procederemos a conectarnos desde el script cliente:


    Estando "logueados" de forma correcta podremos empezar a interaccionar con el PHP. Le he añadido algunas funciones relacionadas con WordPress que, junto con un script que publicaré en siguientes capítulos para hacer knock-out a los plugins de seguridad, explicaré más detalladamente en el próximos capítulos. En este caso podemos ver como con el comando "server_info" se muestra información genérica del servidor y con "db_credentials" se busca el archivo wp-config.php para exponer los credenciales.



  El listado de funciones -que ampliaré esta semana- que admite ahora mismo son éstas:




   Algunos ejemplos de funciones: db_list (lista aquellas bases de datos a las que tiene acceso el usuario actual) y db_tables (lista las tablas de una base de datos dada)


    De forma automática la webshell busca el archivo wp-config.php para cargar de él los credenciales y así interactuar con la base de datos. En caso de que no se trate de un WordPress, o de que queramos entrar con otro usuario o pivotar hacia una DB alojada en otro servidor (imaginemos que hemos encontrado un archivo config.php y queremos acceder con esos datos) podemos indicar esos credenciales usando la función "db_def_credentials".

    Para navegar y realizar operaciones con los ficheros deberemos de entrar en el modo "browser". Al entrar en este modo, la primera vez deberemos de ejecutar "pwd" para que el script tome como punto de referencia el path actual donde se encuentra la webshell.


  Actualmente el modo browser soporta estas funciones -también serán ampliadas durante esta semana-.
 

    Y la ejecución de comandos en el servidor remoto, como si de una consola se tratase, podemos hacerla entrando en el modo "terminal". Este modo nos pedirá con qué función ejecutar los comandos. Para ver qué funciones tenemos disponibles podemos valernos de "allowed":





     Los dos scripts se encuentran en el GitHub del blog ( https://github.com/0verl0ad/gorosaurus ), y como ya digo, será documentado -y ampliado el código - más en profundidad durante esta semana.  Además colgaré un par de scripts interesantes para cuando toque penetrar WordPress.

Byt3z

5 0verl0ad Labs: Gorosaurus I: introducción ¡Saludos!      En estas fechas, entre comida y cena familiar amenizada con alcohol después de los postres, me surgió la necesidad de utili...

1 comentario:

@Gonnza_Cabrera dijo...

Interesate post, espero más funciones! :)

< >