제목 : Shiro 권한 우회 취약성 재발 (CVE-2020-11989)

Shiro 权限绕过漏洞复现(CVE-2020-11989)​

影响范围​

Apache Shiro 1.5.3
Shiro 인증 만 스프링 프레임 워크에서 사용됩니다

环境搭建​

1
git 클론 https://github.com/l3yx/springboot-shiro.git
프로젝트를 아이디어로 가져 오십시오. 로컬 데모 환경은 Mac OS이며 Maven:을 구성합니다.
/usr/local/cellar/maven/3.6.3_1/libexec/conf/settings.xml
로컬 거울 추가 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
스물 하나
거울
idalimaven/id
mirrorofcentral/mirrorof
나밀리 유미/이름
urlhttp://maven.aliyun.com/nexus/content/repositories/central//url
/거울
!-아래 두 개의 중앙 창고는 Maven 소프트웨어로 내장되어 있으며 인터넷 전체에 서비스를 제공하며 Maven 팀 자체가 유지 관리하며 세계에서 가장 인기있는 오픈 소스 프로젝트 구성 요소를 포함하여 매우 완전한 JAR 패키지를 저장합니다.
!-중앙 창고 1-
거울
idrepo1/id
mirrorofcentral/mirrorof
이 거울에 대한 이름의 이름을 읽을 수 있습니다 ./name
urlhttp://repo1.maven.org/maven2//url
/거울
!-중앙 창고 2--
거울
idrepo2/id
mirrorofcentral/mirrorof
이 거울에 대한 이름의 이름을 읽을 수 있습니다 ./name
urlhttp://repo2.maven.org/maven2//url
/거울
20200701111449.png-water_print

Maven Home 디렉토리 및 사용자 설정 파일 구성 아이디어에서 변경하십시오.
20200701111525.png-water_print

전쟁 패키지 생성 :
20200701111710.png-water_print

Tomcat에 포장 된 전쟁 패키지를 배치하십시오. 취약점에는 성공적인 착취를위한 두 가지 조건이 있습니다.
응용 프로그램은 루트 디렉토리에 배포 할 수 없습니다. 루트 디렉토리 인 경우 Context-Path가 비어 있고 CVE-2020-1957 패치에 의해 URL이 형식화됩니다. Shiro 버전이 1.5.2보다 작 으면이 조건이 필요하지 않습니다.
스프링 컨트롤러에는 추가 권한 검증 코드가 없습니다.
취약한 환경의 권한 구성은 다음과 같습니다. /관리자의 경로는 :에 액세스하려면 로그인해야합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@콩
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 () {
'관리자 페이지'를 반환합니다.
}

漏洞复现​

직접 액세스/Shiro/Admin/Page에 액세스하면 302를 반환하고 로그인이 필요합니다.
20200701112022.png-water_print

직접 액세스/;/test/admin/page에 직접 Shiro 권한 확인 및 액세스 정보를 우회하여/admin 경로에서 직접 우회 할 수 있습니다.
20200701112041.png-water_print
 
뒤로
상단