본문 바로가기

보안/웹해킹

[Dreamhack] 1단계 - xss-1

해당 실습은 Dreamhack에서 제공되는 가상환경에서 진행되었습니다.

사전 동의 없는 불법 침입, 수색, 분석 등의 행위는 불법이니 꼭 명심하시길 바랍니다.

 

이번 실습은 단편적인 예시지만, 실제로는 다양한 방법으로 발생할 수 있는 취약점이다.

풀이는 개인이 이해한 내용으로 작성하였기에 잘못된 부분이 있다면 지적 부탁드립니다.

 

Step 1)

Stage 4의 '함께실습'에 설명이 포함되어 있는 문제이다.


Step 2)

접속 정보를 받아 접속해보면 확인할 수 있는 각 페이지들은 다음과 같다.

다운로드한 문제 파일을 열어 소스코드와 같이 확인해 보면 동작한 결과를 이해할 수 있다.

문제 파일(소스코드)

① 메인 페이지에 해당하는 코드. 설명이 굳이 필요 없을 듯하다.

메인 페이지

② vuln(xss) 페이지에 해당하는 코드. param 인자를 가져와 화면에 표시해 주는데 스크립트 구문을 받아 alert를 띄움.

vuln(xss) 페이지

③ flag 페이지에 해당하는 코드. 요청 메서드에 따라 GET이면 flag.html, POST면 check_xss 함수를 호출한다.

    check_xss 함수에서는 read_url 함수를 호출하는데, 호출 전 url을 보면 vuln 페이지로 이동하는 것 같다.

flag 페이지

④ memo 페이지에 해당하는 코드. memo 인가를 가져와 화면에 기록된 memo_text를 출력한다.

memo 페이지


Step 3)

소스코드를 보면 flag 페이지에서 POST 메서드 통신 시 check_xss 함수를 호출하고 진행되는 과정에서 쿠키 값이 생성되는 것으로 보인다.

flag 페이지에서 POST로 전달 시 vuln 페이지로 param 인자가 넘어가는데, 여기가 XSS 취약한 페이지임을 이용하여 쿠키 값을 탈취할 수 있도록 시도한다.

<script>location.href="https://127.0.0.1:8000/memo?memo=hello"+document.cookie;<script>


Step 4)

로컬 서버(실습 서버)의 memo페이지로 이동하면서 쿠키 값을 남기도록 스크립트 구문을 삽입한 결과,

memo페이지로 이동해 보면 쿠키 값이 출력되어 있다.

여기서는 제공된 환경의 memo페이지 기능을 이용하였지만, 만약 개인 서버가 따로 있다면 로컬 서버가 아닌 개인 서버에서도 확인이 가능하며 DreamHack에서 제공해 주는 툴 중 'Request Bin'을 이용하여도 확인이 가능하다.

 

'보안 > 웹해킹' 카테고리의 다른 글

[Dreamhack] 1단계 - xss-2  (0) 2023.05.24
[Dreamhack] 1단계 - session-basic  (0) 2023.05.16
[Dreamhack] 1단계 - devtools-sources  (0) 2023.05.16
[Dreamhack] 1단계 - cookie  (0) 2023.05.08