보안

Chapter 10. XSS 요청 변조(CSRF) 공격

qbang 2019. 3. 1. 15:51

 

Chapter 10. XSS 요청 변조(CSRF) 공격

 

CSRF 공격 개요

 

- CSRF의 취약점의 공격 방법은 공격자가 피싱을 이용하여 공격 대상이 링크에 정상적인 접속하도록 하여 웹사이트의 어떤 기능을 실행하게 하는 것

 

 

 

CSRF 공격 실습

 

 

 

- DVWA -> Vulnerability: CSRF에 패스워드 값으로 test 입력했을 때 버프수트에 잡히는 내역

 

- 사용자가 로그인되어 있을 때에는 웹 페이지를 요청할 때마다 쿠키가 웹 브라우저에 의해 자동으로 전달됨 -> 로그인된 웹 사이트의 링크를 누르게 만들면 쿠키를 전달시킬 수 있음

 

- 어떤 정보를 변경하는 요청 메시지에 쿠키 이외에는 랜덤한 값이 없으면 CSRF에 취약할 수 있음

 





 

 

 

- 1번 부분에서는 요청 url과 파라미터가 똑같이 구성되어 있고, 2번 부분에서는 withCredentials 속성을 true로 설정하여, 요청이 전송될 때 웹 브라우저가 쿠키를 자동으로 같이 전송하도록 함

 

 

 

- 실습에 앞서 15번째 줄 hostdvwaip 주소로 변경하고 /var/www/html 디렉토리로 옮김

 

http://localhosy/csrf.html

 

 

 

- 주소창에 해당 명령어를 입력했을 때 출력되는 페이지

 

 

 

- click 링크를 눌렀을 때 http history를 통해 기록을 확인하면 password hacker로 변경된 것을 확인할 수 있음

 

- 또한 응답코드가 200으로 변경되어 있으면 패스워드가 정상적으로 변경된 것임

 

                                                    

 

CSRF 공격 대응

 

1. 요청 메시지의 레퍼러 헤더(해당 요청을 링크하고 있던 이전 웹 페이지의 주소를 알려주는 헤더)를 검사하여, 웹 메일이나 타 사이트에서 피싱을 당해 전송되는 요청을 실행하지 않는 것

 

2. CSRF 토큰(CSRF 공격 대응을 위해 포함시키는 랜덤한 값) 사용

 

- 웹 애플리케이션이 CSRF 토큰을 매 응답마다 랜덤하게 생성하여 히든 폼 필드를 통해 클라이언트에게 전송

 

- 클라리언트는 이전 응답 메시지에 포함된 토큰 값을 다음 요청 시 포함시켜 전송

 

- 웹 애플리케이션이 CSRF 토큰 값을 검사하면, 정상적인 과정을 통해 전달된 요청인지 확인할 수 있음

 

해당 포스팅은 '화이트해커를 위한 웹 해킹의 기술' 책 내용을 바탕으로 작성되었습니다.