아임노드

Web Hacking > Cross Site Request Forgery (CSRF) 본문

[SK shieldus Rookies 23기] 공부 노트/Dreamhack 공부 기록

Web Hacking > Cross Site Request Forgery (CSRF)

Noody 2024. 12. 26.

 

ClientSide: CSRF  中

  • Cross Site Request Forgery (CSRF)
    • 사이트 간 요청 위조
    • 이용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격
    • 쉽게 말해 '사용자가 모르는 사이에 특정 동작을 실행시키도록 유도하는 방법'
  • XSS와 CSRF의 차이
    • 공통점
      • 모두 클라이언트를 대상으로 하는 공격
      • 이용자가 악성 스크립트가 포함된 페이지에 접속하도록 유도
    • 차이점
      • XSS는 인증 정보인 세션 및 쿠키 탈취를 목적으로 하는 공격
        (공격할 사이트의 오리진에서 스크립트를 실행)
      • CSRF는 이용자가 임의 페이지에 HTTP 요청을 보내는 것을 목적으로 하는 공격
        ( 공격자는 악성 스크립트가 포함된 페이지에 접근한 이용자의 권한으로 웹 서비스의 임의 기능을 실행할 수 있다.)

 

워게임 csrf-1 문제풀이 완료!

 

문제풀이 참고)

이 함수 부분을 확인해보면 userid가 admin이 아닌 경우에는 액세스가 거부된다.

즉 admin이면 액세스된다는 말이다.

 

csrf-1 공격 코드:
<img src="/admin/notice_flag?userid=admin" />

취약점 : 

/admin/notice_flag에 userid를 admin으로 보냄

127.0.0.1이라고 지정되어 있음

=> 이로 인해 admin_notice_flag() 함수에 if로 시작하는 코드들이 모두 성립

(액세스 거부 X)

 

 


 

워게임 csrf-2 문제풀이 완료

 

문제풀이 참고)

취약점 change_password() 엔드포인트 확인!

 

해당 코드를 삽입하게 되면

<img src="/change_password?pw=admin">

 

  1. 사용자가 이 페이지를 방문하면, 브라우저는 src 속성에 있는 URL을 자동으로 요청
  2. 요청에는 사용자의 세션 쿠키가 포함되며, 서버는 이를 정상적인 요청으로 처리
  3. 결과적으로, 사용자의 비밀번호가 공격자가 설정한 값(admin)으로 변경

변경된 패스워드 값으로 로그인하면 flag를 찾을 수 있다.