최근 발견된 제로보드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) | 2011.01.27 |
---|---|
세계지도 그래픽 사진 (3) | 2011.01.27 |
최후의 만찬 애니메이션 그림 (0) | 2011.01.27 |
여름 수련회(여름캠프) 로고, 마크 (0) | 2011.01.27 |
무선 인터넷 속도가 나지 않는다면 체크하세요!! (0) | 2010.08.14 |
지붕뚫고 하이킥 포스터 수정하기 (0) | 2010.03.17 |
HTML 요약 정리 (2) | 2010.03.15 |
웹에디터 어떤한 것들이 있는가? (1) | 2010.03.13 |
제로보드 4 설치 방법 (14) | 2010.03.11 |
윈도우 로고 디자인 psd 파일 (0) | 2010.03.10 |