뭉크테크
File Inclusion 모의해킹 본문
목차
- File Inclusion 이론
- File Inclusion 실습
- File Inclusion 대응방안
File Inclusion 이론
- 주로 PHP 애플리케이션에서 발생하는 취약점으로 인해 발생하는 공격
- 일반 사용자가 include() 함수로 외부 및 서버 내부 파일을 웹 어플리케이션에 직접 삽입할 수 있는 공격
- 동적으로 파일을 로드할 때 공격 대상 파일이 서버 내부에 위치하면 LFI ( Local File Inclusion ), 공격 파일의 위치가 공격 대상 서버가 아닌 외부 서버에 위치하면 RFI (Remote File Inclusion)
File Inclusion 실습
- file inclusion 탭을 클릭하였더니 삽입할 수 있는 파일 3 개가 있음을 확인하였다.
- file1.php를 클릭하였더니, url fragment에 file1.php가 입력된 것을 확인
- 이는 즉, 서버 내부에 있는 file1.php를 url 을 통해 호출되는 메커니즘 확인
시나리오
- 서버 내부에 파일을 호출하고자 할 때, page 파라미터에 탈취하고자 하는 파일 경로를 삽입하면 되는 것으로 파악.
- URL을 조작하여 서버 내부에 있는 password 파일을 호출 및 탈취 시도
- 해당 페이지를 운영하는 서버 안(본인 컴퓨터)에 있는 password 파일 경로를 예상하여 URL 경로 page 매개변수 값으로 /etc/passwd 를 전달하여 LFI 시도
- 그 결과, 아무런 권한 검사 혹은, 필터링 없이 해당 정보가 호출되어 웹 어플리케이션 상에 출력된 것을 확인해 볼 수 있음
- 그 다음은 서버의 파일과 상관없는 외부 링크를 삽입하여 RFI를 시도
- 외부 링크 및 파일에 대한 검사 없이 해당 naver.com 링크가 삽입되어 출력된 것을 알 수 있음
File Inclusion 대응 방안
- 해당 페이지에서 명시적으로 URL fragment에 삽입할 수 있는 요청들만 명시하고, 그 이외의 요청에 대해서 거부하는 로직인 화이트 리스트 방식을 채택한다.
- 추가적으로 RFI 대응 방안을 살펴본다.
- allow_url_fopen = off 설정을 통해 파일 읽기 함수를 사용할 때 원격 URL을 열지 않도록 설정한다.
- allow_url_include = off 설정을 통해 파일 포함 명령(include, require)을 사용할 때 원격 URL을 포함하지 않도록 설정
- 이를 통해 외부 파일이 삽입되는 것을 원천적으로 거부하여 차단을 한다.
'CERT' 카테고리의 다른 글
Blind SQL Injection 모의해킹 (0) | 2024.07.28 |
---|---|
Insecure Captcha 모의해킹 (0) | 2024.07.27 |
BruteForce 모의해킹 (0) | 2024.07.27 |
SQL Injection(Error Bases Injection) 모의해킹 (0) | 2024.07.21 |
File Upload 모의해킹 (0) | 2024.06.22 |