Vulnerabilidad de carga de archivos PHP

2

Estoy evaluando la seguridad de un portal web para un cliente y encontré una vulnerabilidad.

Encontré una función donde se encarga de subir archivos. Se supone que solo lo deben usar los administradores, pero la función real se puede llamar directamente y no verifica la autenticación. De todos modos, aquí están las condiciones:

La carga toma 2 argumentos (digamos), ID (debe ser int, si no es int, rompe el código y no carga), objeto de archivo.

Cuando se carga el archivo, comprueba la extensión del archivo usando: %código%. Si la extensión es uno de los siguientes: pathinfo['extension']

rompe la carga.

De lo contrario, significa que todas las comprobaciones se pasan y coloca el archivo en: "php, php3, php4, phps, php5, php6, phtml, html, htm, py, pl, sh"

P.S. Lee datos POST / GET completos (usando php: // input) si encuentra "% 00" (usa expresiones regulares) en POST / GET / COOKIE / ... cualquier cosa, rompe toda la conexión.

Entonces, para resumir, hace 3 controles:

  • % 00 en POST / GET leyendo php: // input y buscando% 00
  • $ ID para ser int
  • La extensión del archivo, no debería ser igual a /uploads/$ID.$EXT

¿Es una vulnerabilidad? ¿Podemos pasar por alto las pruebas y causar daño? RCE?

P.S. Es un servidor Linux.

    
pregunta GMX Rider 15.01.2018 - 22:05
fuente

1 respuesta

1

No estoy seguro de cuál es el valor en su búsqueda de %00 . (Quiero decir, supongo que truncando nombres de archivos en versiones realmente antiguas en PHP?)

Si el servidor web está configurado para enviar todas las solicitudes a PHP, puede usar extensiones alternativas ( .html ) e intentar obtener la ejecución del código de esa manera. Si se han configurado cuidadosamente para permitir solo la ejecución de PHP para las extensiones de archivo que están filtrando, consideraría si se han instalado otros lenguajes de scripting. (por ejemplo, mod_python)

Independientemente de RCE en el servidor, si permiten que el contenido HTML se cargue en el mismo origen que aloja el sitio, es casi seguro que tenga un vector XSS ...

    
respondido por el David 15.01.2018 - 22:20
fuente

Lea otras preguntas en las etiquetas