
Apache Tapestry에 영향을 미치고 인증되지 않은 원격 코드 실행으로 이어지는 CVE-2021-27850에 대한 개념 증명.
CVE-2021-27850은 최신 버전의 Apache Tapestry에서 발견된 중요한 인증되지 않은 원격 코드 실행 취약점으로, AppModule.class 파일을 다운로드하여 Apache Tapestry에서 모든 직렬화된 객체를 서명하는 데 사용되는 HMAC 비밀 키를 유출할 수 있습니다.
우리는 실제 평가에서 이 CVE를 발견했으며, 제가 알기로는 Tapestry가 직렬화된 객체를 서명하는 방법에 대한 공개 익스플로잇이 없었기 때문에 Apache Tapestry 소스 코드를 오랫동안 파헤친 후 사용한 다음 POC를 게시하기로 결정했습니다 x).
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 .
참고 문헌: