diff --git a/adm/admin.lib.php b/adm/admin.lib.php index 04919ebc4..bbe556db4 100644 --- a/adm/admin.lib.php +++ b/adm/admin.lib.php @@ -426,6 +426,25 @@ function admin_referer_check($return=false) } } +function admin_check_xss_params($params){ + + if( ! $params ) return; + + foreach( $params as $key=>$value ){ + + if ( empty($value) ) continue; + + if( is_array($value) ){ + admin_check_xss_params($params); + } else if ( preg_match('/<\s?[^\>]*\/?\s?>/i', $value) && preg_match('/script.*?\/script/ius', $value) ){ + alert('요청 쿼리에 잘못된 스크립트문장이 있습니다.\\nXSS 공격일수도 있습니다.'); + die(); + } + } + + return; +} + // 접근 권한 검사 if (!$member['mb_id']) { @@ -491,14 +510,7 @@ $qstr = implode("&", $arr_query); if ( isset($_REQUEST) && $_REQUEST ){ if( admin_referer_check(true) ){ - - foreach( $_REQUEST as $key=>$value ){ - if( $value && preg_match('/<\s?[^\>]*\/?\s?>/i', $value) && preg_match('/script.*?\/script/ius', $value) ){ - alert('요청 쿼리에 잘못된 스크립트문장이 있습니다.\\nXSS 공격일수도 있습니다.'); - die(); - } - } - + admin_check_xss_params($_REQUEST); } } diff --git a/adm/faqlist.php b/adm/faqlist.php index acfb094e9..80319c82f 100644 --- a/adm/faqlist.php +++ b/adm/faqlist.php @@ -22,7 +22,7 @@ $sql_common = " from {$g5['faq_table']} where fm_id = '$fm_id' "; // 테이블의 전체 레코드수만 얻음 $sql = " select count(*) as cnt " . $sql_common; $row = sql_fetch($sql); -$total_count = $row[cnt]; +$total_count = $row['cnt']; $sql = "select * $sql_common order by fa_order , fa_id "; $result = sql_query($sql); @@ -60,7 +60,7 @@ $result = sql_query($sql); for ($i=0; $row=sql_fetch_array($result); $i++) { $row1 = sql_fetch(" select COUNT(*) as cnt from {$g5['faq_table']} where fm_id = '{$row['fm_id']}' "); - $cnt = $row1[cnt]; + $cnt = $row1['cnt']; $s_mod = icon("수정", ""); $s_del = icon("삭제", ""); diff --git a/bbs/email_certify.php b/bbs/email_certify.php index 80b4bf0b8..2fc735b32 100644 --- a/bbs/email_certify.php +++ b/bbs/email_certify.php @@ -4,11 +4,15 @@ include_once('./_common.php'); $mb_id = trim($_GET['mb_id']); $mb_md5 = trim($_GET['mb_md5']); -$sql = " select mb_id, mb_email_certify2 from {$g5['member_table']} where mb_id = '{$mb_id}' "; +$sql = " select mb_id, mb_email_certify2, mb_leave_date, mb_intercept_date from {$g5['member_table']} where mb_id = '{$mb_id}' "; $row = sql_fetch($sql); if (!$row['mb_id']) alert('존재하는 회원이 아닙니다.', G5_URL); +if ( $row['mb_leave_date'] || $row['mb_intercept_date'] ){ + alert('탈퇴 또는 차단된 회원입니다.', G5_URL); +} + // 인증 링크는 한번만 처리가 되게 한다. sql_query(" update {$g5['member_table']} set mb_email_certify2 = '' where mb_id = '$mb_id' "); diff --git a/config.php b/config.php index c5d57d715..5e73c0e4e 100644 --- a/config.php +++ b/config.php @@ -5,7 +5,7 @@ ********************/ define('G5_VERSION', '그누보드5'); -define('G5_GNUBOARD_VER', '5.3.1.7'); +define('G5_GNUBOARD_VER', '5.3.1.8'); // 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음 define('_GNUBOARD_', true); diff --git a/lib/common.lib.php b/lib/common.lib.php index ba8fc8a0d..70afc8b97 100644 --- a/lib/common.lib.php +++ b/lib/common.lib.php @@ -2132,13 +2132,13 @@ function abs_ip2long($ip='') function get_selected($field, $value) { - return ($field==$value) ? ' selected="selected"' : ''; + return ($field===$value) ? ' selected="selected"' : ''; } function get_checked($field, $value) { - return ($field==$value) ? ' checked="checked"' : ''; + return ($field===$value) ? ' checked="checked"' : ''; } diff --git a/plugin/okname/ipin1.php b/plugin/okname/ipin1.php index 864995786..f448c216d 100644 --- a/plugin/okname/ipin1.php +++ b/plugin/okname/ipin1.php @@ -4,7 +4,9 @@ include_once('./_common.php'); // 금일 인증시도 회수 체크 certify_count_check($member['mb_id'], 'ipin'); -include_once('./ipin.config.php'); +// KISA 취약점 내용(KVE-2018-0291) hpcert1.php의 $cmd 함수에 대한 인자 값은 hpcert_config.php 파일에서 설정되나, 이를 다른 페이지에서 포함한 뒤 호출할 시 임의 값 설정 가능 +// 이에 include_once 를 include 로 수정함 +include('./ipin.config.php'); $option = "C";// Option