[Dreamhack]wargame/WEB

[Dreamhack] Client Side Template Injection 문제

bigwhaleking 2024. 5. 12. 19:33

-코드 분석

먼저 add_header을 보면 CSP 설정이 되어 있고 nonce 값도 예상을 할 수가 없는 상황입니다.

그리고 https://ajax.googleapis.com 의 출처를 허용한다고 나와 있습니다.

https://ajax.googleapis.com 출처는 AngularJS 파일을 서빙할 때에도 사용되는 서버로 우리는 AngularJS 파일을 script 태그의 src로 사용한 후, Client Side Template Injection을 수행할 수 있습니다.

 

CSP 정책이 걸려 있기에 Client Side Template Injection을 이용할 것 입니다. 먼저 script 태그의 src로 로드할 AngularJS파일은 https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js 입니다. 해당 파일을 로드 하고 html 이나 body 태그 내에 ng-app 속성을 추가하여 AngularJS 사용함을 알릴 수 있습니다.

 

 

-Exploit

<html ng-app>{{ constructor.constructor("location='memo?memo='+document.cookie")() }}</html>

위에 코드를 하나 짜왔는데 이 코드 값으로 공격을 하게 된다면

 

flag 값이 출력이 되었습니다.