이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A7 - Directory Traversal - Directories
Directory Traversal
디렉터리 탐색(파일 경로 탐색이라고도 함)은 공격자가 응용 프로그램을 실행하는 서버에서 임의의 파일을 읽을 수 있도록 하는 웹 보안 취약점입니다. 여기에는 애플리케이션 코드 및 데이터, 백엔드 시스템에 대한 자격 증명, 민감한 운영 체제 파일이 포함될 수 있습니다. 경우에 따라 공격자가 서버의 임의 파일에 쓸 수 있어 응용 프로그램 데이터나 동작을 수정하고 궁극적으로 서버를 완전히 제어할 수 있습니다.
Directory Listing
웹 서버에서 디렉터리로 접속할 때 해당 디렉터리 내의 파일과 리스트가 보이는 기능입니다. 원래 용도는 원하는 문서를 찾아갈 수 있도록 만들어졌지만, 최근에는 문서의 저장 및 열람이 가능하다는 취약점을 이용해 탈취 및 서버 공격이 일어나고 있습니다.
난이도 하
directory_traversal_2.php 페이지를 살펴보면 URL에 directory라는 변수가 노출되어 있는 것을 확인할 수 있고, documents라는 디렉터리 명이 입력되어 있는 것을 확인할 수 있습니다. 이 documents 디렉터리 명은 비박스에 설치된 경로의 디렉터리라는 것을 알 수 있습니다.
현재 저는 윈도우 기준이기 때문에 리눅스나 다른 OS에 설치하신 분들은 저와 경로가 다를 수 있습니다.
비박스가 설치된 디렉토리 목록을 확인해 보면 passwords 디렉터리가 보이는데 directory 변수를 통하여 해당 passwords 디렉토리에 접근을 해보도록 하겠습니다.
directory 변수를 통하여 passwords 디렉토리에 접근을 하면 디렉터리 안에 있는 내용이 출력이 되는 것을 확인할 수 있습니다. accounts.txt 파일을 클릭하여 해당 내용이 보이는지 확인해 보도록 하겠습니다.
accounts.txt 파일을 열람하면 계정정보가 표시되는 것을 확인할 수 있습니다. 그럼 실제 취약점 진단 및 모의해킹 공격 등에서 많이 사용하는 상대 경로(../)를 사용하여 서버의 디렉터리 정보를 확인해 보도록 하겠습니다.
directory 변수에 상위 디렉토리로 가는 상대 경로 (../)를 사용하여 evil 디렉터리에 접근을 하였습니다. Linux 또는 Unix에서 사용하시는 분들은 ../../../../etc를 통하여 디렉터리 목록을 확인해 보시기 바랍니다.
난이도 중
난이도 중에서는 directory 변수에 passwords 디렉토리를 접근하면 접근이 가능하나 상대 경로를 이용하여 상위 디렉터리 (../evil)로 접근할 경우 접근이 되지 않습니다.
상대 경로를 통하여 evil 디렉토리에 접근 시 디렉터리 트래버설이 탐지되었습니다!라는 메시지와 함께 접근이 안되는 것을 확인할 수 있습니다.
난이도 중에서는 directory_traversal_check_2 함수를 사용하는 것을 알 수 있습니다. directory_traversal_check_2 함수는 functions_external.php 에 정의 되어 있습니다.
functions_external.php 에서 directory_traversal_check_2 함수를 살펴보면 php에서 지원하는 strpos() 함수를 통하여 필터링을 하고 있는것을 알 수 있습니다.
strpos 함수 - 문자열에서 부분 문자열이 처음 나타나는 위치 찾기
난이도 상
난이도 상에서는 directory 변수에 상대경로를 입력하거나 존재하는 디렉터리를 입력하여도 다른 디렉터리로 이동하지 않습니다. 소스코드를 확인해 보면 directory_traversal_check_3 함수를 사용하고 있으며 기본 경로는 변수를 사용하여 documents 디렉터리로 한정하고 있습니다.
directory_traversal_check_3 함수를 살펴 보면 사용자가 입력한 경로가 관리자가 지정한 디렉터리 경로와 다를 경우 오류 메시지를 출력한다는 것을 확인할 수 있습니다.
참고
https://owasp.org/www-community/attacks/Path_Traversal
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A7 Host Header Attack (Reset Poisoning) (0) | 2022.09.27 |
---|---|
비박스(bWAPP) A7 Directory Traversal - Files (0) | 2022.09.22 |
비박스(bWAPP) A7 Missing Functional Level Access Control (기능 수준의 접근 통제 누락) (0) | 2022.09.21 |
비박스(bWAPP) A6 Text Files (Accounts) (0) | 2022.09.19 |
비박스(bWAPP) A6 POODLE Vulnerability (0) | 2022.09.19 |