워게임/xssgame.com

[xssgame] Angular

name2965 2022. 6. 7. 18:42
728x90

 

 

이번 문제는 Angular가 쓰이는 사이트에 xss해야합니다.

 

찾아본 바로는 Angular 가 쓰인 웹사이트에는 템플릿 인젝션을 통해서 xss를 성공시킬수 있다고합니다.

 

우선 웹사이트 소스를 보면 다음과 같습니다.

 

 

 

 

아무 문자열이나 입력해보면

 

 

 

다음과 같이 입력한 문자열을 찾는 사이트로 보이는데, 입력한 문자열을 사이트상에 띄웁니다.

이 부분이 뭔가 취약한 부분인것으로 보이는데, 이 부분의 소스코드를 보면

 

 

 

ng-non-bindable 태그가 쓰인것으로 확인되는데, 이 태그에서는 JS 코드를 삽입해도 작동하지 않고

현재 제가 알고있는 한 이 태그를 뚫어서 xss하는 방법은 찾지 못했으므로 일단 보류해놔야합니다.

 

검색창으로는 xss를 성공시키기 어려울것으로 판단되기 때문에 또다른 공격벡터인

URL을 조작해서 공격할수 있는 방법을 찾아봐야합니다.

 

 

이것은 이 사이트에서 쓰이는 JS 코드인데, 잘보면 UTM_PARAMS 라고 정의되어있는 문자열들이 보입니다.

 

 

utm 이란것이 뭔지 몰라서 찾아보니 다음과 같이 잘 정리된 블로그를 찾았습니다.

 

UTM Parameter, 너 대체 뭐냐 :: Marketigner (tistory.com)

 

UTM Parameter, 너 대체 뭐냐

아마 광고를 세팅할 때 가장 공을 들이는 작업 중 하나. UTM Parameter 라벨링 작업. 처음에는 나도 대체 요놈이 뭔가 이름도 생소하고 어렵고 그랬는데, 요놈이 트래킹을 하는 데 있어서 얼마나 중

bigiron.tistory.com

 

 

utm 파라미터를 사용하면 웹사이트에 코드를 전송할수 있습니다.

그러므로 이 파라미터를 이용해서 xss 공격을 진행해야 합니다.

 

 

 

사이트 소스를 잘보면 다음과 같이 utm_term 과 utm_campaign 파라미터가 웹사이트에서 쓰일수 있다는것을 알수 있습니다.

그러므로 두가지 파라미터 중에서 하나를 골라서 사용하면 될것입니다.

 

그런데 Angular 가 쓰인 사이트에서 xss를 진행하려면

템플릿 인젝션 기법을 통해서 진행해야하는데 여기서는 그냥 alert함수를 넣는게 아닌

 

{{ alert() }}

다음과 같이 중첩 중괄호 안에 삽입하고자 하는 코드를 입력해야합니다.

 

 

이를 기반으로 쿼리를 짜보면 다음과 같습니다.

 

 

?utm_campaign={{alert(1)}}

 

 

 

이 쿼리를 주소 뒤에 입력하면 다음과 같이 성공적으로 xss 공격을 한것을 확인할수 있습니다.

 

 

728x90

'워게임 > 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