경로 추적 취약점
Path Traversal, 조작/경로 순회 취약점
① 개념
- 웹서버와 웹 애플리케이션 파일 또는 디렉터리 접근이 통제되지 않아 웹서버 또는 웹 애플리케이션의 중요한 파일과 데이터에 대한 접근 및 실행이 허용되는 취약점
- 웹 애플리케이션 루트 디렉터리를 벗어나 시스템의 주요 파일과 데이터에 접근.
- 일반적으로 경로를 조작하기 위해 상대경로 참조방식(../,..\ 등)을 사용한다.
- 주요 경로 조작 문자 및 인코딩 방식
경로 조작 문자 . / \ 1. (유닉스/리눅스) ./(현재 디렉터리), ../(상위 디렉터리)
2. (윈도우) .\(현재 디렉터리), ..\(상위 디렉터리)URL 인코딩 .(%2e) /(%2f) \(%5c) 더블 URL 인코딩 .(%252e) /(%252f) \(%255c) URL 인코딩된 문자열을 한번 더 인코딩하여 %가 %25로 인코딩됨 16bit 유니코드 인코딩 .(%u002e) /(%u2215) \(%u2216)
② 공격 절차
- 공격자는 입력값에 따라 이미지를 표시해주는 페이지의 요청 파라미터 구조를 파악한다.
- GET /home/vul?fname=fruitHTML%2Fapple.html 요청 확인
- 입력값에 따라 fruitHTML 디렉터리에 과일명 이름을 가진 html 페이지를 요청하는 것으로 판단할 수 있다.
- 요청 파라미터(fname)에 다양한 경로 조작 문자를 삽입하여 웹 루트 디렉터리보다 상위 디렉터리에 위치한 파일 '/etc/passwd'에 접근을 시도한다.
- GET /home/vul?fname=..%2f..%2f..%2fetc%2fpasswd 요청 확인
- 단순한 경로 조작뿐만이 아니라 URL인코딩, 더블 URL 인코딩, 16bit 유니코드 인코딩 등 적용한 문자를 삽입하여 경로조작 시도
- 다양한 인코딩 방식을 사용하는 이유 : 요청 페이지에서 파라미터를 어떤 방식으로 디코딩하는 지 모르므로
- 공격 성공 시, 웹서버의 /etc/passwd 파일 내용확인 가능
- (APM 환경) 아파치 웹서버 엑세스 로그 분석 시, 공격자가 경로 조작을 다양하게 시도하는 과정에서 404(Not Found) 상태코드가 다수 발생했지만, 중간에 200(OK) 상태코드가 발생한 것을 확인 가능.(공격 성공)
- (윈도우 환경,IIS 웹서버) IIS 웹서버 엑세스 로그 분석 시, scripts 디렉터리는 서버에서 클라이언트 요청을 처리하기 위한 프로그램들이 위치하는 기본 디렉터리로 공격자는 CGI 프로그램의 경로를 조작해 윈도우 시스템 디렉터리에 있는 프로그램을 실행하려고 할 것임.
④ 취약점 판단기준
- URL 요청 파라미터 값을 임의의 경로가 포함된 값으로 변경하여 웹 루트 디렉터리보다 상위 디렉터리로 접근을 시도할 때, 접근이 성공하면 취약한 것으로 판단
⑤ 대응법
- 사용자가 임의로 접근할 수 있는 최상위 디렉터리를 웹 루트 디렉터리로 설정하여 웹서버의 시스템 루트 디렉터리로 접근하지 못하도록 제한
- (유닉스/리눅스) chroot 기능(임시 루트디렉터리 설정)을 통해 웹 루트 디렉터리를 가상의 root 디렉터리로 만들어 시스템 루트 디렉터리에 대한 접근을 차단한다.
- (윈도우) 새로운 논리 드라이브 (ex. E:\)를 설정해 해당 드라이브를 웹 애플리케이션 루트 디렉터리로 설정한다.
- 사용자 입력값에 대해 경로를 조작할 수 있는 문자(../, ..\)를 필터링하도록 웹 소스 파일을 작성하고 웹 방화벽 등 필터링이 가능한 보안장비를 운영중이라면 필터링 룰셋을 적용한다.
- 단순히 경로를 조작할 수 있는 문자(../, ..\)를 ''(공백)으로 치환하면 문제가 생긴다. 공격자가 ..//로 접근했을 때, 공백이 지워지면 ../이므로 결국에 필터링이 불가함.
'정보보안 > 애플리케이션 보안' 카테고리의 다른 글
[웹 애플리케이션 취약점] 불충분한 세션 관리 취약점 (0) | 2024.11.17 |
---|---|
[웹 애플리케이션 취약점] 파일 삽입 취약점 (0) | 2024.11.17 |
[웹 애플리케이션 취약점] 파일 다운로드 취약점 (1) | 2024.11.16 |
[웹 애플리케이션 취약점] 파일 업로드(File Upload) 취약점 (0) | 2024.11.16 |
[웹 애플리케이션 취약점] 운영체제 명령 실행 취약점 (1) | 2024.11.15 |