[보안패치] 그누보드 4.33.08 (2011년 3월 11일자 우편번호 추가)
4월 4일 오후 4시 이후로 2011년 3월 11일자 우편번호가 업데이트 되었습니다.
기존에 패치하신 분들은 압축을 해제하신 후 bbs/zip.db 만 교체하여 주십시오.
-----------------------------------------------------------
4월 2일 오전 12시 이후로 패치가 수정 되었습니다.
관리자 패스워드를 입력하는 방식으로 바뀌었습니다.
adm/board_form.php
adm/board_form_update.php
이 두개의 파일이 변경 되었습니다.
4.33.08 (11.04.01)
: 아래 두개의 취약점은 한국인터넷진흥원(KISA)을 통하여
선린인터넷고등학교 1학년에 재학중인 강인욱님께서 알려 주셨습니다.
: [보안패치] XSS(Cross Site Scripting) 취약점 보완
이 취약점은 XML의 namespace를 이용하여 공격하는 방식입니다.
게시판에서 DHTML 에디터를 사용하지 않는 경우에만 취약한 것으로 확인 되었습니다.
: [보안패치] RFI(Remote File Inclusion) 원격파일유입 취약점 보완
이 취약점은 관리자 권한을 취득한 후에 게시판 관리의 상단, 하단파일경로에
Data URI scheme (http://en.wikipedia.org/wiki/Data_URI_scheme) 를 이용하여
서버에 remote 파일을 생성하고 해당 remote 파일을 이용하여 해당 서버를 공격하는
방식입니다.
PHP 5.x 이상 그리고 allow_url_fopen 이 On 인 경우에만 발생합니다.
lib/common.lib.php
$content = preg_replace("/\<(\w|\s|\?)*(xml)/i", "", $content);
adm/board_form.php
<tr class='ht'>
<td colspan='2'>
관리자 패스워드
</td>
<td>
<input class='ed' type='password' name='admin_password' itemname="관리자 패스워드" required>
<?=help("관리자 권한을 빼앗길 것에 대비하여 로그인한 관리자의 패스워드를 한번 더 묻는것 입니다.");?>
</td>
</tr>
adm/board_form_update.php
if ($member[mb_password] != sql_password($_POST['admin_password'])) {
alert("패스워드가 다릅니다.");
}
기존에 패치하신 분들은 압축을 해제하신 후 bbs/zip.db 만 교체하여 주십시오.
-----------------------------------------------------------
4월 2일 오전 12시 이후로 패치가 수정 되었습니다.
관리자 패스워드를 입력하는 방식으로 바뀌었습니다.
adm/board_form.php
adm/board_form_update.php
이 두개의 파일이 변경 되었습니다.
4.33.08 (11.04.01)
: 아래 두개의 취약점은 한국인터넷진흥원(KISA)을 통하여
선린인터넷고등학교 1학년에 재학중인 강인욱님께서 알려 주셨습니다.
: [보안패치] XSS(Cross Site Scripting) 취약점 보완
이 취약점은 XML의 namespace를 이용하여 공격하는 방식입니다.
게시판에서 DHTML 에디터를 사용하지 않는 경우에만 취약한 것으로 확인 되었습니다.
: [보안패치] RFI(Remote File Inclusion) 원격파일유입 취약점 보완
이 취약점은 관리자 권한을 취득한 후에 게시판 관리의 상단, 하단파일경로에
Data URI scheme (http://en.wikipedia.org/wiki/Data_URI_scheme) 를 이용하여
서버에 remote 파일을 생성하고 해당 remote 파일을 이용하여 해당 서버를 공격하는
방식입니다.
PHP 5.x 이상 그리고 allow_url_fopen 이 On 인 경우에만 발생합니다.
lib/common.lib.php
$content = preg_replace("/\<(\w|\s|\?)*(xml)/i", "", $content);
adm/board_form.php
<tr class='ht'>
<td colspan='2'>
관리자 패스워드
</td>
<td>
<input class='ed' type='password' name='admin_password' itemname="관리자 패스워드" required>
<?=help("관리자 권한을 빼앗길 것에 대비하여 로그인한 관리자의 패스워드를 한번 더 묻는것 입니다.");?>
</td>
</tr>
adm/board_form_update.php
if ($member[mb_password] != sql_password($_POST['admin_password'])) {
alert("패스워드가 다릅니다.");
}
첨부파일
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 37개
긴히 드릴 말씀이 있습니다.
RFI에서 data:;base64,인코딩값 말고도 data:image/gif;base64,인코딩값
이게 된다는것도 염두해두셨어야합니다.
저는 관리자 비밀번호를 체크하면 어차피 안막아도 해커가 뚫을 수 없을거라 생각해서
보고서 작성시 안적었었습니다. 사용자 편의를 위해서 저렇게 하신거 같은데요. ㅎ
data:image/gif; image/gif 뿐만 아니라 세미콜론과 콜론 사이에 MIME TYPE이 들어가도 RFI가 작동을 하니 다시 필터링 부분을 재수정하여 배포하셨으면 좋겠습니다.
번거롭게해서 죄송합니다...ㅠㅠㅠㅠ... 보고서 작성시 적을껄 그랬네요...ㅠㅠ
위의 코드로 인코딩된 값을 무력화 시킬 수 있다고 판단되어 관리자 패스워드 루틴을 뺀것입니다. 일단 관리자 권한을 뺐기면 이 부분 말고도 좀 더 많은(?) 취약점이 있을 수 있다 판단됩니다. 사실 관리자 패스워드를 매번 입력하는게 저도 번거롭네요. ㅜㅜ
패치내용에 개인이력과 관련하여 더 추가하시고자 한다면 메일 주십시오. kagla@naver.com
감사합니다.
저번에 I2SEC에서 발표했듯이 XSS와CSRF가 있었자나영 ㅋㅋ
CSRF는 포인트 수정 회원정보 수정등이 있었는데요(뭐 권한으로 글쓰기나 그런것도 되겠죠ㅎ^^)
모두 관리자 권한에서였습니다.
XSS는 완벽 방어가 힘들기 떄문에 관리자 권한이 따이고 나서
제가 알려드린 RFI 취약점으로 공격을 하게 되면 데이터베이스 아이디, 비밀번호에
접속해서 포인트 수정은 물론, 관리자 패스워드까지 볼수 있습니다.(패스워드는 암호화 되있을테죠 ㅎ)
큰 쇼핑몰의 경우에는 포인트 수정은 매우 중요한 사항이라
제가 알려드린 XSS 취약점으로 관리자 권한을 딴뒤
RFI로 공격을해서 db아이디와 비밀번호를 알아낸후
포인트 수정을해서 구매를 하게 되면 엄청난 사태가 벌어지죠;;
그래서 권리자권한에서의 취약점도 중요하다는 거였습니다 ㅎㅎ
ps. 제생각으로는 강성호씨가 발표한것 보다 더 위험한 취약점 같습니다 ㅎ;;
메일로 따로 보내드렸습니다.
그럼 수고 하세요 !!
하지만 패치 후 게시판 설정에서 저장시 상단파일경로와 하단파일경로에서 슬래시가 사라지게 되어 있는데요. 제 설정에는 ../head.php, ../tail.php로 되어 있는데요.
저장하면 ..head.php, ..tail.php로 변경되어 게시판에 상단/하단 아무것도 안보이게 되네요.
이부분도 각각 _head.php와 _tail.php로 일일히 수정해야 하는지요?!
[추가내용]
CREATE TABLE `$g4[token_table]` (
`to_token` varchar(32) NOT NULL default '',
`to_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
`to_ip` varchar(255) NOT NULL default '',
PRIMARY KEY (`to_token`),
KEY `to_datetime` (`to_datetime`),
KEY `to_ip` (`to_ip`)
);
현재 4.33.02 버젼입니다.
이 버젼으로 덮어씌우는경우, 위 테이블을 어떻게 추가해야 합니까??
예전에는 업그레이드 파일로 db쪽을 갱신할수 있었던거 같은데
변경된 파일을 비교해보니 그런 부분이 보이지를 않네요..???
아니면 설치를 하지 않아도 상관이 없는지요???? .. 좀 알려주세요
업데이트를 매번 따라갈수가 없어서 중간에 한번씩 건너뛰어서 하는데
할때마다 머리가 좀 아프네요 -_- ;;