GR Board 2 Developer Forum

[다운로드] 보안 문제 관련해서 제가 조사한 버그들 올려 봅니다.

열혈코더
  • 2011.01.30 09:20:30
  • hit: 4029
  • good: 56
안녕하세요.너무  grboard 잘 만들어 주셔서 잘 쓰고 있는데 보안 문제로 코드(Version 1.8.6.5 community edition)에서 몇가지 문제를 발견해서 여기에 올려봅니다. 확인해주세요 :)

1. 로그인 없이 database에 접속해서 Insert, delete, update 혹은 create database, droptable 등의 쿼리가 가능한 경로를 발견해서 여기에 적습니다. (register_global 값이 on 상태라고 가정했습니다. )
(1) mod_rewrite.php => trackback.php
(2) comment_write_ok.php
(3) poll/index.php
(4) theme/ (all theme directories) / poll.php
(5) update/index.php
(6) trackback.php

2. mysql_query의 인자로 외부로 흘러온 입력 값들이 한번 체크되지 않고 바로 이용되는 경우가 많습니다. SQL_Injection 로 이용 될 수가 있습니다.
예를 들어
@mysql_query('update '.$dbFIX.$_GET['tableType'].$id.' set bad = -1001 where no = '.$_GET['blindTarget'].' limit 1');
mysql_query('delete from '.$dbFIX.'memo_save where no = '.$_POST['delTargets'][$dm]);
@mysql_query("update {$dbFIX}report set status = 1 where no = ".$_POST['isReported']);

이동규 site 2011.02.01 00:45:34 reply
시리니님과 다른 오픈소스제작참여자들이 바쁘셔서 원할한 업데이트가 이루어지지 않고있네요..
알려주신 소스는 내일 (설날휴무)일날 저의 능력안에서 적용가능한 것들에 대해 패치하여 SVN에 커밋하도록 하겠습니다.

새해 복 많이받으세요~ :) 
종박이 site 2011.02.04 10:05:27 reply
$dbFIX같은경우에는 register_globals가 on 이라고 해도 쉽게 수정할수가 없더라고요-_-; GR Board에서 $dbFIX를 한번더 처리를 해주고 있어서 register_global로 덮어쓰기가 안되더라고요;;
(그렇지만, 이부분도 무시할수 없는 부분입니다. 이부분에 대해서 취약점을 좀더 찾아봐야 겠어요.)

그리고 말씀해주신 것중에 $_GET['tableType']을 그냥 그대로 사용하고 있더라고요-_-; 그 부분에서 매우 취약한 SQL Injection이 발견되었습니다(......) 이 부분은 바로 수정이 되어 SVN에 커밋이 됬는데, 좀더 지켜봐야될것 같습니다.

쿼리를 수행하는 전체를 대상으로 쫙 점검을 해봐야겠습니다.
modified at 2011.02.04 10:05:34 by 종박이
modified at 2011.02.04 10:05:57 by 종박이
시리니 site 2011.02.25 21:43:59 reply
에고 빨리 처리 했어야 했는데 늦었습니다.
지금 코드를 훑어보고 있는데 참 고쳐야 할 부분이 많이 보이네요. -_ㅠ;;
체크 가능한 선에서 수정하고, 추가적으로 틈틈히 계속 점검/보완하겠습니다.

잘 좀 부탁드립니다!!!