¿Es posible realizar un ataque XSS reflejado a través de la variable $_FILES
?
El código vulnerable que estoy imaginando podría tener este aspecto:
echo $_FILES["file"]["name"];
Leí que no es posible cargar mediante programación un archivo desde la computadora de una persona sin su interacción real (lo que tiene sentido, ya que sería un problema de seguridad gigante).
¿Pero es posible enviar automáticamente un formulario HTML que PHP interpretaría como carga de archivos y así rellenar la variable $ _FILES, dando como resultado XSS?
Estoy buscando soluciones que funcionen dentro de un navegador con HTML y JavaScript y resulten en una vulnerabilidad de seguridad real. (por lo tanto, usar el rizo o violar la política de origen cruzado no es realmente lo que estoy buscando, ya que no sería explotable).
Mis pensamientos iniciales sobre esto:
El contenido que se envía para una entrada de tipo de archivo es este:
Content-Disposition: form-data; name="fileinput"; filename="filename.php"\r\nContent-Type: application/x-php\r\n\r\nfile content\n\r\n
El contenido para, por ejemplo, la entrada de texto de tipo es estructuralmente diferente, con este aspecto:
Content-Disposition: form-data; name="textinput[]"\r\n\r\ntext content\r\n
Todavía no he encontrado una forma de crear un formulario HTML que envíe datos del primer tipo a través de un tipo de entrada diferente a un archivo, y no he encontrado una manera de rellenar previamente un campo de entrada de tipo de archivo.
Encontré esta respuesta sobre envío de archivos a través de JavaScript , pero a pesar de que parece una escritura de origen cruzado, obtengo una advertencia sobre la violación de la misma política de origen.