
Apache Tapestry에 영향을 미치고 인증되지 않은 원격 코드 실행으로 이어지는 CVE-2021-27850에 대한 개념 증명(PoC)입니다.
CVE-2021-27850은 Apache Tapestry의 모든 최신 버전에서 발견된 중요한 인증되지 않은 원격 코드 실행 취약점입니다. AppModule.class 파일을 다운로드함으로써 Apache Tapestry에서 모든 직렬화된 객체에 서명하는 데 사용되는 HMAC 비밀 키를 유출할 수 있습니다.
우리는 실제 평가에서 이 CVE를 발견했습니다. 제가 아는 한 Tapestry가 직렬화된 객체에 서명하는 방법에 대한 공개적인 익스플로잇이 없었기 때문에, 오랜 시간 Apache Tapestry 소스 코드를 분석한 후 사용했던 다음 POC를 공개하기로 결정했습니다 x) .
제 선배인 Fares님께 감사드립니다.
1- 이 저장소를 클론하세요
2- 다음 명령을 실행하세요
javac -classpath commons-codec-1.15/commons-codec-1.15.jar:. Exploit.java
3- 마지막으로 다음을 실행하세요:
java -cp commons-codec-1.15/commons-codec-1.15.jar:. Exploit [Tapestry Key] [Ysoserial Payload] [Command To Execute]
여기서 [Tapestry Key]는 AppModule.class에서 유출된 Hmac 키이고, [Ysoserial Payload]는 ysoserial에서 사용하려는 페이로드이며, [Command To Execute]는 실행하려는 명령입니다.

참고: 일반적인 Java 역직렬화 익스플로잇에서는 실행할 수 있는 명령이 제한되지만(파이프나 특수 문자 사용 불가 등), 여기서는 명령을 실행하기 전에 sh -c $@|sh . echo 를 추가하므로 원하는 복잡한 명령을 모두 사용할 수 있습니다.
참조: