리자

[보안패치] 그누보드 4.33.03

4.33.03 (11.02.10)
: 회원권한 코드 수정 (코타군님)
: 글읽기 포인트가 설정되어 있을때 글읽기 레벨이 1로 설정되어 있으면 포인트 차감이 제대로 되지 않던 오류 수정 (forever님, 진서기님)
: [보안패치] SQL INJECTION 공격에 대비한 코드 수정 (개미인간님)

adm/member_form.php

<?=get_member_level_select("mb_level", 1, $member[mb_level], $member[mb_level])?>

bbs/board.php

if (!get_session($ss_name))
{
sql_query(" update $write_table set wr_hit = wr_hit + 1 where wr_id = '$wr_id' ");

// 자신의 글이면 통과
if ($write[mb_id] && $write[mb_id] == $member[mb_id]) {
;
} else if ($is_guest && $board[bo_read_level] == 1 && $write[wr_ip] == $_SERVER['REMOTE_ADDR']) {
// 비회원이면서 읽기레벨이 1이고 등록된 아이피가 같다면 자신의 글이므로 통과
;
} else {
/*
// 회원이상 글읽기가 가능하다면
if ($board[bo_read_level] > 1) {
if ($member[mb_point] + $board[bo_read_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 글읽기(".number_format($board[bo_read_point]).")가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.");

insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
}
*/
// 글읽기 포인트가 설정되어 있다면
if ($board[bo_read_point] && $member[mb_point] + $board[bo_read_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 글읽기(".number_format($board[bo_read_point]).")가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.");

insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
}

set_session($ss_name, TRUE);
}


common.php

if (isset($sca)) {
$sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
$qstr .= '&sca=' . urlencode($sca);
}

if (isset($sfl)) {
$sfl = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sfl);
$qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드)
}

if (isset($stx)) { // search text (검색어)
$stx = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $stx);
$qstr .= '&stx=' . urlencode($stx);
}

if (isset($sst)) {
$sst = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sst);
$qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
}

첨부파일

gnuboard4.tgz (1.8 MB) 445회 2011-02-10 23:25
gnuboard4.utf8.tgz (1.9 MB) 244회 2011-02-10 23:25
|

댓글 31개

감사합니다.
패치 따라가기 힘들군요~~~
감사합니다. 패치해야겠네요...~~;
common.php 의
$sfl = preg_replace("/[^\w\|\,]/", "", $sfl);
이 코드가 배포후 수정 되었습니다.
common.php 패치 후
/adm/board_list.php 에서 선택 수정 하면 오류가 발생 합니다.

select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc
1054 : Unknown column 'agr_idabo_table' in 'order clause'
error file : /adm/board_list.php
고맙습니다.
감사 합니다. 잘 쓰겠습니다.
감사합니다...^^
감사합니다.^^
감사합니다.

패치후 게시판 생성시 아래와같은 오류가 발생되네요.(euc-kr버전)
common.php 파일 이전 버전것으로 사용하면 이상없구요.
========================================================

select count(*) as cnt from g4_board a where (1) and ( (agr_id like '%G01%') ) order by a.gr_id, a.bo_table asc

1054 : Unknown column 'agr_id' in 'where clause'

error file : /adm/board_list.php
$sfl = preg_replace("/[^\w\|\,\.]/", "", $sfl);
로 수정 되었습니다.
오류나는 분들 코드를 수정해 주십시오.
방금전 수정 패치 했는데도 저도 같은 에러가 나네요...

select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc

1054 : Unknown column 'agr_idabo_table' in 'order clause'

error file : /adm/board_list.php
저도 수정패치 한후해도 에러나네요.
select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc

1054 : Unknown column 'agr_idabo_table' in 'order clause'

error file : /adm/board_list.php
common.php

if (isset($sca)) {
$sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
$qstr .= '&sca=' . urlencode($sca);
}

if (isset($sfl)) {
$sfl = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sfl);
$qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드)
}

if (isset($stx)) { // search text (검색어)
$stx = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $stx);
$qstr .= '&stx=' . urlencode($stx);
}

if (isset($sst)) {
$sst = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sst);
$qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
}

를 변경합니다.

불편을 드려 죄송합니다.
다시 수정하니 에러가 없어졌습니다.
관리자님 수고가 많으시네요. ^.^*
임시 방편으로 게시판 생성했었는데,,
코드 수정했습니다.

감사드립니다.
수정후 하니 에러없이 잘되네요.
관리자님 감사합니다^^
감사합니다
수정하러 갑니다.
어흑.. 패치 밀린 곳이 있는데, 큰일이군요
감사합니다^ㅡ^
감사합니다.
패치어카지...ㅠㅠ새로하던거 패치를.ㅠ......ㅠ......................................
패치 완료!

감사합니다.
항상 캄사합니다.
$member 가 아니라 $mb 입니다. 수정하려는 대상의 레벨을 갖고와야 하니까요.



<td>회원 권한</td>
<td><?=get_member_level_select("mb_level", 1, $member[mb_level], $mb[mb_level])?></td>



// 회원권한을 SELECT 형식으로 얻음
function get_member_level_select($name, $start_id=0, $end_id=10, $selected='', $event='')
{
global $g4;

$str = "<select name='$name' $event>";
for ($i=$start_id; $i<=$end_id; $i++)
{
$str .= "<option value='$i'";
if ($i == $selected)
$str .= " selected";
$str .= ">$i</option>";
}
$str .= "</select>";
return $str;
}
bbs/board.php?bo_table=photo1&sca=자연/거리

이런식으로 주소가 돼있는데 출력이 되지않습니다.
common.lib.php 이전파일로 교체하면 잘 되고요...
일단 임시 방편으로
$sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
위 내용중 \/ 를 삭제해 보세요
감사합니다.
정말 감사합니다.
감사합니다.....
감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

그누4 다운로드

여러분께서 보고 계시는 이 사이트는 그누보드4 최신버전으로 제작, 운영되고 있습니다. SIR은 그누보드를 만들 뿐 프로그램의 설치, 운영방법, 설정문제에 관한 도움을 드리지는 않습니다.

+
제목 글쓴이 날짜 조회
14년 전 조회 2만
14년 전 조회 9,285
14년 전 조회 8,199
14년 전 조회 4.5만
14년 전 조회 1.4만
14년 전 조회 1.2만
14년 전 조회 1.8만
14년 전 조회 1만
14년 전 조회 1.3만
14년 전 조회 1.2만
15년 전 조회 1.7만
15년 전 조회 1.3만
15년 전 조회 2.1만
15년 전 조회 1.2만
15년 전 조회 1.1만
15년 전 조회 1.8만
15년 전 조회 1만
15년 전 조회 2.8만
15년 전 조회 2.4만
15년 전 조회 1.2만