TeamH4C

[빡공팟 5기] W7 : CSP Bypass Write-up

이유갬 2022. 11. 6. 23:52

[ 문제 풀이 ]

- 3개의 메뉴가 존재하는 초기 화면입니다.

- 한번 3개의 메뉴를 다 눌러서 확인해보겠습니다.

- 파라미터로 이미지 태그가 삽입된 것을 볼 수 있습니다.

- 한번 이미지 태그를 이용하여 onerror 속성의 이벤트가 발생하는지 확인해보았습니다.

- onerror 속성의 이벤트가 발생하지 않음을 볼 수 있습니다.

- memo 페이지에서 memo=의 파라미터 값이 그대로 텍스트로 출력되는 것을 볼 수 있습니다.

- 태그를 입력해도 그대로 텍스트로 출력됩니다.

- flag 페이지에 들어간 모습입니다.

- 입력폼에 적절한 태그를 삽입한 공격 URL 을 삽입하여 제출하면 POST 메소드로 서버에 param 이라는 이름으로 전송됩니다.

- 이제 소스 코드를 분석해보겠습니다.

- "Content-Security-Policy" 에 정책이 등록되어 있습니다.

default-src 'self';
img-src https://dreamhack.io; 
style-src 'self' 'unsafe-inline';
script-src 'self' 'nonce-{nonce}'

- 정책이 위와 같이 구성되어 있습니다.

- nonce-{nonce} 구문이 많이 보여 이를 예상하여 공격을 해야하나 싶었지만 난수를 예측하는 건 어렵습니다.

- 그렇다면 script-src 의 'self' 를 이용하는 게 그나마 쉬워보였습니다.

- vuln 페이지를 이용하여 'self' 를 이용할 수 있는지 확인해보았습니다.

- 이렇게 vuln 페이지에서 'self' 를 이용하여 스크립트 태그를 실행 시킬 수 있었습니다. -> 오른쪽과 같은 건 작동되지 않습니다. 

- 그렇다면 해당 페이지를 src 로 설정하여 쿠키를 탈취 할 수 있을 것 같습니다!

<script src="/vuln?param=document.location='/memo?memo='%2bdocument.cookie"></script>

- 위와 같은 URL 을 생성하였고, 제출해보았습니다.

- 성공적으로 플래그를 획득했습니다!