CSRF
XSS? CSRF? SSRF?
XSS : 공격자가 다른 클라이언트를 대상으로 악성 스크립트를 실행시키는 취약점
CSRF : 공격자가 다른 클라이언트의 권한으로 대상 서비스(서버)에 악의적인 요청을 실행시키는 취약점
SSRF : 공격자가 공격대상 서버에게 다른서버나 내부시스템을 대상으로 악의적인 요청을 실행시키는 취약점
CSRF 발생 원인
희생자 권한으로 요청하게 될 폼에서 사용자별로 토큰을 사용하지 않거나 예측이 가능할 때 발생한다.
1. 위조요청을 보낼 서비스(ex 페이스북)에 희생자가 로그인된 상태
2. 해커의 피싱사이트에 접속 또는 대상 서비스에 존재하는 XSS
-> URL을 클릭하도록 유도하거나 강제로 요청하게 할 수 있는 환경
<form action="http://facebook.com/api/content" method="post">
<input type="hidden" name="body" value="여기 가입하면 돈 10만원 드립니다." />
<input type="submit" value="Click Me"/>
</form>
CSRF 공격을 수행하기 위해서 XSS 기법을 사용하는것이라고 보면 된다.
대응방안
referer 검증
피싱사이트에서 임의로 제작한 Request에 의해 발생하는 CSRF를 전부 막을 수 있다.
풀 referer를 검증하는것이 아닌 포함되어 있는지만 검증한다면
XSS 공격이 포함된 주소를 http://attacker.com/xss_vuln_page.www.safe.com.jsp
이런식으로 페이지명을 만들어버리면 된다.
도메인 자체를 검증한다고 하더라도 동일 도메인에서 발생하는 XSS는 방어할 수 없다.
-> referer를 페이지단까지 검증하면된다.
csrf 토큰
로그인 시 또는 작업화면 요청 시 예측이 불가능한 랜덤한 토큰 값을 사용자의 세션에 저장하여 요청마다 난수값을 포함해서 전송시킨다.
이후 back-end단에서는 요청을 받을때마다 발급해준 토큰값과 요청 파라미터로 받은 토큰값이 일치하는지 검증한다.
랜덤한 토큰값이지만 동일 도메인 내에 발생하는 XSS에 대해서는 방어할 수 없다.
ajax로 request해서 토큰값을 알아온 후 Request에 포함시켜 공격하면 된다.
원리는 화이트해커가 어쩌고 강의 유데미꺼엿나 그거보면됨
CSRF 공격이란? 그리고 CSRF 방어 방법
CSRF 공격(Cross Site Request Forgery)은 웹 어플리케이션 취약점 중 하나로 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 만드는..
itstory.tk