Iriton's log

[Dreamhack/Wargame] Lv.1 xss-1 본문

WebHacking/WarGame

[Dreamhack/Wargame] Lv.1 xss-1

Iriton 2023. 4. 10. 10:22

XSS(Cross Site Script)취약점

Web Application에서 사용자 입력 값에 대한 필터링이 제대로 이뤄지지 않을 경우 input 가능한 form에 script를 삽입하여 공격할 수 있는 것을 말한다.

 

 

 

문제 페이지 분석


vuln(xss) page부터 클릭해 봤더니

 

 

alert 창이 뜬다.

무슨 의미인진 모르겠어서 memo로 넘어갔다.

 

 

memo에 접속할 때마다 hello가 한 줄씩 추가되는 거 같다.

 

 

flag에 접속한 화면이다.

저 빈칸에 뭐가 들어가야 flag가 나올지 코드를 살펴 보자.

 

 

 

코드 분석


 

문제에서 XSS 취약점을 이용할 것을 요구했으니 app.route를 살펴봤다.

/memo는 html 파일에 기록하고 출력하면서 filtering 과정을 거치는데

/vuln은 입력된 param을 그대로 출력한다. 이게 XSS 취약점으로 보인다.

 

 

/flag에서 Flag가 출력될 것으로 예상되니 해당 코드부터 보자.

 

역시 Flag가 쓰이긴 한다. 조건문에서 check_xss라는 함수가 호출되고 이때 인자는 param, 파라미터 값이다.

 

 

check_xss 함수 분석

42) 인자는 param, cookie이다.

43) url은 127.0.0.1:8000/ 즉, localhost(or loopback) 주소로 접속하고, 인자로 전달받은 param을 인코딩한 것을 파라미터 값으로 지정한다.

44) read_url 함수를 호출한다.

 

read_url 함수 분석

16) 인자는 url, cookie

31~33) localhost 주소로 접속 후, 전달 받은 cookie 값을 쿠키로 추가하여 인자로 전달 받은 url에 접속한다. 이때 cookie는 flag 값이다.

 

 


/flag 에서 xss를 공격하여 로컬호스트 환경에 추가된 FLAG 값을 출력하도록 하면 된다.

memo 페이지로 매개변수를 전달하여 FLAG를 작성하도록 할 것이다.

 

따라서 /flag에서 script구문을 POST 하면 된다. 

(location.href가 아닌 window.open을 활용해도 된다.)

xss: <script>window.open('http://127.0.0.1:8000/memo?memo='+document.cookie)</script>

 

script 전송 후, /memo로 이동하면 실행된 함수들(check_xs, read_url)에 의해 cookie에 추가된 flag값이 출력된 걸 확인할 수 있다.

 

 

'WebHacking > WarGame' 카테고리의 다른 글

[Dreamhack/Wargame] Lv.1 command-injection-1  (0) 2023.04.10
[Dreamhack/Wargame] Lv.1 xss-2  (0) 2023.04.10
[Dreamhack/Wargame] Lv.1 session-basic  (0) 2023.04.07
[Dreamhack/Wargame] Lv.1 cookie  (0) 2023.04.07
[Dreamhack/Wargame] Lv.1 session  (0) 2023.04.05
Comments