본문 바로가기
공부/해킹 과제

CSRF 1

by TILDA_16 2023. 5. 19.

CSRF(Cross Site Request Forgery)

 

피해자가 자신의 의도와는 다르게, 자신도 모르게 서버로 임의의 요청을 하게 만드는 공격

 

의도하지 않았던 요청을 서버에 보내는 공격

 

피해자의 세션을 활용 -> 피해자가 로그인을 한 상태(게시판, 메일함)

 

어디서 발생할까?

 

모든 요청에서 발생한다 -> 민감한 요청(비밀번호 변경, 이메일주소 변경, 관리자 계정 등록 등)

 

생각보다 의외로 많이 일어난다.

 

CSRF 공격 방법

 

1. GET 방식으로 처리가 되는지 확인

 

GET 방식으로 처리가 되면 매우 편하다.

 

URL링크를 공격 링크로 만들어서 공격을 하면 된다.

 

2. POST Method

 

POST Method만 지원하는 곳은 XSS 취약점을 같이 활용해서 공격을 한다.

 

<iframe width="0" height="0" border="0" name="stealthframe" id="stealthframe" style="display: none;">

</iframe>

<form method="POST" action="주소" target="stealthframe">
<input type="hidden" name="email" value="test@test.com">
</form>
<script>
document.forms[0].submit();
</script>

 

iframe과 form 태그를 이용해서 공격을 한다.

 

버튼을 클릭하는 것이 아닌 링크만 눌러도 알아서 적용이 된다.

 

3. Referer Check

 

Referer : 이 요청이 어디에서 한 건지 알려줌

 

Referer Check가 제대로 작동하면 우회하지 못함

 

간혹 가다 Referer가 있으면 체크하고 없으면 체크하지 않고 넘어가는 경우가 있다.

 

비밀번호 변경 요청
if referer 헤더가 있으면
-> 검사 시작
else referer 헤더가 없으면
-> 그냥 진행

 

referer를 사용 안 하는 방법

 

<meta name="referer" content="no-referrer">

 

위의 코드를 넣으면 referer가 안 나온다.

 

4. CSRF Token

 

토큰을 받아오게 해서 넣어 보낸다.

 

로그인할 때 세션에 토큰을 추가시켜서 CSRF를 방지한다.

 

하지만 이것도 토큰값을 가져와서 우회가 가능하다.

 

 

'공부 > 해킹 과제' 카테고리의 다른 글

CSRF 1, 2, 3 문제풀이  (0) 2023.05.30
CSRF와 SSRF  (0) 2023.05.26
XSS 정리  (0) 2023.05.19
XSS 2  (0) 2023.05.13
XSS 1  (0) 2023.05.05