Así que acabo de encontrarme con este desagradable código.
public ActionResult Display(string viewName)
{
return View(viewName);
}
Evitaría tener ese parámetro o al menos obtendría ese parámetro a través de una lista blanca como lo haría con cualquier información no confiable, pero aparte de eso me preguntaba si esto es realmente explotable o no.
Ahora, lo que he intentado hasta ahora es obtener archivos que no sean cshtml y archivos fuera de la raíz de la aplicación sin suerte. (ningún motor de visualización admite las ubicaciones buscadas)
?viewName=~/web.config
?viewName=C://anotherview.cshtml
?viewName=https://anotherdomain.com/anotherview.cshtml
Lo único que he podido es obtener otras vistas representadas que, en teoría, nunca debería haber podido ver (acciones de administrador y cosas similares).
Pero incluso después de obtener esas vistas y suponiendo que no hay datos en las vistas, no parece ser un gran problema.
¿Hay alguna otra manera de aprovechar este parámetro? Supongo que todo se reduce a si la función de visualización tiene un error de implementación que permitirá omitir la ubicación o el tipo de archivo que se devolverá.