최근 발견된 제로보드4의 보안 취약점을 패치하였습니다.
다음과 같은 파일의 내용이 변경되었습니다.
1. view.php
65 line
원 코드 : @setcookie('zb_s_check', $secret_str)
수정 : $HTTP_SESSION_VARS['zb_s_check'] = $secret_str;
2. write_ok.php
3번째 줄
추가 : $del_que1 = $del_que2 = null;
3. write.php
73 line
원 코드 :
if($data[is_secret]&&!$is_admin&&$data[ismember]!=$member[no]&&$HTTP_COOKIE_VARS[zb_s_check]!=$setup[no]."_".$no)
...
수정 코드 :
if($data[is_secret]&&!$is_admin&&$data[ismember]!=$member[no]&&$HTTP_SESSION_VARS[zb_s_check]!=$setup[no]."_".$no)
...
4. include/print_category.php
2번째 줄 추가
추가 코드 : if(!defined("_zb_lib_included")) return;
6. include/write.php
2번째줄 추가
추가 코드 : if(!defined("_zb_lib_included")) return;
--------------------
2009년 9월 22일자 제로보드 공식사이트의 게시물 내용입니다.
--------------------
취약점 안내
* 일자 : 2009. 09.
22
* 내용 : _zb_path, dir 변수에 대해 웹쉘 없이 직접 서버내 파일을 실행 할 수 있는 취약점 발생보고 : 한국
인터넷 진흥원 (http://www.kisa.or.kr)
* 대상 : 제로보드4 모든 버전
* 비고 : php5.2 이상에서만 발생하는 취약점과 php 버전 상관없이 발생하는 취약점
취약점 보완
1. 패치 파일 적용 : 첨부된 patch.2009.02.22.zip 파일의
압축을 풀고 덮어쓰기
2. 패치 적용 : 첨부된 zb4.20090922.patch 파일의 patch 명령어를 이용한 적용
3. 직접 수정
1. 대상 파일
1. _head.php
2. skin/zero_vote/ask_password.php
3. skin/zero_vote/error.php
4. skin/zero_vote/login.php
5. skin/zero_vote/setup.php
2. 수정 내용
1. _head.php
[수정전]
if(eregi("://",$_zb_path)||eregi("..",$_zb_path))
$_zb_path ="./";
[수정후]
if(eregi("://",$_zb_path)||eregi("..",$_zb_path)||eregi("^/",$_zb_path)||eregi("data:;",$_zb_path))
$_zb_path ="./";
2. skin/zero_vote/ 파일들
[수정전]
if(eregi("://",$dir)||eregi("..",$dir)) $dir ="./";
[수정후]
if(eregi("://",$dir)||eregi("..",$dir)||eregi("^/",$dir)||eregi("data:;",$dir))
$dir ="./";
--------------------
그런데 2009년 9월 22일자 패치를 하면 문제가 발생합니다.
그래서 http://www.xpressengine.com/?_filter=search&mid=zb4_qna&search_keyword=%ED%8C%A8%EC%B9%98&search_target=title&document_srl=18380208게
시물을 참고하여
_head.php 파일을 아래와 같이 수정하였습니다.
if(!preg_match('/^' . addcslashes(dirname(__FILE__), '/') . '/i',
$_zb_path)) $_zb_path = './'; //조민님 팁 적용
include $_zb_dir."lib.php"; //조민님 팁 적용
//if(eregi(":\/\/",$_zb_path)||eregi("\.\.",$_zb_path)||eregi("^\/",$_zb_path)||eregi("data:;",$_zb_path))
$_zb_path ="./"; //2009.09.22 패치 후 에러
//include $_zb_path."lib.php"; //2009.09.22 패치 후 에러
'컴퓨터 > 소프트웨어' 카테고리의 다른 글
답글(리플) 쓸때 원본글 본문과 제목 안나오게 하기 (0) | 2010.05.23 |
---|---|
제로보드 4 설치 방법 (0) | 2010.05.22 |
그누보드에서 게시판 만들기 (0) | 2010.05.22 |
그누보드 설치하기 (0) | 2010.05.22 |
제로보드 XE 설치하기 (0) | 2010.05.22 |