이번시간은 Dreamhack 사이트의 워게임중 XSS Filtering Bypass 문제를 살펴보도록 하겠습니다!
[취약점 탐색]
1. 우선 메인페이지는 이런식으로 이루어져 있습니다. 한번 차례대로 살펴보겠습니다.
2. 우선 vuln(xss) page 를 클릭하니 이런 이미지가 나옵니다. 아마 xss 에 이용하라고 넣어둔 것 같습니다.
3. memo 를 클릭하니 이런 페이지가 나왔습니다. 아마 get요청으로 memo 파라미터에 넣은 값을 여기서 출력해주는건가 봅니다... 그러면 나중에 이 점을 이용하여 flag 값을 출력하도록 이용해볼 수 있을것 같습니다!
4. flag 페이지로 들어왔습니다. 아마 저기에 param 값을 넣고 제출을하면 admin 계정이 저 링크로 접속하는 방식인가 봅니다. 어느정도 페이지 구성은 알았으니 이제 소스코드를 한번 살펴보겠습니다.
5. 소스코드중 xss_filter 라는 함수 부분입니다. 여기서 script , on , javascript: 라는 문구를 공백으로 처리하여 필터링 하고있습니다. 하지만 공백 필터링은 scscriptript => script 같은 방식으로 우회가 가능하다는 취약점이 있습니다. 따라서 이점을 취약점 포인트로 생각해볼수 있습니다.
6. check_xss 함수를 보니 저희가 삽입한 param값과 사용자의 cookie 값을 가져오는가 봅니다.
7. 또 이 함수는 flag 페이지에서 사용되고 있는데 , 아마 admin의 쿠키값에 flag 가 있으니 알아내라 라는 뜻인가 봅니다..
<공격 시나리오>
1. vuln 페이지에 공백 필터링 우회를 이용하여 XSS 구문을 삽입한다.
2. XSS 구문을 통해 사용자의 cookie 값을 변수에 저장후 memo 페이지로 get요청을 보내게한다.
3. get요청시 memo 변수에 cookie 값을 포함하여 보내게 한다.
4. memo 페이지에 admin 의 쿠키값(flag) 가 적힐것이다!
[공격시도]
1. 우선 공백 필터링 취약점을 통해 script 구문이 삽입가능한 것을 POC코드로 확인했습니다.
2. 이후 아래와 같은 스크립트 구문을 작성한 후 vuln 페이지로 이동하였습니다.
<scrscriptipt>var data=document.cookie;var i=new Image();i.src='../memo?memo='+data;</scscriptript>
3. vuln 페이지에서 작성한 스크립트 구문을 입력한 후 제출 버튼을 클릭합니다!
4. 이후 memo 페이지로 와보면 admin의 쿠키값인 flag가 찍혀있는것을 확인하실 수 있습니다!
긴 글 읽어주셔서 감사합니다!
'워게임 문제풀이 > Dreamhack' 카테고리의 다른 글
[Dreamhack] Type c-j -write up (타입 저글링 기법) (0) | 2024.12.08 |
---|