제로보드4의 보안 취약점에 대한 정보와 패치 자료들을 공유하는 곳입니다.
제로보드4로 사이트를 운영하시는 분들의 많은 관심과 정보 공유 부탁드립니다.
보안 관련 내용이 아닌 경우 삭제될 수 있습니다.

[수정#1] 2009. 09. 22 보안 취약점 패치

조회 수 16447 추천 수 0 2009.09.22 12:09:35

[수정 #1] outlogin.php 파일은 패치 대상이 아니어서 제거되었고 skin/zero_vote/setup.php 파일이 추가되었습니다.

취약점 안내

  • 일자 : 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 ="./";

이 취약점은 매우 위험한 취약점으로 꼭 패치를 해주세요.
그리고 가능하다면 제로보드4를 XpressEngine 또는 다른 프로그램으로 전환하는 것을 권장합니다.

늘 취약점과 해결 방법을 알려주시는 한국 인터넷 진흥원(http://www.kisa.or.kr) 에 감사드립니다.


엮인글 '3'

http://www.xpressengine.com/18319857/7b3/trackback

2009.09.28 14:23

제로보드(Zeroboard) 보안패치와 메인화면 백지화 문제 - 희망을 보고, 나는 쓰네

제로보드에 새로운 보안패치가 나왔습니다. http://www.xpressengine.com/zb4_security/18319857 설문 스킨을 사용하지 않는다면 _head.php 파일만 수정을 하면 되는데, 문제는 head.php 파일을 보안패치 적용을 하고 나면 메인화면이 하얗게 아무것도 안나온다는...-_-;; 호스팅업체쪽에 문제가 있나 싶어서 문의를 했더니 답변이 왔는데, 확인해 보니 outlogin.php와 _head.php 에서 오류가 생깁..

2009.09.27 13:53

dragonJK의 생각 - jinkpark's me2DAY

제로보드4로 만들어진 홈페이지를 여기 에 나오는대로 보안패치를 했더니 메인 페이지가 백지로 나옵니다 ㅜ.ㅜ 어떻케 해야할까요 해결방법을 알려주세요..

2009.09.22 21:40

제로보드 4.1 pl9 보안 패치, 여러 파일 한꺼번에 하기. - 如是我聞

자세한 설명은 제로보드 공지 http://www.xpressengine.com/zb4_security/18319857 인터넷 침해사고 대응 지원센터 http://www.krcert.net/secureNoticeView.do?seq=-1&num=359 참고. 호스팅 업체나 서버를 가지고 계신 분 중 여러 계정에 제로보드를 설치하신 경우. 보통 /home 디렉토리에 가서 아래 명령을 실행하면 됩니다. _head.php 파일 find...


profile

[레벨:9]제이엔지

2009.09.22 20:29:28
*.78.140.240

제로님! 이렇게 알려주셔서 너무나 고맙습니다.

정말 수고많으셨어요.

profile

[레벨:9]제이엔지

2009.09.22 20:31:15
*.78.140.240

취약점 알려주신 한국인터넷진흥원에도 저 역시 너무나 감사드려요.

제가 아직 제로보드4 쓰고 있는데 고민스럽네요.

제로보드XE로 언젠간 쓰긴 써야겠다싶은 생각이 들어요.

 

profile

[레벨:9]제이엔지

2009.09.22 20:37:33
*.78.140.240

http://www.krcert.or.kr/index.jsp

 

보안문제 알고싶어서...제가 이 사이트 자주 들여다보는데...

인터넷침해대응센타 이 사이트에 제로님이 이곳에 올리신 공지가

오늘 그곳에 보안공지로 올려졌네요.

[레벨:2]다크진

2009.09.22 20:38:20
*.125.24.37

_head 파일을 위와 같이 수정하면 도메인 www 를 인식못하는거 같습니다. 제 서버만의 문제인지 모르겠네요

[레벨:2]다라나

2009.09.22 20:48:58
*.192.139.169

 _head.php 파일을 위와 같이(if 문 안에 eregi가 4개인 경우) 수정하면 if 문의 세번째 eregi("^\/",$_zb_path) 때문에 에러가 발생합니다. 제로보드 4의 원프레임 설명서를 보면 상단에 불러들이는 파일에 $_zb_path = '자신의 절대경로' 를 쓰게 되어 있는데 여기서 세번째 eregi 문에 걸리게 됩니다. 그래서 $_zb_path가 제대로 지정이 안되는 겁니다.


상단 불러들이는 파일에 $_zb_path 를 지정해주는 방식으로 개발된 사이트는 패치하면 문제가 발생합니다. 저 조건문이 정확히 어떤 역할을 하는지 아직 모르겠는데 누가 설명 좀 해주시면 다른 조건문을 쓸 수 있을 거 같은데요. 만약 저 조건문을 꼭 써야 한다면 악몽인데요. ㅡ.ㅡ;;

[레벨:2]다크진

2009.09.22 21:02:32
*.125.24.37

아하 그래서 제 사이트가 패치하고 나서 경로를 찾지 못했던 거군요... 이를 어쩌나 난감하네요
profile

[레벨:9]제이엔지

2009.09.22 21:28:54
*.78.140.240

모두 그대로 패치해주고 왔는데

제 홈은 현재 아무 문제없이 잘 열리고 있네요.

제로보드4 사용자분들은 모두 꼭 얼른 패치하셔요~

 

그리고 항상 만일의 경우 대비해서

반드시 계정홈자료를 가끔씩 꼬옥 자주 백업해주세요.

제로보드4 사용자라면 디비백업도 필수!! 제일 중요!!

 

[레벨:2]다라나

2009.09.23 10:07:26
*.192.139.169

 _head.php 의 $_zb_path 경우는 사용 목적이 명확하기 때문에 문제가 발생할 때마다 조건문을 추가하는 방식보다는 사용목적에 맞는 경우만 점검하도록 하는 게 더 낫지 않을까 싶습니다. 즉 _head.php 파일이 위치한 곳의 경로가 $_zb_path 와 일치한다는 뜻이죠. 제로보드 설명서에도 $_zb_path는 절대 경로로 지정하라고 되어 있으니까요.


이런 경우에 조건문을 다음과 같이 바꾸는 게 어떨까요?

if(!preg_match('/^' . addcslashes(dirname(__FILE__), '/') . '/i', $_zb_path)) $_zb_path = './';
이렇게 사용하시려면 어떻게 돌아가는지 이해를 하신 후에 적용하셔야 합니다.

[레벨:0]秘傳

2009.09.24 02:22:49
*.70.64.140

사실상 GET이나 POST 를 통해 dir이나, _zb_path의 값을 지정했을때의 문제가 되므로,


    if(isset($_GET[_zb_path]) || isset($_POST[_zb_path]))
        return;
or

    if(isset($_GET['dir']) || isset($_POST['dir']))
        return;


도 좋은 방법인것 같습니다

[레벨:1]지오넥스

2009.09.25 00:45:27
*.22.13.61

_head파일 패치를 하면 index페이지만 백지상태로 나오는데

위에 다라나 님의 말씀처럼 outlogin에서 문제가 생기는듯합니다.

이거 어떻게 해결 할 수 있는 방법이 없는가요???

 

[레벨:1]클래식웨딩

2009.09.25 23:31:40
*.144.208.161

저도 패치 후 인덱스는 백지로 나오네요...ㅜㅜ

이거 어떻게 해야 하는지 방법을 좀 가르쳐 주세요~

[레벨:6]봄군

2009.09.26 00:13:41
*.159.170.241

저도 그러네요...;

[레벨:1]단비스

2009.09.28 19:28:46
*.110.236.54

 메인화면이나 로그인관련 부분이 백지로 하얗게 나오시는 분들은

http://danbisw.tistory.com/6769 를 참고해보세요~

[레벨:1]클래식웨딩

2009.09.29 00:25:58
*.144.208.161

정보 감사합니다^^

홈에 뭘적어야 하는지 몰라서 한참 찾았는데^^;;;

드뎌 찾았습니당~ㅎㅎㅎ

감사합니다~~~

[레벨:3]국가대표

2009.09.30 13:18:01
*.132.102.184

문제가 잇을경우 zb4 절대경로를 초기화 시키는것인데

오히려 문제있을때 zb4 경로를 변수에 넣어주네요-_-;;

이건 해결방법이 아닙니다.

[레벨:1]강진택

2009.10.06 19:09:52
*.36.230.132

좋은 정보 감사합니다.

 

그런데 eregi("data:;",$dir) 이 부분은 도저히 뭔지 이해가 안가네요.

 

저렇게 마킹하면 왜 해킹처리가 되는건지 아시는 분은 답변 부탁드릴께요. :-)

[레벨:4]James964

2009.10.08 10:45:48
*.34.255.243

수정후에 글수정을 하니 이런 에러가 나네요.  _head.php를 원상복귀하니 괜찮고요.

Warning: include(./lib.php) [function.include]: failed to open stream: No such file or directory in /web/home/chea/html/bbs/_head.php on line 16

Warning: include() [function.include]: Failed opening './lib.php' for inclusion (include_path='.:/usr/share/pear') in /web/home/chea/html/bbs/_head.php on line 16

Fatal error: Call to undefined function dbconn() in /web/home/chea/html/bbs/_head.php on line 44

[레벨:1]시요님

2009.10.24 15:59:56
*.36.145.200

  1. _head.php

이건 어디다가 덮어 써야 하는 건가요? ㅜㅜ

[레벨:2]하늘물가

2009.10.26 18:38:55
*.43.89.27

설치된 제로보드4의 경로에 덮어씌우시면됩니다.  /home/자신의계정/bbs 가 제로보드 설치경로라면 /home/자기계정/bbs에 기존파일을

백업하신후(만약을대비해서) 복사해서 넣으시면됩니다.

[레벨:2]권성현167

2009.10.28 15:33:03
*.147.215.139

해결책을 취합해보니 이런 결과가 나옵니다.^^

 

 if(eregi(":\/\/",$_zb_path)||eregi("\.\.",$_zb_path)||eregi("data:;",$_zb_path)) $_zb_path ="./";
 if(!preg_match('/^' . addcslashes(dirname(__FILE__), '/') . '/i', $_zb_path)) $_zb_path = './';

 

현재 이상 없이 동작을 하지만 위 설정이 문제가 될런지 고수분들 조안 주세요.^^

 

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 보안 정보 공유 게시판 안내 [1] [레벨:30]zero 2009-09-11 9025
» [수정#1] 2009. 09. 22 보안 취약점 패치 file [20] [3] [레벨:30]zero 2009-09-22 16447
77 제로보드 게시물정리의 요상한 현상 imagefile [레벨:1]액스맨 2010-08-31 78
76 최근글 있는 첫 페이지 하단에 에러 메세지~ 부탁요~ [2] [레벨:1]윤선아822 2010-08-18 174
75 MySql 4.0에서 4.1 서버이전함으로써 제로보드 4,1 P2 패스워드 수정불가능?? (도움요청!!) [1] [레벨:3]hellosamyoo 2010-07-30 351
74 [중요] 악성스크립트, 해킹등으로 괴로움을 겪는 제로보드4 이용자님들께. [1] [레벨:3]고펑 2010-07-29 658
73 본문글 앞에 스크립트가 계속 생겨요... [레벨:3]roks821 2010-07-24 199
72 sql 인젝션 해결법 가르쳐주세요 [2] [레벨:1]이주창 2010-07-20 340
71 인터넷 침해 대응센터에 보안프로그램이 있네요... [레벨:6]아가페 2010-07-17 274
70 UKS님의 열장 갤러입니다.검색관련... [레벨:1]엔돌핀941 2010-06-25 239
69 제발.. 제발 살러주세요 .. 게시판이.. imagefile [레벨:1]소우리 2010-06-19 898
68 잘되던 게시판이 테그만 안됩니다. [2] [레벨:0]김연각 2010-06-15 249
67 댓글에 그림삽입하는거 몰라서요;; file [2] [레벨:1]라야102 2010-06-08 284
66 제로보드4 사용중인데 모든 html파일과 자바스크립트 파일안에 이런 것이? [1] [레벨:1]로이460 2010-05-26 967
65 해킹 파일 [2] [레벨:3]유사너지아 2010-05-16 977
64 게시판깨짐 [4] [레벨:1]패랭이꽃 2010-05-14 507
63 게시판 댓글에 스팸글이 너무 많이 올라와요~도와주세요--; [4] [레벨:1]choi344 2010-05-09 888
62 처음으로 글쓰는거 같네요.... _head.php 로 문제 되시는분들께.. [레벨:0]눈송이 2010-05-08 296
61 서버 접속 폭증 현상이 발생하고 있습니다 [1] [레벨:1]박민호853 2010-04-29 640
60 모든 php 파일,head,foot 파일에 맨위에 이런 코드가 심어져있네요. [1] [레벨:2]행복814 2010-04-26 770
59 제로보드 개인회원 정보 유출 [3] [레벨:4]James964 2010-04-14 1625
58 문제점좀 살펴봐 주세요 [2] [레벨:1]김도희 2010-04-12 380