KoreanHackerTeam
Moderator
0x00 漏洞简述
Apache Shiro의 1.5.3 이전에 Spring Dynamic Controller와 함께 Apache Shiro를 사용할 때 신중하게 편집 된 요청은 인증을 우회 할 수 있습니다. 직접 액세스/Shiro/Admin/Page에 액세스하면 로그인으로 302 점프를 반환합니다. Access/;/Shiro/Admin/Page는 Shiro 권한 검증 및 1.5.3 이전에/Admin Route0x01 漏洞影响
Apache Shiro에서 Shiro 권한 확인 및 액세스 정보를 직접 우회 할 수 있습니다. Shiro 인증 만 스프링 프레임 워크에서 사용됩니다. 1. 프로젝트를 로컬 https://github.com/l3yx/springboot-shiro2로 다운로드하십시오. 아이디어 편집기를 통해 전쟁 패키지에 컴파일 한 다음 Tomcat 아래의 WebApps 디렉토리에 넣고 실행하십시오. 전쟁 패키지는 여기에 편집되었습니다 : https://github.com/backlion/demo/blob/master/shiro.war0x02 环境搭建
1. 권한 구성은 다음과 같습니다.shirofilterfactorybean shirofilterfactorybean () {
shirofilterfactorybean bean=새로운 shirofilterfactorybean ();
bean.setsecurityManager (securityManager ());
bean.setLoginUrl ( '/login');
bean.setsuccessurl ( '/index');
bean.setunauthorizedUrl ( '/UnauthorizedUrl');
맵 스트링, 문자열지도=새로운 LinkedHashMap ();
map.put ( '/dologin', 'anon');
map.put ( '/admin/*', 'authc');
bean.setfilterchainDefinitionMap (map);
귀환 콩;
}
---
@GetMapping ( '/admin/page')
public String admin () {
'관리자 페이지'를 반환합니다.
} 2.Maven 패키지 프로젝트는 Shiro.war이며 Tomcat에 배포되었습니다. 이 취약점은 성공적으로 이용되었습니다. 응용 프로그램이 루트 디렉토리에 루트 디렉토리를 배포 할 수없는 두 가지 조건이 있습니다. 루트 디렉토리 인 경우 Context-Path가 비어 있고 CVE-2020-1957의 패치에 의해 URL이 형식화됩니다. Shiro 버전이 1.5.2보다 작 으면이 조건이 필요하지 않습니다. 스프링 컨트롤러 3에는 다른 권한 검증 코드가 없습니다. 그러나/;/shiro/admin/page에 액세스하는 경우 Shiro의 권한 검증을 직접 우회하고 Shiro의 권한 검증이 URL 경기를 판단함으로써 Shiro의 권한 검증이 수행되기 때문에/Admin Route

0x03 漏洞复现
의 정보에 액세스 할 수 있습니다. Shiro가 얻은 URL을 찾을 수 있고 Web Fronworks가 발생한 상황이 발생하는 상황이 발생할 수 있다면 URL 경기를 판단 할 수 있습니다. Shiro의 URL 획득 및 일치는 org.apache.shiro.web.filter.mgt.pathmatchingfilterchainresolver#getchain에서 얻습니다. getPathWithInapplication 함수를 통해 얻은 경로는/





