관리 메뉴

Information Security

WordPress Plugin WP with Spritz 1.0 - Remote File Inclusion 본문

CVE 취약점

WordPress Plugin WP with Spritz 1.0 - Remote File Inclusion

HackingPractice 2019. 6. 2. 11:48

Remote File Inclusion? 

 RFI 취약점은 공격자가 악성 스크립트를 서비스 서버에 전달하여 해당 페이지를 통하여 전달한 악성 코드가 실행되도록 하는 것이다. 웹 어플리케이션에 공격자 자신의 코드를 원격으로 삽입이 가능하다.

 

-  $_GET, $_POST 값을 전달 받는 과정에서 파라메타 값을 제대로 검사하지 않아 발생하는 취약점 (PHP)

 

실습

그림 1-1과 같이 Spritz 1.0 플러그인을 활성화 시킨다. 

그림 1-1 Spritz 플러그인 활성화

그림 1-2처럼 /wp-content/plugins/wp-with-spritz/wp.spritz.content.filter.php?url=../../../wp-config.php 공격 코드를 삽입해 워드 프레스 환경설정 파일 wp-config.php 내용을 확인할 수 있다.

그림 1-2 LFI 공격 

그림 1-3은 워드 프레스 환경 설정 파일 wp-config.php 내용이다. 그림 1-2와 같은 내용인 것을 확인할 수 있다.

그림 1-3 wp-config.php 파일 내용

그림 1-4는 LFI 공격 후 페이지 소스코드 보기에서 데이터베이스 정보가 노출되는 것을 확인할 수 있다.

그림 1-4 데이터베이스 정보 노출

대응방안

그림 1-5를 보면 'url' 파라미터 값을 받지만 특정 파일을 참조하는 코드 또는 경로 이동 명령어 필터링 등의 검증하는 코드가 없다. 공격자는 어느 위치에 있는 파일을 불러올 수 있다.

그림 1-5 취약점 소스코드

지정한 디렉터리 외부로 이동할 수 없도록 "../"과 같은 문자를 다른 문자로 치환해준다.

문자 필터링 (PHP)
str_replace(".","",$path);
str_replace("/",""$filename);

 

PHP 환경설정 파일 수정으로 원격지 파일을 열지 못하게 OFF로 설정을 해준다. (php.ini 파일)

그림 1-6 php.ini 환경설정 파일