DVWA실습 (File Inclusion)

※ File Inclusion 취약점이란?
-  파라미터 값을 정확하게 검사하지 않을 때에 공격자가 피해자 대상 서버에서 시스템 파일을 읽어 탈취하거나 공격자가 만들어둔 소스코드를 Include 하도록 유도하는 공격입니다.

- LFI (Local File Inclusion) : 공격자가 공격 대상 서버에 업로드되어 있는(위치한) 파일을 실행, 공격에 활용하는 취약점

- RFI (Remote File Inclusion) : 공격자가 외부 서버(공격자 서버 등)에 있는 원격 파일을 URL 파라미터에 포함, 전달하여 실행

 

1.Low 단계 , medium 단계

더보기
페이지 화면

- 첫 페이지를 보면 파라미터 값으로 include.php라는 파일을 불러오는 것을 확인할 수 있다. 이를 다른 것으로 확인하면 될 것 같다는 생각이 든다.

/etc/passwd

- /etc/passwd 불러오고 싶으나 현재 디렉토리 경로를 모르기 때문에 최상위 디렉터리로 가기 위해서 /../../../ .... 를 이용하는 Path Traversal 공격으로 최상위 폴더로 이동하여 /etc/passwd 라는 중요한 파일을 불러올 수 있다.

 

※ /etc/passwd 란?

- /etc란 시스템의 부팅 및 셧다운시 필요한 파일들과 시스템의 전반적인 설정파일들이 있는 디렉토리이다. 여기에 passwd란 파일을 계정정보가 포함되어 있는 파일이다.

 

※ Path Traversal 취약점

- 임의로 디렉토리 경로로 조작하여 권한 외의 파일에 접근 가능한 취약점

2. High 단계

더보기

- High단계는 이전과 같은 우회방법이 적용되지 않았다. 그러므로 소스코드를 확인해 보겠다.

high 소스코드

- 위 소스코드를 보았을 때 file~로 시작하거나 include.php와 정확히 일치해야 한다는 필터링이 잡혀있다. 

- 이를 생각해 봤을 때 include.php보다는 file* 을 사용하란 거 같다. 

( '*'은 모든 문자라는 뜻이다.)

파일경로

- file1.php에 하니까 file1.php는 디렉터리가 아니라서 디렉토리 경로를 바꿀 수 없었다.

디렉토리 경로 변경

- 그러므로 file이라는 필터를 우회할 수 있도록 임의의 디렉터리를 적어주고 그 이후 최상위 경로로 이동하여 /etc/paswd를 사용이 가능하였다.

3. 대응방안

더보기

1) php 기준으로 php.ini 파일에서 allow_url_fopen, allow_url_include, display_error 설정을 모두 off로 설정

2) 파일 이름을 입력받는 경우 입력값 화이트 리스트방식으로 검증을 한다.

3) 웹 서버의 실행 권한을 최소화하고, 웹 애플리케이션이 필요로 하는 파일에 대한 읽기 권한만 부여하도록 한다.

4) 절대경로 대신 상대경로를 사용하여 공격자가 특정 디렉토리로 이동하는 것을 방지 

 

* 참조 사이트

https://isc9511.tistory.com/109

 

파일 삽입 취약점 (File Inclusion Vulnerability)

* 파일 삽입 취약점 : 공격자가 악성 서버 스크립트를 서버에 전달, 해당 페이지를 통해 악성 코드가 실행 되도록 하는 취약점 - 악성 스크립트가 삽입되는 위치에 따라, LFI(Local File Inclusion), RFI(Re

isc9511.tistory.com

 

'DVWA' 카테고리의 다른 글

DVWA실습(XSS-Reflected)  (0) 2023.12.05
DVWA실습 (XSS -DOM)  (1) 2023.12.04
DVWA 실습(File Upload - Hard)  (0) 2023.12.01
DVWA 실습 (File Upload - Medium)  (0) 2023.12.01
DVWA 실습 (File Upload - low)  (1) 2023.11.30