
CVE-2022-45782에 대한 개념 증명: 예측 가능한 dotCMS 비밀번호 재설정 토큰과 토큰 크래커 및 전체 익스플로잇 체인을 포함합니다.
이 저장소는 비암호화 방식의 RandomStringUtils.randomAlphanumeric() 메서드를 사용하여 비밀번호 재설정 토큰을 생성하는 dotCMS의 취약점인 CVE-2022-45782에 대한 개념 증명(PoC) 익스플로잇을 포함합니다.
토큰이 예측 가능하기 때문에 공격자는 이를 무차별 대입(brute-force)하거나 유도하여 관리자 계정의 비밀번호를 재설정할 수 있습니다.
이 PoC는 전체 익스플로잇 체인을 시연합니다:
이 저장소는 취약한 토큰 생성 함수를 크래킹하기 위한 크래커가 포함된 Git 서브모듈을 사용합니다.
이는 RandomStringUtils.randomAlphanumeric()에 의해 생성된 비밀번호 재설정 토큰을 유도/추측하는 데 사용되는 크래커의 C 구현입니다.
서브모듈과 함께 클론:
git clone https://github.com/alex91ar/randomstringutils.git
PoC가 작동하려면 dotCMS가 재설정 이메일을 보낼 수 있어야 합니다.
docker-compose.yml 편집:
DOT_MAIL_SMTP_USER: "<smtp_email>"
DOT_MAIL_SMTP_PASSWORD: "<smtp_pass>"
(Gmail 사용 시: 앱 비밀번호를 활성화하고 생성된 16자리 앱 비밀번호를 사용하세요.)
docker compose up
실패하면(첫 시작 시 흔함) 다시 실행하기만 하면 됩니다.
로그인 페이지: https://localhost:8443/dotAdmin/#/public/login
dotCMS 내부에서:
이 두 계정은 PoC에서 사용됩니다.
randomstringutils는 dotCMS의 안전하지 않은 토큰을 위한 무차별 대입/크래킹 도구입니다.
다음을 사용하여 컴파일:
cd randomstringutils
gcc -lpthread -O3 -o randomutils randomutils.c
이렇게 하면 빠른 토큰 크래커 바이너리가 생성됩니다.
python3 poc.py
성공하면 스크립트는 크래킹된 관리자 토큰을 사용하여 관리자 계정을 재설정합니다.
이 저장소는 교육, 학술 및 승인된 보안 테스트 목적으로만 제공됩니다. 소유하지 않거나 테스트할 명시적 권한이 없는 시스템에 이 익스플로잇을 사용하지 마십시오.