디렉터리 트래버설 공격이란?
2024. 12. 5. 02:00ㆍ카테고리 없음
반응형
디렉터리 트래버설 (Directory Traversal)
1. 개념과 정의
디렉터리 트래버설(Directory Traversal)은 웹 애플리케이션 또는 파일 관리 시스템의 보안 취약점을 악용하여 공격자가 허가되지 않은 디렉터리와 파일에 접근할 수 있게 만드는 공격 기법입니다.
이 취약점은 일반적으로 파일 경로를 처리하는 코드에서 사용자 입력값을 제대로 검증하지 않을 때 발생합니다.
공격자는 ../ 또는 ..\\ 등의 특수 문자열을 사용하여 디렉터리 경로를 이동하며, 서버의 민감한 파일(예: 설정 파일, 사용자 데이터, 암호 파일 등)을 읽을 수 있습니다.
2. 주요 원리
디렉터리 트래버설 공격은 파일 시스템 내에서 상대 경로를 통해 상위 디렉터리로 이동하는 특성을 이용합니다. 공격자는 다음과 같은 경로 조작으로 파일 시스템을 탐색합니다:
- 예제 입력:
- /etc/passwd (유닉스 계열의 사용자 정보 파일)
- ../../../../windows/system32/config/system (Windows 시스템의 설정 파일)
(1) 상위 디렉터리 이동
- ../ 또는 ..\\를 사용하여 부모 디렉터리로 이동.
- 공격자가 여러 번 반복해 루트 디렉터리까지 이동 가능.
(2) 파일 경로의 불완전 검증
3. 공격의 결과
디렉터리 트래버설 취약점은 시스템 내 민감한 정보 유출, 서비스 중단, 또는 더 심각한 취약점의 발판으로 작용할 수 있습니다.
(1) 민감한 정보 유출
- 사용자 비밀번호, 서버 설정 정보, 인증 토큰 등 민감한 데이터가 유출될 수 있음.
- 예: /etc/passwd (리눅스 사용자 정보), web.config (IIS 설정 파일).
(2) 권한 상승
- 취득한 정보를 기반으로 시스템에서 권한을 상승하는 추가 공격을 수행.
(3) 서비스 거부
- 대량의 요청을 통해 파일 시스템을 과도하게 탐색해 서버 자원을 고갈.
(4) 악성 코드 삽입
- 공격자가 악성 파일을 실행하거나 기존 파일을 수정.
4. 공격 시나리오
(1) 일반적인 웹 서버의 취약점
- URL: http://example.com/view?file=../../../../etc/passwd
- 결과: /etc/passwd 파일이 반환되어 사용자 정보가 노출.
(2) 업로드 파일 검증 부족
- 파일 업로드 시, 공격자가 디렉터리를 변경해 특정 경로에 파일을 저장.
- 예: /uploads/../../../var/www/html/shell.php를 업로드하여 원격 코드 실행 가능.
(3) 로그 분석 시스템
- 로그 파일을 동적으로 열고 보여주는 시스템에서 디렉터리 트래버설을 이용해 민감한 파일 탐색.
5. 방지 방법
(1) 사용자 입력값 검증
- 파일 경로를 구성할 때 사용자 입력값을 엄격히 검증.
- 허용 목록 기반 검증(Allowlist) 사용:
- 특정 파일 이름만 허용.
- 예: view?file=example.txt → /safe_path/example.txt로 매핑.
(2) 상대 경로 사용 제한
(3) 특수 문자열 제거
- ../와 같은 특수 문자열을 제거하거나 이스케이프 처리.
- 주의: 단순히 문자열 제거만으로는 충분하지 않음.
(4) 파일 시스템 권한 관리
- 웹 서버가 실행되는 디렉터리에 최소 권한을 부여.
- 민감한 파일이 웹 서버가 접근할 수 없는 디렉터리에 위치하도록 설정.
(5) 웹 애플리케이션 방화벽(WAF)
- 디렉터리 트래버설 공격 패턴을 탐지하고 차단하는 WAF를 사용.
(6) 입력 데이터 인코딩
- 사용자 입력을 경로로 변환하기 전에 URL이나 파일 경로 인코딩 처리.
6. 탐지 방법
(1) 로그 분석
- 서버 로그에서 비정상적인 ../ 패턴이 포함된 요청 탐지.
(2) 침투 테스트
- 자동화된 도구를 사용하여 취약점을 스캔:
- Burp Suite, OWASP ZAP 등을 이용.
(3) 코드 리뷰
- 파일 경로를 생성하는 부분에서 사용자 입력값의 처리 방식을 검토.
(4) IDS/IPS 사용
- 침입 탐지 및 방지 시스템으로 비정상적인 요청 차단.
7. 사례
(1) GitHub Repository 유출
- 한 개발자가 디렉터리 트래버설 공격으로 서버 내 민감한 리소스를 노출.
- 공격자가 ../을 활용해 소스 코드를 획득.
(2) 웹 애플리케이션의 백엔드 노출
- 디렉터리 트래버설을 통해 서버 설정 파일(예: nginx.conf)이 노출되고, 이후 더 큰 공격으로 연결됨.
디렉터리 트래버설은 간단한 공격 기법임에도 불구하고, 웹 애플리케이션에서 발견되면 치명적인 피해를 초래할 수 있습니다. 이를 예방하기 위해서는 입력 검증과 안전한 경로 처리가 필수적이며, 정기적인 보안 점검과 테스트를 통해 잠재적인 취약점을 사전에 방어해야 합니다.
반응형