diff --git a/bbs/move_update.php b/bbs/move_update.php index bb3d35cd2..06805d940 100644 --- a/bbs/move_update.php +++ b/bbs/move_update.php @@ -41,6 +41,21 @@ while ($row = sql_fetch_array($result)) // 존재하지 않다면 if( !$move_board['bo_table'] ) continue; + // 대상 게시판에 대한 권한 재검증 (KVE-2026-0795) + // 원본 게시판 기준의 $is_admin 만으로는 타 게시판 이동/복사가 허용되지 않도록 함. + if ($is_admin !== 'super') { + $is_target_admin = false; + if ($is_admin === 'board' && isset($move_board['bo_admin']) && $move_board['bo_admin'] !== '' && $move_board['bo_admin'] === $member['mb_id']) { + $is_target_admin = true; + } else if ($is_admin === 'group' && isset($move_board['gr_id']) && $move_board['gr_id'] !== '') { + $move_group = sql_fetch(" select gr_admin from {$g5['group_table']} where gr_id = '".sql_real_escape_string($move_board['gr_id'])."' "); + if (!empty($move_group['gr_admin']) && $move_group['gr_admin'] === $member['mb_id']) { + $is_target_admin = true; + } + } + if (!$is_target_admin) continue; + } + $move_write_table = $g5['write_prefix'] . $move_bo_table; $src_dir = G5_DATA_PATH.'/file/'.$bo_table; // 원본 디렉토리