Directory Traversal in Apache2

2011/02/19 13:24

Directory Traversal 란?

2010년에 발표된 OWASP Top101에서 A6번으로 "보안상 잘못된 구성"이라는 항목이 있습니다. 이 항목에는 서버환경 구성, OS 및 애플리케이션 업데이트 여부, 기타 설정 등이 포함됩니다. 그 중의 하나가 "Directory Traversal"입니다. 이 취약점은 공격자가 서버의 경로를 거슬러 올라가면서 관리자가 유저에게 보일 생각이 없는 파일이나 디렉토리를 열람/실행하는 것을 말하지요.

사용자 삽입 이미지
[그림1] Directory Traversal

Linux 상에서 Apache2 웹서버를 설치할 경우에, 기본적으로 이 취약점은 제한되어 있지 않아서 따로 설정하지 않으면 [그림1]처럼 문제가 될 수 있습니다. [그림1]의 상황은 웹서버의 백업파일이 노출된 모습입니다. 웹서버의 루트 디렉토리에 index.html이나 index.php와 같은 약속된 파일이 없기 때문에 디렉토리와 파일들이 열람됩니다. 그리고 저 파일들의 권한 설정에 따라서 다운로드 혹은 실행이 가능하죠.

공격자의 입장에서는 이 취약점을 노리기가 정말 쉽습니다. 공격자는 "/doc", "/admin", "/backup", "/file", "/upload", "/images", "/cgi-bin" 등과 같이 일반적으로 많이 쓰이는 디렉토리 이름들을 주소창에 입력하여서 열람이 가능한지 확인할 수 있습니다.

그리고 그보다 더 쉬운 방법이 구글의 고급검색 기능을 이용하는 것이죠. 구글의 검색창에 다음과 같이 입력하여서 검색을 하면 열람이 가능한 디렉토리를 쉽게 찾을 수 있습니다.

intitle:"Index of /" site:[사이트 주소]


어떻게 막을까?

Linux의 Apach2에서는 웹서버의 설정을 편집하여서 간단하게 이 취약점을 막을 수 있습니다. Redhat, Fedora 등의 리눅스에서는 /etc/apache2/httpd.conf 파일을, Debian, Ubuntu 등의 리눅스에서는 /etc/apache2/sites-available/default 파일을 수정합니다.

사용자 삽입 이미지
[그림2] /etc/apache2/sites-available/default

[그림2]는 Debian에서 /etc/apache2/sites-available/default에 기본적으로 저장되어 있는 내용입니다. <Directory /[디렉토리]>와 </directory> 사이의 Options 항목에서 Indexes를 지운 후 저장합니다. 그리고 다음과 같이 Apache2 웹서버를 재시작합니다.

# /etc/init.d/apache2 restart
Restarting web server: apache2 ... waiting .


이렇게 함으로써 이제 더 이상 디렉토리 열람이 되지 않습니다.

사용자 삽입 이미지
[그림3] robots.txt

그리고 구글에서 검색되지 않도록 하기 위해서는 웹서버의 루트 디렉토리에 robots.txt 파일을 만들어서 [그림3]과 같이 설정합니다. robots.txt 파일은 로봇 배제 표준2이라는 규약입니다. 검색엔진의 로봇이 웹사이트에 접근하지 못하도록 설정하는 것이죠. 일반적으로 구글을 비롯한 대부분의 검색엔진들은 이 로봇 배제 표준을 준수하고 있습니다. 하지만, 네이버와 야후는 지키지 않고 있습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

6l4ck3y3 0x04 Web RCE , , ,

Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
[로그인][오픈아이디란?]