일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Proxy
- centos 8
- ansible
- x-pack
- ssh key 배포
- elastic stack
- PlayBook
- 로그인불가
- ELASTIC
- miniconda
- G-suite
- docker
- 보안양파
- application security
- 한글가이드
- freebsd
- proxycfg
- bash
- Kibana
- xe guest utilities
- hardening
- GitLab
- pfsense
- Kibana server is not ready yet
- endpoint security
- XCP-ng
- Elasticsearch
- Windows
- macos
- Today
- Total
선 밖에 선 자유인
[PHP 보안] php.ini disable_function 사용시 유의사항 본문
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 특정 버전에 대한 문제일 수 있음