본문 바로가기

웹해킹

Relative Path Overwrite

Relative Path Overwrite(RPO)는 서버와 브라우저가 상대 경로를 해석하는 과정에서 발생하는 차이점을 이용한 공격이다.

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

첫번째 코드는 최상위 경로부터 시작해서 탐색하고 로드하지만

두번째 코드는 현재 경로, 코드가 실행되는 파일의 경로부터 탐색해서 로드한다.

 

/USER_INPUT/static/script.js

static/script.js 파일을 로드할 때 이런식으로 상위 경로에 입력값이 들어가는 경우에 이를 조작해서

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

이런 식으로 뒤 부분은 주석 처리를 시키고 원하는 자바스크립트 명령어를 실행시킬 수도 있다.

 

CSS를 이용해서 공격을 할 수도 있다.

CSS는 자바스크립트와 다르게 에러 코드가 나와도 다음으로 넘어가서 정상적인 나머지 코드들을 실행시켜준다.

 

이전에도 나왔지만 base-uri이 설정되지 않은 경우에 공격자의 서버로 base-uri을 정의하고 공격에 이용할 수 있다.