Quindi mi sono imbattuto in questo pezzo di codice sgradevole.
public ActionResult Display(string viewName)
{
return View(viewName);
}
Eviterei di avere quel parametro o almeno otterrei quel parametro attraverso una white-list come farei con qualsiasi dato non sicuro, ma a parte questo mi chiedevo se questo fosse effettivamente sfruttabile o meno.
Ora quello che ho provato fino ad ora è quello di ottenere file e file non cshtml al di fuori della radice dell'applicazione senza fortuna. (nessun motore di visualizzazione supporta le posizioni ricercate)
?viewName=~/web.config
?viewName=C://anotherview.cshtml
?viewName=https://anotherdomain.com/anotherview.cshtml
L'unica cosa che sono stato in grado di ottenere è ottenere visualizzazioni di altre viste che in teoria non avrei mai potuto vedere (azioni di amministrazione e cose simili).
Tuttavia, anche dopo aver ottenuto tali visualizzazioni e presupponendo che nessun dato sia stato codificato in modo rigido nelle viste, non sembra essere ancora un grosso problema.
C'è un altro modo per sfruttare questo parametro? Immagino che tutto dipenda dal fatto che la funzione View abbia un bug di implementazione che consentirà di bypassare sia la posizione che il tipo di file da restituire.