Web Hacking/Study

Relative Path Overwrite (RPO) 취약점이란

박연준 2024. 1. 2. 17:55

Relative Path Overwrite (RPO)란?

  • 일반적으로 자바스크립트나 스타일시트 코드를 로드하는 과정에서 경로 해석의 문제로 인해 발생하며, 임포트하는 페이지의 내용을 조작시킬 수 있다면 공격자가 의도한 자바스크립트, 스타일시트 코드를 로드시킬 수 있다.

 

아래와 같은 소스 코드를 페이지에서 임포트 해온다고 했을 때, http://host/rpo.php로 접근하였을 땐 둘 다 같은 경로의 /app/main.js 를 로드하지만 http://host/rpo.php/ 처럼 마지막에 /문자를 붙여서 요청하게 되면 두 번째 소스 코드는 host/rpo.php/app/main.js 를 로드하게 된다.

<script src="/app/main.js"></script>
<script src="app/main.js"></script>

 

자바스크립트와 연계

만약 RPO 취약점으로 로드하는 자바스크립트 코드의 앞 부분을 공격자가 조작할 수 있다면, XSS 공격으로 연계가 가능하다. 앞 부분을 공격자가 입력할 수 있다면 아래와 같이 스크립트를 입력해 XSS 공격이 가능해진다. 이는 ;를 사용하여 문자열의 끝을 알려주고 //를 사용해서 뒤에 오는 문자열을 주석처리한 것이다.

index.php/;alert(1); //static/script.js

 

CSS와 연계

RPO 취약점을 통해 CSS Injection과도 연계가 가능하다. 스타일시트의 특징은 올바르지 않은 문법을 만나면 무시하고 올바른 문법이 나올 때까지 다음 문법으로 넘어간다. 이를 통해 자바스크립트를 이용한 XSS 공격보다 좀 더 제약조건이 줄어들기 때문에 XSS 공격이 까다롭다면 CSS Injection으로 공격하는 것도 좋은 방법이다.

 

base-uri 미지정

만약 임의의 태그를 삽입할 수 있고, 페이지 내에 RPO 취약점이 존재한다면, 공격자가 원하는 스크립트를 로드할 수 있다. 공격자는 자신의 서버를 base 주소로 설정하고 로드되는 스크립트 파일과 같은 이름의 악성 스크립트를 생성하여 실행시킬 수 있다.

'Web Hacking > Study' 카테고리의 다른 글

Authentication 취약점이란?  (0) 2024.01.15
UNION Based SQL Injection 정리  (0) 2024.01.13
CSP(Content Security Policy)  (1) 2023.12.23
XSS 필터링 우회  (2) 2023.12.21
Error & Time based SQL Injection  (0) 2023.07.01