CSRF(Cross Site Request Forgery, 요청위조)
: 피해자의 세션을 활용하여 피해자 모르게 피해자가 요청을 하도록 하는것.
요청을 보내는 어느곳이든 발생이 가능하다. 그 위험도의 차이만 있을 뿐이다.
민감한 요청의 예시는 아래와 같은 곳이 있다
ex) 비밀번호 변경, 이메일 주소 변경, 관리자 계정 등록...
CSRF 취약점 확인
1) Method가 GET인지, 아니면 GET으로 바꿀 경우 정사적으로 요청이 처리되는지 확인. -> URL을 이용한 CSRF사용 가능
2) GET으로 요청의 처리가 이루어지지 않을 경우 XSS취약점을 활용
<iframe width="0" hight="0" border"0" name"stealthframe" id="stealthframe" style="display:none;">
</iframe>
//보이지 않는 iframe창을 띄움
<form matod="POST" action="URL" target="stealthframe">
//타겟으로 stealthframe으로 지정
<input type="hidden" name="email" value="변경하고싶은것" >
</form>
<script>
documet.form[0].submit();
</script>
//버튼을 누를 필요가 없음.
위 코드와 같이 iframe으로 보이지 않는 창에서 요청을 주고받을 수 있음
3) ReferrerChack
Referer : 이 요청이 어디로부터 온건지 확인하는 것.
이 Referer Check가 잘 되면 우회가 안된다.
다만 referrer가 없을경우 체크를 하지 않는 경우가 있다. 이때는 아래와 같은 코드를 통해 우회 가능하다.
<meta name="referrer" content="no-referrer">
//referrer가 없는상태로 보내짐
4) CSRF Token
: CSRF를 막기 위해 발행하는 Token 페이지 입장시에 input 태그 내에 hidden속성으로 랜덤한 Token을 발행하고 서버에 저장을 해놓는다. 만약 요청이 왔을떄 이 토큰값이 유효한지를 검사한다.
이 토큰을 우회하는 방법은 iframe으로 토큰 발행 페이지로 들어가 토큰을 받은 뒤 JS코드를 통해서 그 코드를 iframe밖으로 꺼내와 사용하면 된다.
CSRF를 근본적을 막는 방법중에 대표적인것이 비밀번호 변경페이지에서 비밀번호를 확인하는 것이다.
이는 공격자가 비밀번호를 알아야하기 때문에 비밀번호 변경을 못하기 때문에 유효하다.
'모의해킹 및 보안' 카테고리의 다른 글
파일 업로드 취약점 (0) | 2023.05.30 |
---|---|
CSRF attack scenario (0) | 2023.05.28 |
XSS정리 (0) | 2023.05.22 |
CSRF_요청을 보내지만 페이지 유지하는방법. (0) | 2023.05.19 |
Keylogger_JS (0) | 2023.05.17 |