웹마스터 팁

저희 호스팅에서 한분께서
php 를 이용하여 /etc/passwd 를 열수있다고 알려주셨습니다.

물론 그 문제점에 대해서는 알고있었지만, 서버를 이전한후 고3이 되어버려서 바쁜관계로 ㅡㅡ;
보안에 관해서 신경을 안쓰고, 모든 쉘발급을 중지한 상태였습니다.
그러나 쓰시던분께서 이런 취약점을 알려주셔서 관심을 가지게 되었습니다.

일단 여는 방법은 제로보드의 경우

[ 공격방법은 다른분들의 요청에 의해 삭제합니다 ]

이런식입니다.(attack-dest 는 공격대상입니다)

좀더 응용하자면

require ("");

를 응용해서도 열람이 가능합니다. 처음엔 흠칫할정도로 놀랐죠.

php.net 사이트에서 여러가지 Secure 섹션을 열람해 보고 몇가지 해결책이 있다는것을 발견했습니다.
(완벽한것은 아닐것입니다)

버추어 호스팅 세팅에
php_admin_value open_basedir /home/ID:/home/ID/public_html

을 추가합니다.
그러면 basedir 이외의 파일은 access 를 못할것입니다.
그러나 문제점은, 아주 자유롭게 이용을 못하는것이죠.

그 외에는 Safe_mode 를 이용하지만 내공이 부족하여.. 사용치 않고있습니다.

-- 다음은 open_basedir 을 사용해서 /etc/passwd 를 억세스 하고자 할때 발생하는 에러메시지입니다 --
Warning: main() [function.main]: open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/home/ID) in /home/ID/public_html/bbs/login.php on line 68

Warning: main(/etc/passwd) [function.main]: failed to create stream: Operation not permitted in /home/ID/public_html/bbs/login.php on line 68

Warning: main() [function.main]: Failed opening '/etc/passwd' for inclusion (include_path='.:/usr/local/php/lib/php') in /home/ID/public_html/bbs/login.php on line 68

---------------------------------------------------------------------------------------------------

이 외에는 퍼미션을 직접 변경하는 방법이 있으나.. 타자가 100000 타가 아닌이상 ㅡ.ㅡ; 모든 파일에대해 퍼미션을
변경해줄수도 없습니다. 물론 효율적인 방법도 아니죠.

혹시 이 문제점을 해결하신분은 리플달아주십시요.