PentesterLab의 ObjectInputStream 문제에 대한 접근 방법을 기록
이번 문제는 Java 객체를 사용하는 Spring으로 이루어진 웹 애플리케이션이다. 이 문제는 사용자로부터 전달되는 직렬화된 데이터를 역직렬화하는 과정에서 ObjectInputStream.readObject() 함수를 사용하는 과정에서 RCE가 발생할 수 있다는 점을 이용한다.
로그인 페이지에서 제공하는 기본 계정으로 로그인할 경우 Cookie에 auth 값으로 직렬화된 오브젝트로 추정되는 값을 확인할 수 있다.
\xac\xed\x00 (base64)-> rO0
payload 생성을 위해 Java 역직렬화 취약점 페이로드 제작도구인 ysoserial을 사용한다(우리는 이미 해당 사이트가 Spring을 사용하는 것을 알기에 Spring 페이로드를 사용!😎)
해당 페이로드를 Cookie 내 auth에 삽입하여 전달할 경우 ObjectInputStream.readOjbect에 전달되면서 RCE가 발생한다.