Chapter 10. XSS 요청 변조(CSRF) 공격
CSRF 공격 개요
- CSRF의 취약점의 공격 방법은 공격자가 피싱을 이용하여 공격 대상이 링크에 정상적인 접속하도록 하여 웹사이트의 어떤 기능을 실행하게 하는 것
CSRF 공격 실습
- DVWA -> Vulnerability: CSRF에 패스워드 값으로 test 입력했을 때 버프수트에 잡히는 내역
- 사용자가 로그인되어 있을 때에는 웹 페이지를 요청할 때마다 쿠키가 웹 브라우저에 의해 자동으로 전달됨 -> 로그인된 웹 사이트의 링크를 누르게 만들면 쿠키를 전달시킬 수 있음
- 어떤 정보를 변경하는 요청 메시지에 쿠키 이외에는 랜덤한 값이 없으면 CSRF에 취약할 수 있음
|
- 1번 부분에서는 요청 url과 파라미터가 똑같이 구성되어 있고, 2번 부분에서는 withCredentials 속성을 true로 설정하여, 요청이 전송될 때 웹 브라우저가 쿠키를 자동으로 같이 전송하도록 함
- 실습에 앞서 15번째 줄 host를 dvwa의 ip 주소로 변경하고 /var/www/html 디렉토리로 옮김
http://localhosy/csrf.html |
- 주소창에 해당 명령어를 입력했을 때 출력되는 페이지
- click 링크를 눌렀을 때 http history를 통해 기록을 확인하면 password가 hacker로 변경된 것을 확인할 수 있음
- 또한 응답코드가 200으로 변경되어 있으면 패스워드가 정상적으로 변경된 것임
CSRF 공격 대응
1. 요청 메시지의 레퍼러 헤더(해당 요청을 링크하고 있던 이전 웹 페이지의 주소를 알려주는 헤더)를 검사하여, 웹 메일이나 타 사이트에서 피싱을 당해 전송되는 요청을 실행하지 않는 것
2. CSRF 토큰(CSRF 공격 대응을 위해 포함시키는 랜덤한 값) 사용
- 웹 애플리케이션이 CSRF 토큰을 매 응답마다 랜덤하게 생성하여 히든 폼 필드를 통해 클라이언트에게 전송
- 클라리언트는 이전 응답 메시지에 포함된 토큰 값을 다음 요청 시 포함시켜 전송
- 웹 애플리케이션이 CSRF 토큰 값을 검사하면, 정상적인 과정을 통해 전달된 요청인지 확인할 수 있음
해당 포스팅은 '화이트해커를 위한 웹 해킹의 기술' 책 내용을 바탕으로 작성되었습니다.
'보안' 카테고리의 다른 글
Chapter 12. 파일 업로드 공격 (0) | 2019.03.03 |
---|---|
Chapter 11. 파일 인클루전 공격 (0) | 2019.03.03 |
Chapter 09. XSS 공격 (0) | 2019.03.01 |
Chapter 08. Command 인젝션 공격 (0) | 2019.02.28 |
Chapter 07. SQL 인젝션 공격 (0) | 2019.02.28 |
댓글