다름이 아니라 금주 서버 점검때 게시판 취약점에 대해 중점적으로 모니터링을 하였습니다. 일부 고객님들의 게시판에서 아래와 같은 파일들이 검출이 되었습니다. /UserID/html/게시판/폴더/폴더/.htaccess
/UserID/html/게시판/폴더/폴더/index.php
/UserID/html/게시판/폴더/폴더/send.php이 파일들을 테스트해보니 제로보드 게시판을 통해서 스펨메일을 발송하는 기능이 확인이 되어 긴급하게 패치를 했습니다.
저희가 일괄 적용을 하려했으나 일부 고객님들께서는 제로보드를 수정하여 이용하고 계시기 때문에 아래와 같이 패치 안내를 드립니다.
- htaccess파일 업로드 금지 패치(원문) -http://www.zeroboard.com/zb4_download/803852 [새창 이동]
제로보드에서 .htaccess 파일 업로드를 통한 보안버그에 대해 패치를 하였습니다.
KISA에서 예전에 알려주신 것이였는데 제가 이미 패치를 한 줄 알고 있다가 다시
연락을 받고 부랴 부랴 패치하게 되었습니다.
버그 관리 소홀에 대해서 진심으로 죄송하다는 말씀드리겠습니다.
write_ok.php 파일에서 첨부파일 1, 2에 대해 파일이름의 제일 앞에
. (점, dot)이 있는지에 대해서만 체크하였기에 별도의 패치레벨을 올리지 않았습니다.
=== write_ok.php ===
211번째줄
if(substr($s_file_name1,0,1)=='.'||eregi(".inc",$s_file_name1)||
eregi(".phtm",$s_file_name1)||eregi(".htm",$s_file_name1)||
eregi(".shtm",$s_file_name1)||eregi(".ztx",$s_file_name1)||
eregi(".php",$s_file_name1)||eregi(".dot",$s_file_name1)||
eregi(".asp",$s_file_name1)||eregi(".cgi",$s_file_name1)||
eregi(".pl",$s_file_name1)) Error("Html, PHP 관련파일은 업로드할수 없습니다");
252번째줄
if(substr($s_file_name2,0,1)=='.'||eregi(".inc",$s_file_name2)||
eregi(".pht",$s_file_name2)||eregi(".htm",$s_file_name2)||
eregi(".shtml",$s_file_name2)||eregi(".ztx",$s_file_name2)||
eregi(".php",$s_file_name2)||eregi(".dot",$s_file_name1)||
eregi(".asp",$s_file_name2)||eregi(".cgi",$s_file_name2)||
eregi(".pl",$s_file_name2))
와 같이 211, 252번째라인의 제일 앞에 파일이름을 검사하여 . 으로 시작하는
일반적이지 않은 모든 파일에 대해서 업로드 금지를 하도록 하였습니다.
기존에 사용하시던 분은 첨부된 write_ok.zip 파일을 다운로드 받아서
덮어쓰시거나 위 211, 252번째 줄을 수정하시면 됩니다.
- 관리자 메일 발송에서 SQL Injection 발생 보안 버그 수정(원문) -http://www.zeroboard.com/zb4_download/803893 [새창 이동]
관리자 메일 발송 코드에서 $s_que 변수를 이용한 SQL Injection을 일으킬 수 있는
코드가 발견되어 패치합니다.
첨부된 admin_sendmail_ok.zip 파일의 압축을 풀면 나오는 admin_sendmail_ok.php파일
을 사용하시는 제로보드4의 디렉토리에 덮어쓰시면 됩니다.
수정된 부분은 다음과 같습니다.
= admin_sendmail_ok.php ======================================================
@@ -28,16 +28,18 @@
if(!$true) $true = 0;
if(!$nomailing) $nomailing = 0;
if(!$sendnum) $sendnum = 100;
+ $group_no = (int)$group_no;
+ $s_que = '';
if(!$total_member_num) {
$temp=mysql_fetch_array(mysql_query("select count(*) from
$member_table where group_no='$group_no'",$connect));
$total_member_num=$temp[0];
}
if($cart) {
- $temp=explode("||",$cart);
- $s_que=" and ( no='$temp[1]' ";
- for($i=2;$i구 버전의 게시판을 이용하시는 고객님께서는 보안 패치를 하시어 서비스 이용에 불편이 없으시길 바랍니다.
앞으로도 고객 여러분께 보다 나은 서비스 제공을 위해 최선을 다할 것을 약속드립니다. 감사합니다.