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

<?
require "../bbs/lib.php"; // ◀--- 사이트의 상황에 맞게 수정해주세요~
if(!$connect) $connect = dbconn();
$View_Level="1"; // 실행권한조정(현재1등급)
if(!$member) $member=member_info();
if(!$member[no]) Error("권한이 없습니다(1)!  ","window.close");
if($member[level]>$View_Level) Error("권한이 없습니다(2)!  ","window.close");

$que2 = "select name from zetyx_admin_table";
$result2=mysql_query($que2) or Error(mysql_error());
while($temp2 = mysql_fetch_array($result2)){
$board_name=$temp2[name];
$check=0;
echo("$board_name - 악성스크립트 인젝션공격 확인시작!<br/>\n");
$que = "select no, memo from zetyx_board_$board_name order by no desc";
$result=mysql_query($que) or Error(mysql_error());
while($data = mysql_fetch_array($result)){
    $mem_no = $data[no];
    $check_memo=$data[memo];

///////////////////////////////////////////////////////////////////////////////////////////////////////////
    $sp_change_word = "SCRIPT Language=JavaScript src="./;
    $sp_change_word_pattern ="/".str_replace("\0","\\0",preg_quote($sp_change_word,"/"))."/i";
    $check_memo = preg_replace($sp_change_word_pattern, "", $check_memo);
///////////////////////////////////////////////////////////////////////////////////////////////////////////

    if($check_memo<>$data[memo]) {
     $check=1;
        echo("$mem_no | ");
    }
}
 if($check==0) {
echo("$board_name - 악성스크립트 인젝션공격이 없었습니다!<br/><br/>\n");
 } else {
echo("<br/>$board_name - 해당번호의 게시물에 포함되어 스크립트가 있습니다!<br/><br/>\n");
 }
}
echo("악성스크립트 확인시에는 따로 프로그램을 돌려주세요!~ <a href="./stream_run.php" target=_blank>[삭제링크]</a><br/><br/>\n");
if($connect) mysql_close($connect);
?>

 

위에 소스를 stream.php 로 해서 제로보드 폴더에 넣고 실행해도 뜨지가않네요.

Parse error: syntax error, unexpected '/' in /home/hosting_users/sealplus/www/bbs/stream.php on line 22

 

이렇게 나오던데.....

 


[레벨:1]차돌바우

2010.03.23 16:59:39
*.241.72.254

    $sp_change_word = "SCRIPT Language=JavaScript src=";

22 라인을 위에처럼 바꿔보세요.

그리고 나면 38 라인에서 에러날겁니다.

그때는

echo("악성스크립트 확인시에는 따로 프로그램을 돌려주세요!~ <a href="stream_run.php target=_blank>[삭제링크]</a><br/><br/>\n);

이렇게 바꿔주세요.

다만.stream_run.php  파일이  stream.php 파일과 같은 위치에 있어야 합니다.

[레벨:2]필살기

2010.04.16 10:48:46
*.32.159.17

차돌바우님이 말씀하신 것 처럼 해도 38라인에서 에러가 계속 나네요..

[레벨:5]인터니즈2

2010.04.19 23:18:16
*.203.102.15

메일이 와서 한번 들어와 봤더니, 쪽지도 와 있네요.

 

위의 stream.php는 인젝션공격이 있었는지 확인하는 용도로 만들었던 것입니다만,

소스가 좀 이상하네요. 제가 적어드린것 맞는지?

38번 라인이면,

echo("악성스크립트 확인시에는 따로 프로그램을 돌려주세요!~

이 부분인데, 이 부분은 삭제하셔도 상관 없는 부분이고요.

" 와 \" 이것이 현재 게시판에서 표현하면서 잘못되어지는 부분 같습니다.

에디터의 단점이겠지요.

 

stream.php는 확인용도이고,

밑에 글 보시면, stream_run.php가 실질적으로 인젝션된 내용들을 삭제하는 부분 되겠습니다.

 

[레벨:5]인터니즈2

2010.04.19 23:23:21
*.203.102.15

stream_run.php의 내용 다시금 올려봅니다.

 

<?
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// 아래에 삭제할 스크립트를 적어주세요!

$sp_change_word = "<SCRIPT Language=JavaScript src="http://hanphil.or.kr/bbs/data/young/brod.js></script>";

///////////////////////////////////////////////////////////////////////////////////////////////////////////

require "../bbs/lib.php"; // ◀--- 사이트의 상황에 맞게 수정해주세요~

///////////////////////////////////////////////////////////////////////////////////////////////////////////

if(!$connect) $connect = dbconn();
$View_Level="1"; // 실행권한조정(현재1등급)
if(!$member) $member=member_info();
if(!$member[no]) Error("권한이 없습니다(1)!  ","window.close");
if($member[level]>$View_Level) Error("권한이 없습니다(2)!  ","window.close");

 $sp_change_word2 = "<";
    $sp_change_word_pattern2 = "/".str_replace("\0","\\0",preg_quote($sp_change_word2,"/"))."/i";
    $sp_change_word3 = preg_replace($sp_change_word_pattern2, "&lt;", $sp_change_word);
 echo("'$sp_change_word3'<br/>스크립트를 삭제합니다.<br/><br/>\n");

$que2 = "select name from zetyx_admin_table";
$result2=mysql_query($que2) or Error(mysql_error());
while($temp2 = mysql_fetch_array($result2)){
$board_name=$temp2[name];
$check=0;

echo("$board_name - 악성스크립트 삭제시작!<br/>\n");
$que = "select no, memo from zetyx_board_$board_name order by no desc";
$result=mysql_query($que) or Error(mysql_error());
while($data = mysql_fetch_array($result)){
    $mem_no = $data[no];
    $check_memo=$data[memo];

///////////////////////////////////////////////////////////////////////////////////////////////////////////
    $sp_change_word_pattern = "/".str_replace("\0","\\0",preg_quote($sp_change_word,"/"))."/i";
    $check_memo = preg_replace($sp_change_word_pattern, "", $check_memo);
///////////////////////////////////////////////////////////////////////////////////////////////////////////

    if($check_memo<>$data[memo]) {
     $check=1;
        echo("$mem_no | ");
        $check_memo=addslashes($check_memo);
        mysql_query("update zetyx_board_$board_name set memo='$check_memo' where no='$mem_no'") or error(mysql_error());
    }
}
 if($check==0) {
echo("$board_name - 악성스크립트 인젝션공격이 없었습니다!<br/><br/>\n");
 } else {
echo("<br/>$board_name - 해당번호의 게시물에 포함되어있는 스크립트가 모두 삭제되었습니다!<br/><br/>\n");
 }
}
if($connect) mysql_close($connect);
?>

 

위의 소스에서 6번라인 

require "../zboard/lib.php"; // ◀--- 사이트의 상황에 맞게 수정해주세요~
이 부분은 쉽게 고치 실수 있겠지요?

 

게시판내에 삽입된 스크립트를 DB상으로 한번 확인해 보시고요.

4번라인 부분에 삭제할 내용들을 넣으면 됩니다.

$sp_change_word = "<SCRIPT Language=JavaScript src="http://hanphil.or.kr/bbs/data/young/brod.js></script>";

윗 부분인데,

여러번의 인젝션 공격이 있었기에, 하나이상의 스크립트 구문들 확인하시고,

띄워쓰기도 들어간 공격도 있었기에 그것도 확인하셔서, 어떻든, memo필드의 첫부분에서 지워줄것들을 "따옴표 안에 집어넣어주시고, 한번만 실행시켜주시면 되는 부분입니다.

[레벨:5]인터니즈2

2010.04.19 23:31:23
*.203.102.15

에디터가 소스를 마음대로 바꾸는군요. 특히 따옴표 부분..

그래서 또 소스가 좀 이상해집니다. 참..

 

첨부로 올려드릴께요~

첨부

[레벨:1]이주창

2010.07.16 14:59:58
*.32.173.70

권한이 없습니다.(1) 가 나오는데 뭐가 문제인거죠?

[레벨:2]KR링스

2010.12.16 13:44:10
*.33.116.244

인터니즈2님 아래 게시글에서 stream.php 만 사용하시고, 문제되는 자바 스크립트를 [8차공격-내용추가] 에 추가하여서 사용하시면 무난할 것 같습니다.

SQL 인젝션 공격 [7차공격-내용추가]

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 2010년 12월 22일 RFI 취약점 보안 패치 [1] XE Core 개발XE Developers 2010-12-22 8454
공지 보안 정보 공유 게시판 안내 [1] [레벨:30]zero 2009-09-11 7247
53 게시판 제목 계속되는 변조 방법이 없나요? [1] [레벨:1]석이.. 2010-04-03 1778
52 계속 뚫립니다. [레벨:0]김동하123 2010-04-03 1843
51 이것도 제로보드 해킹인가요? [2] [레벨:1]박지현403 2010-03-30 3657
» 인터니즈2님이 올리신 SQL인젝션 대응법.. [7] [레벨:2]박준규159 2010-03-17 2608
49 또 공격.... [3] [레벨:3]쥬시쿨 2010-03-06 2817
48 해킹인지 아니면 일시적인 오류인지 모르겠는데요... [1] [레벨:2]박준규159 2010-02-20 2479
47 (정보) html을 표준에 맞게 정리하고 스크립트실행을 방지시켜 주는 html purifier [레벨:1]상콤발랄보노군 2010-02-18 2085
46 제로보드4 관리자 세션을 이용한 CSRF 공격 대응 file [6] [레벨:30]zero 2010-02-11 5292
45 홈페이지 php파일이 모두 삭제... ㅡ,ㅡ [1] [레벨:6]아가페 2010-01-23 4532
44 config.php 파일을 외부에서 못 읽게 하기 [1] [레벨:6]아빠불당 2010-01-15 1350
43 SQL인젝션 공격시 대응법 [2] [레벨:5]인터니즈2 2010-01-12 4721
42 또 공격시작이군요... [7] [레벨:3]고펑 2010-01-12 6722
41 레볼루션 스킨... [4] [레벨:2]황현희839 2009-12-28 1332
40 FTP해킹으로 인해 페이지에 악성코드가 심어졌을 때 참조하십시요. file [2] [레벨:2]BRILLIANCE 2009-12-17 1726
39 게시판 덧글에 자꾸 이상한 글들이 생깁니다. file [4] [레벨:0]김우형406 2009-12-10 1254
38 악성코드 소스 그대로 모두 입력해 그런건지... [2] [레벨:17]제이엔지 2009-12-02 6877
37 중국헤킹발 ip 위치추적, 신분증위치추적등,웹호스팅서버내홈페이지수찾기등.. [레벨:1]태양370 2009-11-28 1692
36 비회원이 개인정보를 볼수있는 문제 해결책 [레벨:2]다크진 2009-11-25 5598
35 zb4pl8 해킹 취약점 보완에 관하여 질문드립니다. [1] [레벨:0]박태양569 2009-11-21 1187
34 최근에 SQL 인젝션 받으시는 분들 download.php 파일 수정하시기 바랍니다. [1] [레벨:2]Xian 2009-11-20 1707