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
Herramientas/GitHubGitHub/jra89/cve-2019-19576
Generación de PayloadsAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubjra89/cve-2019-19576

CVE-2019-19576

Este es un exploit de bypass de filtros que resulta en la subida arbitraria de archivos y ejecución remota de código en class.upload.php <= 2.0.3

Ver Repositorio
123hace 6 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

class.upload.php <= 2.0.3 Carga arbitraria de archivos

  • Autor - Jinny Ramsmark
  • Proveedor afectado - Verot.net
  • Producto afectado - class.upload.php <= 2.0.3
  • Probado en Ubuntu 19.10 recién instalado con PHP7.3 y Apache/2.4.38
  • Específicamente se ha encontrado que Debian/Ubuntu son vulnerables ya que agregan las extensiones php, phar y phtml a los manejadores PHP disponibles. En este caso class.upload.php no ha incluido la extensión phar en la lista negra.

Descripción

Se trata de un exploit que elude el filtro, resultando en una carga arbitraria de archivos y ejecución remota de código. El script class.upload.php filtra "archivos y contenido peligrosos" y los renombra a la extensión de archivo txt. También realiza diferentes tipos de transformación en la imagen subida, lo que normalmente destruiría cualquier carga útil inyectada, incluso si se pudiera eludir el filtro de extensión de archivo.

El filtro de extensión de archivo es una lista negra, por lo que cada vez que se introduce una nueva extensión (en este caso phar), o se omite alguna, se puede subir un archivo PHP. Sin embargo, el contenido debe seguir siendo una imagen válida y pasará por las funciones imagecreatefromjpeg y similares. Con este fin, escribí el script inject.php que esencialmente fuerza bruta a través de diferentes imágenes hasta encontrar una donde la carga útil no sea destruida por el proceso realizado en class.upload.php. Esto nos da efectivamente una carga arbitraria de archivos y una ejecución de código muy sigilosa, ya que sigue siendo una imagen válida y se mostrará como tal en las páginas donde se suba.

Cronología (plazo predeterminado de 90 días)

  • 2019-12-03 - Reportado al desarrollador y a K2
  • 2019-12-03 - K2 respondió
  • 2019-12-04 - Verot respondió con una solución
  • 2019-12-04 - K2 respondió con una solución preparada propia
  • 2019-12-04 - Verot lanzó dicha solución (v2.0.4)
  • 2019-12-05 - Ambas partes respondieron y acordaron la publicación de la información

Archivos incluidos en esta PoC

  • composer.json
  • upload.php
  • inject.php

Uso

El script upload.php es el código de ejemplo del github de verot.net. Pensé que sería mejor demostrar esta vulnerabilidad usando su propio código de ejemplo.

  • Ejecute "php inject.php" en una terminal, generará una imagen de muestra con una carga útil simple en el archivo.
  • Cuando el script termine, producirá un archivo llamado "image.jpg.phar".
  • Navegue hasta el archivo upload.php y suba image.jpg.phar, pasará el proceso y ahora tendrá un shell

Ejemplo

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.7=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.phar
root@kitploit:~
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU

Solución propuesta

  • No usar lista negra de extensiones de archivo.
  • Usar una lista blanca de extensiones permitidas por defecto.
  • O simplemente no tener ninguna extensión en los archivos subidos, y almacenar el nombre original en otro lugar.

Referencia

  • https://github.com/verot/class.upload.php/blob/2.0.3/src/class.upload.php#L3068

Ejemplo de ataque en la extensión Joomla K2

Carga arbitraria de archivos que conduce a ejecución remota de código en JoomlaWorks K2 <= 2.10.1 debido a una versión sin parche de class.upload.php

Sitio web

  • https://getk2.org/

Imágenes de muestra

Un usuario normal sube la imagen generada por inject.php, que contiene una carga útil simple. Eludirá el filtro de extensión en class.upload.php y no será destruida por el manejo de imágenes de la biblioteca. Se renderizará como una imagen normal, lo cual es más sutil.



El archivo se subirá y podrá accederse como una puerta trasera y ejecutar comandos.

Descargar herramienta