나는 제로보드가 싫어요!!

아는 사람은 다 안다는 zero_vote 스킨 관련된 취약점 때문에 오늘 한 방 먹었습니다.

CPU 점유율이 이상하게 높아서 프로세스 리스트를 보니 perl 로 만들어진 irc 서버같은게 떠있군요. 덕분에 6시간동안 cpu 안정성 테스트를 할 수 있었습니다. 다행히 일찍(?) 발견했기 때문에 error_log 를 살펴볼 수 있어 어떤 식으로 들어왔는지를 살펴볼 수 있었습니다.

zero_vote 의 취약점을 노리고 code injection 을 통해 wget 으로 nr.txt 를 받아 실행을 시키는 방식이었습니다. acl 을 이용해서 apache 사용자에겐 curl 과 wget 등도 실행시키지 못하도록 막아버려야겠습니다.

zero_vote 스킨에 있는 < ? include "$dir/뭐뭐뭐.php"; ?> 식의 코드가 문제입니다. $dir 변수를 통해 code injection 이 가능하므로 상당히 위험하다고 할 수 있습니다만, 역시나 대부분의 사용자는 그런 세세한 것들에 별 관심이 없기 때문에 관리자들만 죽어나는 것 같습니다.

코드 맨 윗부분에 < ?PHP if(eregi(":\/\/",$dir)) $dir=""; ?> 정도의 코드를 넣어주면 해결할 수가 있는데, 똑같은 문제를 가진 스킨이 하나둘이 아니더군요. 맘 같아선 “rm -rf skin” 을 치고 싶지만 그럴 순 없기에 또 심각하게 고민 해야했습니다.

결국 /usr/share/php/zboard/prevent_hack.php 정도의 파일을 만들어 저 코드를 넣어주고… 사용자들의 제로보드 스킨 디렉토리에 “php_value auto_prepend_file /usr/share/php/zboard/prevent_hack.php
” 를 넣은 .htaccess 파일을 만들어줬습니다. 나중에 생각해보니 어짜피 .htaccess 를 이용할 거면 그냥 skin directory 이하로 register_global 값을 off 로 만들어주는게 훨씬 안전한 해결책이 아니었나 싶습니다.

뭐하튼 결론은 제로보드 즐입니다. -_-;;

p.s) include “$dir/value.php3″ 이니까… http://…../value.php3 라는 공격용 스크립만 만들면 아주 간단히 뚤리는 문제인데, allow_url_fopen 을 막는 것으로도 해결할 수 있을 듯 합니다 :)

Published by

5 thoughts on “나는 제로보드가 싫어요!!”

  1. 이번엔 누구얌 -_-)
    나 제로보드 다 지운지 오래됐엉 으흐헤헤;;
    제롭빠한테 업데뜨 좀 하라구 압력 넣어봐;;

  2. 하지만 해당 서버에 누군가가 자료 업로드를 할 수 있게 되면 여전히 문제가 됩니당. txt여도 상관없고 jpg여도 상관 없고요. 로컬상에서 include 하니 :// 도 안 들어가요.

  3. 업로드해서 뭐라고 저장하는지까지 알아야 되니 조금 어렵겠죠 ;) 그리고 파일이름이 value.php3 로 끝나야 한다는 제약도 있으니까요…

    뭐 하튼 제로보드 골치아퍼요 -_-;;

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">