이번 문제는 Angular가 쓰이는 사이트에 xss해야합니다.
찾아본 바로는 Angular 가 쓰인 웹사이트에는 템플릿 인젝션을 통해서 xss를 성공시킬수 있다고합니다.
우선 웹사이트 소스를 보면 다음과 같습니다.
아무 문자열이나 입력해보면
다음과 같이 입력한 문자열을 찾는 사이트로 보이는데, 입력한 문자열을 사이트상에 띄웁니다.
이 부분이 뭔가 취약한 부분인것으로 보이는데, 이 부분의 소스코드를 보면
ng-non-bindable 태그가 쓰인것으로 확인되는데, 이 태그에서는 JS 코드를 삽입해도 작동하지 않고
현재 제가 알고있는 한 이 태그를 뚫어서 xss하는 방법은 찾지 못했으므로 일단 보류해놔야합니다.
검색창으로는 xss를 성공시키기 어려울것으로 판단되기 때문에 또다른 공격벡터인
URL을 조작해서 공격할수 있는 방법을 찾아봐야합니다.
이것은 이 사이트에서 쓰이는 JS 코드인데, 잘보면 UTM_PARAMS 라고 정의되어있는 문자열들이 보입니다.
utm 이란것이 뭔지 몰라서 찾아보니 다음과 같이 잘 정리된 블로그를 찾았습니다.
UTM Parameter, 너 대체 뭐냐 :: Marketigner (tistory.com)
utm 파라미터를 사용하면 웹사이트에 코드를 전송할수 있습니다.
그러므로 이 파라미터를 이용해서 xss 공격을 진행해야 합니다.
사이트 소스를 잘보면 다음과 같이 utm_term 과 utm_campaign 파라미터가 웹사이트에서 쓰일수 있다는것을 알수 있습니다.
그러므로 두가지 파라미터 중에서 하나를 골라서 사용하면 될것입니다.
그런데 Angular 가 쓰인 사이트에서 xss를 진행하려면
템플릿 인젝션 기법을 통해서 진행해야하는데 여기서는 그냥 alert함수를 넣는게 아닌
{{ alert() }}
다음과 같이 중첩 중괄호 안에 삽입하고자 하는 코드를 입력해야합니다.
이를 기반으로 쿼리를 짜보면 다음과 같습니다.
?utm_campaign={{alert(1)}}
이 쿼리를 주소 뒤에 입력하면 다음과 같이 성공적으로 xss 공격을 한것을 확인할수 있습니다.
'워게임 > xssgame.com' 카테고리의 다른 글
[xssgame] CSP (0) | 2022.06.07 |
---|---|
[xssgame] Angular 2 (0) | 2022.06.07 |
[xssgame] Google Reader (0) | 2022.06.07 |
[xssgame] Gallery (0) | 2022.06.06 |
[xssgame] Time's out! (0) | 2022.06.06 |