반응형
개념
공격자가 삽입한 값을 통해서 웹 페이지 내 로드된 CSS(스타일시트) 또는 Style 태그와 속성 등 페이지의 CSS를 통제하는 취약점
Detect
- Allowed HTML in Service
- HTML 사용이 허용된 서비스의 경우 기본적으로 CSS Injection의 영향을 받는다. 이 때 서비스에서 영향력을 줄이기 위해 position 등 허용된 영역 이외를 통제할 수 있는 CSS 규칙을 제한하고 있을 가능성이 높고, 없다면 CSS Injection으로 서비스 페이지의 전체 영역을 컨트롤할 수 있기 때문에 취약하고, 제한 로직이 있어도 이를 우회하여 CSS를 완벽하게 통제 가능
- HTML Injection
- XSS와 유사하지만 Javascript를 실행하지 못하는 경우 HTML Injection으로 표현하는데, style 태그 등이 사용 가능한 경우 CSS Injection으로 확장 가능
GET /search?query=<style>.hahwul{position:fixed}</style><b%20class=hahwul>hacked</b>
- CSS received from UserOriginal
- 사용자에게 꾸미는 기능을 제공하는 경우 Font의 크기 및 색상, 배경 이미지, 배경 색 등 CSS에 간접적으로 관여할 수 있는 기능들이 존재할 수 있다. 이 때 CSS 구문을 이용하여 개발자가 예측하지 못한 CSS 선언하는형태로 Injection가능
Origin
Injection
Response
Exploitation
CSS Injection을 통한 목적과 방법은 사용자가 속기 쉬운 페이지를 만들어 피싱하거나 유저 인터렉션이 필요한 XSS, CSRF 등의 인터렉션을 쉽게 처리할 수 있도록 꾸밀 수 있다.
Overwrite UI
대표적으로 서비스에서 제공하는 기능에 대한 버튼을 Overwirtie하는 방법이 있다. 이는 position: fixed와 이를 꾸며주는 CSS를 기반을 통해 로그인, 서비스 페이지 등의 버튼을 공격자가 의도한 Element로 덮어서 사용자가 쉽게 피싱 등에 당할 수 있도록 구성 가능
드림핵 CSS-Injection
<base.html>
바로 저 color 부분이 취약점이 된다.
background-color라는 변수 안에 color라는 정의된 변수가 css의 성질을 바꿀 수 있는 코드다. 즉, url로 파라미터를 변조시켜 css-injection이 가능하다.
반응형
'웹 공부' 카테고리의 다른 글
구름 IDE를 이용한 리버스셸(feat. MinYuqShu) (1) | 2023.12.05 |
---|---|
SSTI (2) | 2023.11.22 |
Prototype Pollution (0) | 2023.11.22 |
Express.js (1) | 2023.11.22 |
SSRF(Server Side Request Forgery) (2) | 2023.11.22 |