바로가기 메뉴
컨텐츠 바로가기
주메뉴 바로가기
하단정보 바로가기

Is Your Website Hackable?
70% are. Detect and Action with Acunetix

디렉토리 횡단 공격 (Directory Traversal Attacks)


디렉토리 횡단 공격이란 무엇인가?

안전한 웹 서버를 가동하기 위해서는 웹 컨텐츠에 대한 접속을 적절히 통제하는 것이 대단히 중요합니다. 디렉토리 횡단 또는 경로 횡단은 HTTP 공격으로, 공격자가 제한되는 디렉토리에 접속하여 웹 서버의 루트 디렉토리의 외부에서 명령을 실행할 수 있도록 합니다.

웹 서버는 두 가지 주요 차원의 보안 매커니즘을 제공합니다.

  • • 접근 제어 목록 (ACLs)
  • • 루트 디렉토리

접근 제어 목록은 인증 프로세스에서 사용합니다. 이 목록은 웹 서버의 관리자가 어떤 사용자 또는 그룹이 서버에서 특정 파일에 접근하고, 변경하거나 실행할 수 있는지, 그리고 기타 접근 권한을 표시하는 데 사용하는 목록입니다.

루트 디렉토리는 서버 파일 시스템에 있는 특정 디렉토리로, 사용자가 제한됩니다. 사용자들은 이 루트 이상 어떠한 것에도 접근할 수 없습니다.
예를 들어, Windows에서 IIS의 디폴트 루트 디렉토리는 C:\Inetpub\wwwroot이며, 이 설정으로, 사용자는 C:\Windows에 접근할 수 없지만 C:\Inetpub\wwwroot\news에는 접근할 수 있고, 루트 디렉토리 아래 다른 디렉토리 및 파일에 접근할 수 있습니다 (사용자가 ACL을 통해서 인증을 한 경우).
루트 디렉토리는 사용자가 Windows 플랫폼에서 C:\WINDOWS/system32/win.ini, 또는 Linux/UNIX 플랫폼에서 /etc/passwd 파일 등, 서버의 특정 파일에 접근하지 못하도록 합니다.
이러한 취약성은 웹 서버 소프트웨어 그 자체 또는 웹 어플리케이션 코드에 존재할 수 있습니다.
디렉토리 횡단 공격을 수행하기 위해서, 공격자가 필요한 모든 것은 웹 브라우저, 그리고 시스템에서 디폴트 파일과 디렉토리를 어느 곳에 안보이게 감추어 두었는지에 대한 정보입니다.

여러분의 웹사이트가 취약할 경우 공격자가 할 수 있는 것

디렉토리 횡단에 취약한 시스템으로, 공격자는 이 취약성을 이용하여 루트 디렉토리에서 나와 다른 파일 시스템에 접근할 수 있습니다. 이렇게 하면 공격자는 제한된 파일을 볼 수 있게 되어, 시스템을 더욱 위험에 빠뜨리기 위해서 필요한 더 많은 정보를 갖게 됩니다.

웹사이트 접속을 어떻게 설정하느냐에 따라서, 공격자는 “웹사이트”와 연관이 있는 사용자로 자신을 위장한 채 명령을 실행합니다. 그러므로, 이는 모두 시스템에서 웹사이트 사용자에게 어떠한 접근 권한을 주었는지에 따라 달라집니다.

웹 어플리케이션 코드를 통한 디렉토리 횡단 공격의 예시

동적 페이지가 있는 웹 어플리케이션에서, 보통 GET 또는 POST 요청 방법을 통해서 브라우저에서 입력 값을 받습니다. 여기 HTTP GET 요청 URL의 예시가 있습니다.

이 URL로, 브라우저는 서버에서 동적 페이지 show.asp를 요청하고, 이를 통해 또한 oldarchive.html 값이 있는 변수 보기를 전송합니다. 이러한 요청을 웹 서버에서 실행하면, show.asp는 서버의 파일 시스템에서 파일 oldarchive.html을 검색하며, 브라우저로 다시 전송하면 브라우저가 이를 사용자에게 보여줍니다. 공격자는 show.asp이 파일 시스템에서 파일을 검색할 것으로 가정하고 다음의 자체 제작 URL을 전송합니다.

이렇게 하면 동적 페이지가 파일 시스템에서 system.ini 파일을 검색하여 사용자에게 보여줍니다. ../라는 표시는 운영 시스템 명령으로서 일반적으로 사용하는 것으로, 시스템에게 디렉토리로 가라고 지시합니다. 공격자는 시스템에서 Windows 폴더를 찾기 위해서 몇 개의 디렉토리를 거슬러 올라가야 하는지 추측해야 하지만, 시행 착오를 통해서 쉽게 추측할 수 있는 일입니다.

웹 서버를 통한 디렉토리 횡단 공격의 예시

코드에서 취약성과는 별개로, 웹 서버 자체도 디렉토리 횡단 공격에 노출될 수 있습니다. 문제는 웹 서버 소프트웨어로 통합되거나 또는 서버에서 이용할 수 있도록 내버려 둔 일부 샘플 스크립트 파일 내부에 존재할 수 있습니다.

웹 서버 소프트웨어의 최신 버전에서 취약성을 픽스했지만, 여전히 IIS와 Apache의 더 이전 버전을 사용하고 있는 웹 서버가 온라인에 있으며, 이는 디렉토리 횡단 공격에 노출될 수 있습니다. 이러한 취약성을 픽스한 웹 서버 소프트웨어 버전을 사용하고 있을 지라도, 해커들에게는 잘 알려져 있는 일부 민감한 디폴트 스크립트 디렉토리가 노출될 수 있습니다.

예를 들어, 디렉토리를 횡단하고 명령을 실행하는 IIS의 스크립트 디렉토리를 사용하는 URL 요청은 다음과 같을 수 있습니다.

요청은 cmd.exe 명령 쉘 (shell) 파일을 실행하여 C:\ 디렉토리에 있는 모든 파일 목록을 사용자에게 돌려 보내며, 쉘에서 명령 dir c:\을 가동합니다. URL 요청에 있는 %5c 표시는 웹 서버의 탈출 코드로, 정상적인 문자를 표시하는 데 사용됩니다. 이 경우에 %5c는 문자 \를 나타냅니다.

현대적인 웹 서버 소프트웨어의 더 최신 버전은 이러한 탈출 코드를 확인하며, 이들이 통과하도록 내버려 두지 않습니다. 그러나, 일부 더 이전 버전은 루트 디렉토리 집행자에서 이러한 코드를 걸러내지 않으며, 공격자들이 그러한 명령을 실행하도록 내버려 두기도 합니다.

디렉토리 횡단 취약성에 대해 확인하는 방법

여러분의 웹사이트와 웹 어플리케이션이 디렉토리 횡단 공격에 취약한지를 확인하는 가장 좋은 방법은 웹 취약성 스캐너를 사용하는 것입니다. 웹 취약성 스캐너는 전체 웹사이트를 탐색하고 자동으로 디렉토리 횡단 취약성을 확인합니다. 스캐너는 취약성과 취약성을 쉽게 픽스하는 방법을 보고합니다. 디렉토리 횡단 취약성뿐 아니라, 웹 어플리케이션 스캐너는 또한 SQL Injection, 크로스 사이트 스크립팅 및 기타 웹 취약성도 확인합니다.

Acunetix는 SQL Injection, 크로스 사이트 스크립팅, Google 해킹 및 기타 많은 취약성을 스캔합니다

디렉토리 횡단 공격 방지

무엇보다도, 웹 서버 소프트웨어의 최신 버전을 설치하였는지 확인하고, 모든 패치를 적용하였는지 확인합니다.

두 번째로, 사용자 입력 값을 효과적으로 필터링합니다. 이상적으로, 건전한 것으로 알려진 데이터 외 모든 것을 삭제하고, 사용자 입력 값에서 메타 문자를 필터링합니다. 이렇게 하면 필드에 입력할 수 있는 것만이 서버로 제출되도록 할 수 있습니다.

여러분의 웹사이트가 공격에 취약한지 Acunetix로 확인하세요.

Acunetix는 SQL Injection, 크로스 사이트 스크립팅, 디렉토리 횡단 및 기타 취약성에 대하여 자동으로 확인하여 웹사이트 보안을 보장합니다. 인증 페이지에서 비밀번호 강도를 확인하고 쇼핑 카트, 양식, 동적 컨텐츠 및 기타 웹 어플리케이션을 자동으로 검사합니다. 스캔이 완료되면, 소프트웨어는 취약성이 존재하는 곳을 정확히 찾아내는 상세한 보고서를 생성합니다.
Acunetix 시험 버전을 다운로드하세요.