해킹 공부/웹 해킹

Dreamhack_csrf-2(CSRF 취약점)

O'bin 2022. 2. 5. 18:47

<문제 링크>

https://dreamhack.io/wargame/challenges/269/

 

csrf-2

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. Reference Client-side Basic

dreamhack.io

 

 

<나의 풀이 기록>

 

 1.  소스코드 내 사용자 정보 확인

 

주어진 소스코드 내용 중 사용자에 대한 정보가 있다.
id/pw가 guest/guest, admin/찾아야 할 flag값인 두 사용자의 정보이다.
이것을 이용해 로그인을 시도해 보기로 했다. 

 

 

 

 

 

 2.  admin으로 로그인 위한 pw 알아내기

 

login에 들어가서 guest/guest로 로그인 한 결과이다.
flag를 획득하려면 admin으로 로그인해야 하는 것 같다.

 

 

 

 

 

문제에서 주어진 소스코드 중 아래쪽에 해결의 실마리가 있다.
비밀번호를 변경하는 함수인데, pw값을 받아 pw에 넣고
요청한 클라이언트의 session id를 받아 session_storage에 있는 정보와 비교하는 것으로 보인다.(아닐수도)

 

 

 

 

 

 3.  img 태그 이용해 CSRF 공격 코드 작성, 입력

 

드림핵 CSRF강의 중 왼쪽과 같은 내용이 있었다. 
img나 form태그를 사용해 요청을 보내면 cookie에 이용자의 인증 정보가 포함된다고 한다. 따라서 나는 이 중 img태그를 사용해서 공격하고자 한다.

 

 

 

 

 

 

 

 

 

주어진 웹페이지에서 flag에 들어가서 공격코드를 입력하면 된다.

<img src="/change_password?pw=비밀번호"> 가 내가 사용한 공격코드이다.

id가 admin인 사용자의 pw를 '비밀번호'로 변경하는 코드로,

비밀번호 부분에는 원하는 것을 집어넣으면 된다.

난 id와 똑같이 admin을 넣었다.  →  <img src="/change_password?pw=admin">

 

 

 

 

 4.  공격 성공, 플래그 획득

 

공격코드를 입력하고 제출 버튼을 누르면 왼쪽과 같은 창이 뜨며 성공했음을 알 수 있다.

 

 

 

 

 

Home으로 돌아와서 보면 admin으로 로그인 되어 플래그를 획득했다.

 

 

 

 

 

flag : DH{c57d0dc12bb9ff023faf9a0e2b49e470a77271ef}

 

 

 

 

<풀이 요약>

 1.  소스코드 내 사용자 정보 확인
 2.  admin으로 로그인 위한 pw 알아내기(change_password())
 3.  img 태그 이용해 CSRF 공격 코드 작성, flag페이지에서 공격 코드 입력
 4.  공격 성공, 플래그 획득

 

 

 

<이 문제를 통해 배운 것>

CSRF 취약점 공격의 기본 원리와 방법

img 태그와 form 태그로 HTTP 요청 전송 시 포함되는 정보

소스코드 분석 통해 CSRF 공격으로 원하는 정보 획득 방법

 

HTML과 Javascript를 얼른 공부해야겠다. 얼렁뚱땅 대충 해석은 되지만 자세히 이해하지 못해 문제를 해결해도 얻는 것이 적은 것 같다. 

'해킹 공부 > 웹 해킹' 카테고리의 다른 글

Dreamhack_command-injection-1  (0) 2022.02.13
Dreamhack_csrf-1(CSRF 취약점)  (0) 2022.02.05
dreamhack xss-2(XSS 방화벽 우회)  (0) 2022.01.30
dreamhack xss-1(XSS 취약점)  (0) 2022.01.30
Dreamhack_session-basic(SessionId)  (0) 2022.01.23