본문 바로가기
웹디자인

제로보드 4 보안패치 수정방법

by URBAN 2010. 3. 27.
반응형





제로보드 4 보안패치 수정방법


최근 발견된 제로보드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 패치 후 에러




반응형