CSRF 공격
Croos Site Request Forgery
사이트 간 요청 위조
피싱을 활용해 사용자 모르게 패스워드 변경
옥션 해킹 사건에서 사용된 공격기법
이 공격 기법은 로그인이 된 상태라는 전제를 깔고 하는 공격 기법이다
로그인된 상태에서만 세션쿠키 값이 요청에 자동으로 포함될 수 있기 때문
세션쿠키가 요청에 추가되어야만 사이트가 이 사용자는 로그인 되어있으니 믿을만 하겠다고 판단하여
그 요청을 실행하기 때문
HTTP_REFERER 변수는 레퍼러 헤더를 검사하는 부분임
레퍼러 헤더는 어떤 요청이 전송 될 때 이전에 어떤 경로로부터 요청되었는지 알려주기 위해
웹브라우저가 자동으로 설정하는 헤더이다
레퍼러가 서버주소와 동일한지 비교해야하는데 이 값이 틀리면 차단함으로써 csrf을 어느정도 대응할 수 있다
csrf가 웹서버 자체에서 실행이 된다면 레퍼러 헤더에 서버주소가 설정되기 때문에 이 서버주소가 레퍼러에 있는지는
우회될 수 있다
eregi 이 함수는 앞의 문자열이 뒤의 문자열에 포함이 되어있는지 확인하는 코드
즉 서버주소가 레퍼러 안에 포함되어있는지 체크하는 것
근데 이경우는 단순히 서버주소가 포함되기만 하면 되기 때문에 공격파일에 서버주소를 넣어보면된다
csrf.html 을 csrf_localhost.html 으로 변경해준다
referer헤더를 비교할때에는 앞에서부터 정확하게 referer에있는 주소부분이 서버주소가 맞는지 체크해야함
high 단계를 보자
여기서는 user_token이 추가되었음을 확인할 수 있다
이것을 csrf token 이라고도 하는데 웹페이지가 요청될 때마다 token값이 바뀐다
req1함수에서 유저토큰을 알아내기위해 첫번째 요청을 보냄
req2함수 내에서 첫번째 요청을 분석하여 유저토큰을 뽑아내 포함시켜 보냄
이로써 우회해서 csrf공격이 가능해진다
impossible 단계에서는
현재 비밀번호 칸이 생겼다
이렇게되면 해커가 기존 비밀번호를 알고있지않은 한 csrf공격을 할 수 없다
하지만 XSS공격이 취약하다면 이것 또한 의미가 없으므로 XSS공격도 대비해야한다