Relative Path Overwrite
Browser를 속여 의도되지 않은 파일을 불러오는 기법
- 절대 경로와 상대 경로 이해.
- / (루트 도메인) 로 부터 시작되는 경로
- 파일명만 존재할 시 현재까지의 경로에서 파일명만 교체됨.
Browser가 하는 일
웹 서버와 통신 하면서 응답을 브라우저를 통해서 보여준다.
응답코드에 Image나 Script, Stylesheet 파일들을 불러오는 코드가 존재하면 browser 판단 하에 파일을 불러옴.
웹서버는 경로에 대해 찾아서 파일을 응답함.
index.php 응답 코드에 css , js 로드 코드가 존재함.
상대경로로 지정되어 있으므로 현재 경로에서 찾음.
URL 조작하여 request
브라우저는 URL encode된 부분도 그냥 파일명에 포함시킴.
Apache또한 ..%2index.php를 찾지만 Nginx에서는 변환되어 정상 파일 응답함.
만약 정상 응답되었다고 하면 응답 코드에 있는 자원을 로드하는 것은 브라우저 경로 기준. (브라우저 판단)
브라우저는 URL encode 변환이 안되므로 ..%2로 들어간 부분은 파일명으로 들어가서
같은 index.php를 불러와도 (웹서버 기준) 리소스 (CSS , JS ) 로드 경로는 바뀐다.
/test/rpo/ 하위에서 리소스 로드
index.php는 서버에서 해석하므로 정상 리턴됐지만, script 반환은 브라우저 경로 기준으로 로드하려고 하기때문에
404에러 발생.
Apache 도 URI encode 인식못하므로 404
만약 어떤 경로에 감염된 스크립트가 있단 것을 아는 상황.
그냥 경로 참조로 접근하면 소스로 반환됨.
실행시키고 싶다면
/test/rpo/uploads/ 하위에서 script.js를 load하는 php 파일등을 심어서 실행시키면됨.
'Security' 카테고리의 다른 글
[Webhacking] [client-side advanced] Exploit Techniques - CSS Injection (0) | 2021.11.03 |
---|---|
[Webhacking] [client-side advanced] Exploit Techniques - Dom Clobbering (0) | 2021.11.03 |
[systemhacking] 시스템 해킹 기초 (0) | 2021.10.28 |
[Webhacking] [client-side advanced] CORS (0) | 2021.10.24 |
[Webhacking] [client-side advanced] CSRF (0) | 2021.10.24 |