제목 : HeepDump Leaks Shiro 키 및 RCE

1. 简介​

Spring HeepDump가 Shiro 키가 누출되어 RCE가 누출되는 취약한 환경을 구축했습니다. github 주소 : https://github.com/p4r4d1se/HeapDump_shiro_vuln
취약성 악용 조건 :
Spring Shiro 환경에는 힙합 파일 누출과 악용 체인이 있습니다.

2. 漏洞原理​

많은 Bigwig는 Shiro 관련 취약점의 원칙과 디버깅 분석을 공유했습니다. 나는 여기서 세부 사항으로 들어 가지 않을 것입니다. 주로이 취약점 환경을 설명하겠습니다.
(1) Spring은 실제로 Spring Security라는 자체 기본 보안 프레임 워크를 가지고 있지만 일부 개발은 Shiro를 사용하는 데 사용될 수 있으며 Spring Securiy를 Shiro로 대체 할 수 있습니다. 예를 들어, Ruoyi는 봄 시로입니다.
1049983-20221205094141235-716240315.jpg
(2) 키가있는 경우, 최신 버전의 Shiro조차도 여전히 취약점이 있으며, 많은 경우에 Shiro 키는 개발, 배포 및 기타 문제로 인해 유출됩니다.
(3) Shiro가 1.2.4보다 큰 버전에서 키는 개발자의 수동 개입없이 임의의 생성으로 변경됩니다. 이 임의의 생성은 웹 환경이 시작될 때마다 다시 시작하기 전에 키가 변경되지 않는다는 것입니다. JVM 가상 머신 메모리에서 찾을 수 있습니다.
1049983-20221205094142103-2055517121.jpg
(4) Spring의 HeepDump 파일은 JVM 가상 머신 메모리에서 내보내집니다.
요약하면,이 조합 취약점이 생성되었습니다.

3. 漏洞演示​

취약한 환경을로드 한 후 Shiro 버전이 1.8.0임을 알 수 있습니다.
1049983-20221205094143073-114670788.jpg

포트 8080의 /actuator /heapdump에 액세스하려면 heapdump 파일을 얻으십시오.
1049983-20221205094143969-554120927.jpg

Shiro 키를 얻는 데 자주 사용하는 두 가지 방법이 있습니다.
(1) jdumpspider : https://github.com/whwlsfb/jdumpspider
이 위젯은 HeapDump에서 가변 정보를 자동으로 크롤링 할 수 있으며 이는 더 편리합니다. 단점은 크롤링 목록에없는 정보를 놓칠 수 있다는 것입니다.
:java 직접 -jar jdumpspider.jar heapdump를 실행하여 가변 정보를 자동으로 얻으십시오. 여기에서 Shirokey를 얻을 수 있습니다
1049983-20221205094144681-379271828.jpg
(2) jvisualvm.exe : java 자체 도구, 기본 경로는 JDK 디렉토리/bin/jvisualvm.exe입니다.
이 도구는 원하는 정보를 수동으로 찾아야하고 필터에 org.apache.shiro.web.mgt.cookieremembermemanager를 입력해야하며 16 바이트가 원형이 키입니다.
1049983-20221205094145426-680950609.jpg

Python 스크립트를 사용하여 Base64에 인코딩 된 Shiro 키로 변환하십시오. Python 스크립트를 사용하여 Base64 인코딩 된 Shiro 키로 변환하십시오.
베이스 64 수입
수입 구조
print (base64.b64encode (struct.pack
1049983-20221205094147320-612137025.jpg

서버를 다시 시작하고 Shiro 키를 다시 가져옵니다. 키가 변경되었음을 알 수 있습니다. 취약성 원칙의 세 번째 요점이 검증됩니다. 시작할 때마다 임의의 키가 생성됩니다.
1049983-20221205094148077-2083177773.png

새 키로 전환하는 것은 여전히 활용 될 수 있습니다.
1049983-20221205094148947-1689724177.jpg

원래 링크에서 재 인쇄 : https://xz.aliyun.com/t/11908
 
뒤로
상단