이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A7 - Directory Traversal - Files
Directory Traversal
디렉터리 탐색(파일 경로 탐색이라고도 함)은 공격자가 응용 프로그램을 실행하는 서버에서 임의의 파일을 읽을 수 있도록 하는 웹 보안 취약점입니다. 여기에는 애플리케이션 코드 및 데이터, 백엔드 시스템에 대한 자격 증명, 민감한 운영 체제 파일이 포함될 수 있습니다. 경우에 따라 공격자가 서버의 임의 파일에 쓸 수 있어 응용 프로그램 데이터나 동작을 수정하고 궁극적으로 서버를 완전히 제어할 수 있습니다.
Directory Listing
웹 서버에서 디렉터리로 접속할 때 해당 디렉터리 내의 파일과 리스트가 보이는 기능입니다. 원래 용도는 원하는 문서를 찾아갈 수 있도록 만들어졌지만, 최근에는 문서의 저장 및 열람이 가능하다는 취약점을 이용해 탈취 및 서버 공격이 일어나고 있습니다.
난이도 하
directory_traversal_1.php 페이지는 경로 탐색 취약점을 이용하여 시스템의 파일을 확인할 수 있습니다.
해당 페이지의 취약점을 확인하기 전에 URL에 노출된 message.txt 파일의 내용부터 확인해 보도록 하겠습니다.
message.txt 파일의 경로를 확인해 보면 비박스가 설치된 디렉토리에 안에 해당 파일이 존재하고 directory_traversal_1.php 페이지에서는 page 변수를 사용하여 message.txt 파일의 내용을 페이지에 출력하는 것을 알 수 있습니다.
경로 (해당 경로는 사용자마다 다를수 있습니다)
C:\AutoSet9\bWAPP\bWAPP\message.txt
directory_traversal_1.php 페이지는 경로 탐색 취약점을 이용하여 시스템 파일의 내용을 확인하는 문제로 경로를 조작하여 실제 시스템 파일이 열리는지 알아보도록 하겠습니다. 여기서 실습하는 경로는 저와 다를 수 있음을 참고해 주시기 바랍니다.
여기서 실습할 부분은 C:\AutoSet9\server\conf\httpd.conf 파일의 내용을 확인해 보도록 하겠습니다.
message.txt 파일의 위치
C:\AutoSet9\bWAPP\bWAPP\message.txt
../ - 상위 경로로 가는 상대경로 지정
결과 값 C:\AutoSet9\bWAPP
../../ - 상위 경로로 가는 상대경로 지정
결과 값 C:\AutoSet9
../../../ - 상위 경로로 가는 상대경로 지정
C:\
httpd.conf 파일의 위치
C:\AutoSet9\server\conf\httpd.conf
../../server/conf/httpd.conf - 상위 경로 2단계 이동하여 server 디렉터리 안에 conf 디렉터리 안에 httpd.conf 파일을 확인
파일이 저장된 디렉터리와 파일명을 정확히 알고 있으면 원하는 데이터베이스 정보를 알아내기 쉽습니다. 보통에 리눅스에서는 passwd 파일은 보통 /etc/ 디렉터리 안에 있기 때문에 ../../../etc/passwd 와 같이 접근이 가능할 것입니다.
테스트를 해보실때에는 경로를 변경하면서 눈으로 확인해 가며 테스트를 하시기를 추천드립니다.
난이도 중/상
난이도 중에서는 directory_traversal_check_1 함수를 사용하는 것을 알 수 있습니다. directory_traversal_check_1 함수는 functions_external.php 에 정의되어 있습니다.
functions_external.php 에서 directory_traversal_check_1 함수를 살펴보면 php에서 지원하는 strpos() 함수를 통하여 필터링을 하고 있는 것을 알 수 있습니다.
strpos 함수 - 문자열에서 부분 문자열이 처음 나타나는 위치 찾기
난이도 상에서는 page 변수에 상대 경로를 입력하거나 존재하는 디렉터리를 입력하여도 다른 디렉터리로 이동하지 않습니다. 소스코드를 확인해 보면 directory_traversal_check_3 함수를 사용하고 있으며 변수에 입력한 데이터가 올바른 데이터인지 검사합니다.
directory_traversal_check_3 함수는 functions_external.php 에 정의되어 있으며 realpath 함수를 호출하여 상대 경로를 절대 경로로 반환하고 strpos 함수로 기본 경로에 사용자가 입력한 경로가 포함되는지 확인합니다. 여기서 잘못된 경로를 입력하게 되면 기본 경로가 아니기 때문에 오류 메시지를 출력합니다.
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A7 SQLiteManager Local File Inclusion (0) | 2022.09.27 |
---|---|
비박스(bWAPP) A7 Host Header Attack (Reset Poisoning) (0) | 2022.09.27 |
비박스(bWAPP) A7 Directory Traversal - Directories (0) | 2022.09.21 |
비박스(bWAPP) A7 Missing Functional Level Access Control (기능 수준의 접근 통제 누락) (0) | 2022.09.21 |
비박스(bWAPP) A6 Text Files (Accounts) (0) | 2022.09.19 |