🕵️ CSRF-Get Admin 1 문제 풀이: iframe을 이용한 스텔스 비밀번호 탈취
이번 문제는 CSRF의 기초이자 핵심인 '요청 위조'를 실습하는 문제다. 단순히 요청을 보내는 것을 넘어, 관리자의 눈(혹은 시스템의 감시)을 피해 어떻게 은밀하게 공격을 성공시키느냐가 관건이었다.
1. 공격 시나리오 분석
내가 fsi4라는 계정을 만들면 fsi4_admin이라는 관리자 계정이 페어로 생성된다. 이 관리자 계정의 비밀번호를 내가 원하는 값으로 변경한 뒤 로그인하면 플래그를 얻을 수 있는 구조다.

2. 1차 시도와 실패: "들켰단다"
먼저 내 계정에서 비밀번호를 변경할 때 발생하는 패킷을 분석했다. 확인 결과, GET 방식으로 파라미터가 날아가는 것을 확인했다.


따라서 이 URL을 그대로 관리자 봇에게 던지면 관리자의 비밀번호가 바뀔 것이라 생각했다. 하지만 결과는 "들켰단다"는 메시지와 함께 실패.


❓ 왜 실패했을까? (Alert의 존재)
브라우저에 해당 공격 URL을 직접 입력해 보니, 비밀번호 변경이 완료된 후 "변경되었습니다"라는 Alert(알림창)가 뜨는 것을 확인할 수 있었다. 관리자 봇 시스템은 이런 예상치 못한 팝업이나 페이지 이동이 발생하면 공격을 감지하고 차단해버리기 때문에 실패했던 것이다.
3. 해결 전략: XSS와 iframe을 이용한 스텔스 공격
알림창을 띄우지 않고 배경에서 조용히 공격을 수행하려면 iframe이 필요하다. 그리고 이를 실행하기 위해 게시판 본문에서 XSS가 가능한 지점을 찾았다.


XSS가 가능함을 확인했으니, 이제 본문에 비밀번호 변경 페이지를 iframe으로 불러오는 스크립트를 심는다.
최종 공격 페이로드:
<iframe src="비밀번호_변경_공격_URL" style="display:none;"></iframe>
<iframe src="비밀번호_변경_공격_URL" style="display:none;"></iframe>
💡 iframe이 해결책인 이유
iframe을display:none이나 크기 0으로 삽입하면, 관리자가 게시글을 읽는 순간 브라우저 뒷단에서 비밀번호 변경 페이지가 로드된다. 페이지 이동 없이 배경에서 요청이 날아가므로 관리자(봇)는 공격이 일어났는지 눈치채기 어렵다. (이전에 정리했듯sandbox속성까지 쓰면 알림창 자체를 완벽히 차단할 수도 있다!)
4. 최종 공격 성공

위 페이로드를 담은 게시글을 작성하고 관리자 봇에게 링크를 던졌다. 잠시 후 fsi4_admin 계정으로 변경한 비밀번호를 입력해 로그인하니 플래그를 획득할 수 있었다.

💡 소감
CSRF는 단순히 요청을 복사하는 게 전부가 아니라는 것을 깨달았다. 실제 환경에서는 알림창이나 페이지 리다이렉션 같은 '흔적'을 지우는 것이 얼마나 중요한지, 그리고 이를 위해 XSS를 연계하는 과정이 매우 인상 깊었다. 😎
'해킹스터디' 카테고리의 다른 글
| [Normaltic 웹해킹 입문] 12주차 CSRF-Get Admin 3 (0) | 2026.01.06 |
|---|---|
| [Normaltic 웹해킹 입문] 12주차 CSRF-Get Admin 2 (0) | 2026.01.06 |
| [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 |