Restituisce la vista parametrizzata

1

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.

    
posta EpicVendetta 23.02.2017 - 13:38
fonte

1 risposta

0

Per tutti gli scopi pratici, qui è in effetti presente una whitelist.

Il parametro non è un nome file di per sé, ma un nome di vista, utile solo per caricare un'istanza di una vista già compilata che è un tipo che implementa l'interfaccia IView dall'applicazione. Assegnando nomi di file arbitrari o qualsiasi contenuto che non sia il nome di una vista nel contesto di questo controller in questa applicazione, e non otterrai nulla.

Quindi no, nessuna vulnerabilità qui.

    
risposta data 21.07.2017 - 15:46
fonte

Leggi altre domande sui tag