🕵️ CSRF-Get Admin 2 문제 풀이: POST 방식의 요청 위조와 스텔스 기법
CSRF-Get Admin 2번 문제다. 1번과 유사한 내용이지만, 이번에는 공격 방식에서 한 단계 더 나아간 고민이 필요했다. 이번에도 fsi5 계정을 생성하여 fsi5_admin의 비밀번호를 탈취하는 시나리오로 진행했다.
1. 문제 분석: GET이 안 된다면?
우선 비밀번호 변경 request 패킷을 분석해 보니, 지난번과는 다르게 POST 방식으로 데이터를 전달하고 있었다. 혹시나 하는 마음에 GET으로 방식을 바꿔서 보내봤지만, 서버에서 에러를 뱉으며 받아주지 않았다.



💡 여기서 얻은 결론
서버가 POST 방식만 수용한다는 것은 공격을 위해 폼(Form) 태그 전송이 반드시 필요하다는 뜻이고, 이는 곧 XSS 공격 포인트가 필수적이라는 의미다.
2. 공격 전략: 문의게시판 XSS 활용
이번에는 일반 게시판이 아닌 '문의게시판'을 이용해보기로 했다. 확인 결과 제목과 내용 모두 XSS가 열려있어 공격 코드를 심기에 아주 적합했다.
✅ 핵심 페이로드 분석 (iframe + Form)
<iframe width="0" height="0" name="StealthFrame" id="StealthFrame" style="display:none;" sandbox="allow-forms"></iframe>
<form method="POST" action="/update_pw" id="myForm" target="StealthFrame">
<input type="hidden" name="pw" value="12345" />
</form>
<script>
document.getElementById('myForm').submit();
</script>
이 코드의 핵심은 다음과 같다.
- target="StealthFrame": 폼 제출 후 돌아오는 응답(Response) 화면을 내가 만든 투명
iframe으로 보내버린다. 그래야 관리자 화면에서 페이지 이동이나 알림이 뜨지 않는다. - name vs id:
form의target속성은 iframe의id가 아닌name값을 참조한다. 그래서 iframe에 name을 지정해주는 것이 중요하다.
🔍 기술 딥다이브: sandbox="allow-forms"의 역할
지난번에도 언급했듯, sandbox는 iframe 내부의 동작을 제한하는 보안 기능이다. 예외를 두지 않으면 자바스크립트 실행, 폼 제출, 팝업 등이 모두 금지된다. 여기서 좀 헷갈리는 개념이 등장하는데 어차피 form은 request로 iframe 밖에서 나가고 target은 response를 iframe 안에서 받는다는 건데 왜 allow-forms가 필요할까?(request는 iframe 밖에서 이뤄지는데?)
여기서 중요한 개념이 target을 지정하는 순간 브라우저는 form과 관련된 일체의 행위가 iframe 안에서 일어나는 것으로 이해한다고 한다. 이를 브라우저의 컨텍스트(Context) 분리와 샌드박싱(Sandboxing) 모델이라고 한다고 함
❓ 왜 allow-forms만 쓰나요?
우리의 목적은 '비밀번호 변경 폼 제출'이다.allow-forms를 주면 폼 제출은 가능해지지만, 자바스크립트 실행(allow-scripts)이나 모달창(allow-modals) 권한이 없으므로 서버가 보내는 "변경되었습니다"라는 알림창(Alert)은 실행되지 못하고 무시된다. 덕분에 완벽한 스텔스 공격이 가능해지는 것이다.
3. 최종 공격 성공
문의게시판에 해당 페이로드를 심고 관리자 봇이 확인하게 만들었다. 잠시 후 fsi5_admin 계정에 내가 설정한 비밀번호 12345를 입력하니 성공적으로 로그인이 되며 플래그를 획득할 수 있었다.


💡 마무리하며
POST 방식의 CSRF는 XSS와의 연계가 얼마나 강력한지를 보여주는 사례였다. 특히 target 속성을 이용해 응답을 가로채고 sandbox로 알림을 차단하는 기법은 실전에서도 매우 유용할 것 같다. 뿌듯하다! 😎
'해킹스터디' 카테고리의 다른 글
| [Normaltic 웹해킹 입문] 12주차 CSRF-Get Admin 3 (0) | 2026.01.06 |
|---|---|
| [Normaltic 웹해킹 입문] 12주차 CSRF-Get Admin 1 (0) | 2026.01.05 |
| [Normaltic 웹해킹 입문] 12주차 CSRF-내용정리 (3) | 2026.01.05 |
| [Normaltic 웹해킹 입문] 10주차 문제풀이 Steal info 2. (0) | 2026.01.02 |
| [Normaltic 웹해킹 입문] 10주차 문제풀이 Steal info 1. (0) | 2026.01.02 |