1. 분석
serialize 함수
-serialize 함수란 객체를 직렬화하여 전송 가능한 형태로 만드는 것을 의미합니다. 객체의 연속적인 데이터로 변환하여 stream을 통해 전달이 됩니다.
unserialize 함수
-unserialize 함수란 직렬화된 임의의 코드 데이터를 전달받게 되면 deserialize하면서 실행 가능한 javascript 코드로 바꿔 줍니다.
참고
https://wrkholic84.github.io/assets/images/posts/20180514NodeJSRCE/NodeJSRCE.pdf
2. 코드 분석
-profile 쿠키 값을 base64로 인코딩 한 후 문자열로 변환해 주고 있습니다.
-Base64로 인코딩 해준 값을 unserialize 함수를 통해서 역직렬화를 진행합니다.
-unserialize 함수를 사용하는 이 곳에서 IIFE(Immediately Invoked Function Expressions)를 이용해 임의의 코드를 전달하면 임의의 코드를 실행시킬 수 있습니다.
3. exploit
RCE가 일어 났을 때 curl 옆에 적인 서버로 flag 값이 오도록 해줍니다.
이 코드를 실행 시켜 직렬화 시킨 결과 값 끝에 괄호를 가해 IIFE javascript 함수로 선언했습니다.
이제 이 값을 base64로 인코딩을 해줍니다.
쿠키값을 적용하고 새로고침을 해준다면 지정된 서버에 flag 값이 있을 것 입니다.
'[Dreamhack]wargame > WEB' 카테고리의 다른 글
[Dreamhack] CProxy: Inject 문제 (0) | 2024.10.06 |
---|---|
[Dreamhack] EZ_command_injection 문제 (0) | 2024.09.13 |
[Dreamhack] easy-login 문제 (0) | 2024.09.07 |
[Dreamhack] baby-Case 문제 (0) | 2024.09.03 |
[Dreamhack] [wargame.kr] jff3_magic 문제 (0) | 2024.09.03 |