반응형
SMALL

1. 파일 실행(File Inclusion) 공격 개요

 

[그림 1-1] 파일 실행 공격 과정

파일 실행 취약점은 공격자가 지정한 파일 내에 서버스크립트를 실행하는 공격이다. 공격 대상 서버의 내부에 존재하는 파일을 이용해 공격하는 내부 파일 실행(LFI), 공격자 서버에 존재하는 파일을 가져와 공격하는 원격 파일 실행(RFI)으로 구분된다. 내부 파일을 참조한다는 점은 LFI 공격과 경로조작(Directory Traversal) 공격과 많이 흡사해서 헷갈리는 경우가 있는데 LFI 공격은 참조한 파일 내에서 코드가 실행되면 실행한 결과 페이지에 보여주고 경로조작(Directory Traversal) 공격은 서버 자체 스크립트를 포함해서 파일의 내용 그대로 페이지에 보여준다는 점에서 차이점이 있다.

 

2. LFI 공격의 위험도 구분

PHP include(), include_once(), require(), require_once() 같은 include() 계열의 함수를 사용하면서 인자를 변수에서 입력받을 취약점이 발생한다.

  • 위험도 : include($_GET['filename']);
  • 위험도 : include($_GET['filename'].'.inc');
  • 위험도 : include('include.php');

 

위험도 PHP 실행에 포함되는 인자를 filename에서 받는다. 이는 어떤 파일이라도 모두 받을 있기 때문에 제일 위험하다.  위험도 .inc 문자열을 덧붙여서 파일을 참조한다. 경우엔 filename 인자가 받더라도 .inc 문자열 검증을 해야 해서 상대적으론 위험하지만 inc 확장자를 갖는 파일을 업로드 있으면 위험하다. 위험도 특정 파일을 지정한다. 공격자가 참조 파일 이름을 없기 때문에 실행 결과엔 어떤 파일이 참조됐는지 나타나지 않아 최상의 방어가 가능하다.

 

3. RFI 공격 실습

 

 <그림 3-1> 공격 코드

 

그림 3-1의 php 파일은 RFI를 이용해서 실행할 POC 코드다. 만약 해당 php 파일이 실행되면 system 함수 안에 있는 명령어가 실행되고 /etc/passwd 내용이 출력된다. php 파일을 웹 서버 경로인 /opt/lampp/htdocs에 저장한다.

 

<그림 3-2 file1.php 인클루드>

URL을 보면 page=file1.php가 있다. Page 파라미터로 지정된 file1.php 파일이 인클루드 되서 실습 페이지를 표시하고 있다. 페이지가 전환될 때마다 Page 파라미터 값이 바뀌는데 만약 RFI 취약점이 있다면 외부 호스트에 있는 파일 실행이 가능하다.

 

<그림 3-3 RFI 공격 성공>

 

page 파라미터 뒤에 http://칼리리눅스IP/파일명을 입력하고 실행하면 cat.php 파일이 인클루드 되어 /etc/passwd 내용이 노출되었음을 볼 수 있다.

 

4. LFI 공격 실습

 

취약점 스캐너는 LFI 경로 조작을 탐지할 주로 /etc/passwd 파일을 사용한다. 파일의 시작이 root:x:0:0:이기 때문에 탐지하기가 매우 쉽다. 이미 시스템에 존재하는 파일만 접근이 가능하기에 RFI 공격보단 피해 강도가 약하다. LFI 공격은 아래의 방식으로 접근을 시도한다.

 

http://192.168.171.173/dvwa/vulnerabilities/fi/?page=/etc/passwd

http://192.168.171.173/dvwa/vulnerabilities/fi/?page=../../../../../etc/passwd

http://192.168.171.173/dvwa/vulnerabilities/fi/?page=file:///etc/passwd

 

[그림 4-1] /etc/passwd 경로 조작

Page 파라미터에 /etc/passwd 입력 결과 페이지 상단에 리눅스 계정에 관련된 내용들이 노출됨을 있다.

 

[그림 4-2] 소스 코드

소스코드를 보면 PHP에서 실행되는 인자를 page 받고 있다. 별다른 검증도 없이 모든 파일들을 page 받기 때문에 매우 취약한 소스 코드며 파일 실행 취약점에 노출될 있다.

반응형
LIST

'웹해킹 > DVWA' 카테고리의 다른 글

파일 업로드 공격 대응 방안  (0) 2020.01.04
파일 업로드 공격 (2)  (0) 2020.01.04
파일 업로드 공격 (1)  (0) 2020.01.04
파일 실행(File Inclusion) 공격 (2)  (0) 2020.01.04
Command Injection 공격 (1)  (0) 2019.05.23
블로그 이미지

만년필석사

,