[normaltic 취업반 5기] 2024-01-17 12주차 과제 : 2번 과제 Get Admin 1

2024. 2. 7. 02:15normaltic 취업반 5기/과제

 

과제 목표

 

  • Get Admin 1 문제에서 사용자의 계정 생성과 동시에 생성되는 admin 계정을 탈취하라.

 

Get Admin 1 문제

 

 

1) Get Admin 1 문제 환경

 

  Get Admin 1 문제에서 주어진 웹 페이지는 다음과 같다.

 

  • http://ctf.segfaulthub.com:7575/csrf_1/ : 공격 수행 페이지
  • http://normaltic.com:5000/csrf_admin : 관리자 봇

 

[1] http://ctf.segfaulthub.com:7575/csrf_1/

 

http://ctf.segfaulthub.com:7575/csrf_1/ 초기화면

 

  해당 웹 페이지에서 admin의 계정을 탈취하는 공격을 수행한다.

 

 

[2] http://normaltic.com:5000/csrf_admin

 

http://normaltic.com:5000/csrf_admin 초기화면

 

  해당 웹 페이지에서는 admin 권한으로 접근하고자 하는 URL을 입력한다.

 

 

2) Get Admin 문제 공격 시나리오

 

  Get Admin 문제 공격 시나리오는 다음과 같다.

 

  1. 관리자의 계정을 탈취하는 것이 목표이므로 CSRF 공격으로 관리자 계정의 비밀번호를 변경하여 계정 탈취를 목표로 한다.
  2. 사용자 정보 변경은 주로 마이페이지에서 가능하며 해당 웹 페이지를 분석하여 보안 수준에 맞게 공격을 진행한다.
  3. CSRF 공격은 XSS 취약점과 연계하면 효과가 극대화되므로 XSS 취약점 포인트를 가능한 찾는다.
  4. XSS 취약점 포인트를 찾았다면 관리자가 해당 웹 페이지에 접근 시 공격이 수행되도록 스크립트를 작성한다.
  5. 스크립트 작성 후 관리자가 해당 웹 페이지에 접근하게 만들어 관리자 계정의 비밀번호를 변경한다.
  6. 관리자 계정으로 로그인 하여 플레그를 얻는다.

 

[1] http://ctf.segfaulthub.com:7575/csrf_1/mypage.php?user=vanhart

 

 

  본 문제에서 사용자 계정 정보를 확인 및 수정이 가능한 페이지다. Burp Suite를 통해 어떤 방식으로 비밀번호를 변경할 수 있는지 확인한다.

 

 

  비밀번호를 변경하기 위해 '변명할 비밀번호'칸에 변경할 비밀번호를 입력 후 'Update' 버튼을 클릭하면 /mypage_update.php 웹 페이지로 POST 메서드로 데이터를 전달한다. 이때 전달되는 파라미터들은 'id', 'info', 'pw'이며 변경할 비밀번호는 pw 파라미터에 저장되어 전달된다. 그렇다면 해당 웹 페이지의 메서드를 GET 메서드로 변경 후에도 정상 작동하는지 알아보도록 하자.

 

 

  해당 웹 페이지는 POST 메서드로 데이터를 전달하지만 GET 메서드로도 데이터가 전달되는 것이 확인되었으며 이는 곧 관리자 계정의 비밀번호를 공격자가 원하는 비밀번호로 변경하도록 하는 URL을 작성할 수 있다는 의미이다. 그렇다면 관리자 봇 웹 페이지에서 관리자가 http://ctf.segfaulthub.com:7575/csrf_1/mypage_update.php?pw=1234 형태의 URL에 접근하도록 한다.

 

에러 발생
회원 정보 수정 시 발생하는 알림창

 

  그 결과, 관리자가 중간에 알아차렸다는 에러가 발생한다. 해당 에러가 발생한 이유는 개인 정보가 변경되면 위 사진과 같이 회원 정보 수정에 성공했다는 알림창이 발생하기 때문에 관리자가 알아차리게 되기 때문이다. 그렇다면 직접적인 URL 접근으로는 해당 알림이 발생하므로 XSS 취약점과 연계하여 img 태그를 이용한 요청 공격을 하도록 한다.

 

[2] http://ctf.segfaulthub.com:7575/csrf_1/notice_list.php

 

 

  XSS 취약점을 찾기 위해 해당 웹 사이트에서 게시판인 /notice_list.php 웹 페이지에 접근한다. 

 

 

  글쓰기 버튼을 클릭 후 제목과 내용 입력칸에 [ >"<' ] 특수기호를 입력한 후 게시글을 작성한다.

 

 

  게시글을 Burp Suite로 확인해본 결과 입력한 특수기호들은 정상적으로 출력되는 것으로 보아 XSS 취약점 공격이 가능한 것으로 확인되었다.

 

[3] CSRF&XSS 공격 페이로드

 

 

  사전에 비밀번호 변경은 GET 메서드로 URL을 작성하여 요청이 가능하다는 것을 확인했으므로 공격 페이로드로 img 태그를 사용한다. XSS 취약점으로 인해 사용자가 해당 게시글에 접근한다면 img 태그로 인해 접근한 사용자 권한으로 해당 URL의 내용에 따라 서버에 요청을 하게 된다. 그렇게 된다면 접근한 사용자의 계정 비밀번호는 '1234'로 변경될 것이다.

 

CSRF&XSS 공격 게시글 URL
관리자 접속 성공

 

  작성된 게시글의 URL을 관리자 봇 웹 페이지에서 URL 입력란에 기입하고 'Visit'버튼을 클릭하면 관리자가 성공적으로 접속했다는 알림이 발생한다.

 

[4] 공격 수행 결과

 

 

  공격 수행의 결과를 확인하기 위해 로그인 페이지에서 관리자 계정으로 로그인을 시도한다.

 

 

  로그인에 성공하게 되면 해당 문제의 플레그를 획득할 수 있다.