선 밖에 선 자유인

[PHP 보안] php.ini disable_function 사용시 유의사항 본문

IT/Security

[PHP 보안] php.ini disable_function 사용시 유의사항

Hotman 2012. 2. 28. 09:02

APM 기반의 웹 서버에서 PHP보안에 위협이되는 시스템 함수들은 가급적 disable 시키는 것이 좋습니다.

Ex) system(), exec(), passthru() 등등

해당 기능은 php.ini 파일의 disable_functions 옵션에 추가해 주면 가능합니다.

말씀하신 exec 함수를 disable_functions 옵션에 추가하여 테스트를 해보았습니다.

환경 구성은 PHP-5.2.5 에서 테스트 되었습니다.

- 우선 disable_functions 옵션을 설정하지 않은 상태에서 취약한 함수를 사용하는 파일을 생성했습니다.

/usr/local/apache/htdocs/exec.php

- 웹 브라우저에서 해당 파일을 읽어 보면 다음과 같이 ls al 의 결과 값이 $output 변수를 통해 출력 됩니다.

- php.ini 파일에 disable_functions 옵션에 취약한 함수 목록을 추가 후 Apache 웹 서버를 재시작

- 다시 웹 브라우저로 exec.php 파일을 읽었을 때 다음과 같은 결과를 볼 수 있습니다.

- 참고로 php 4 버전의 웹 서버에서는 disable_funcitons 옵션 적용 후 동일한 테스트를 한 결과입니다.

disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

적용 전

적용 후

위와 같이 exec() 함수 역시 기타 함수들과 동일하게 적용되는 것이 확인 됩니다.

참고로 disable_functions = 뒤에 내용을 추가할 때는 함수명들이 “ “ 안에 들어가야 하며 php.ini 수정 후에는

Apache 웹 서버를 재시작해야 합니다.

** 본 내용은 PHP 특정 버전에 대한 문제일 수 있음


Comments