리자

[보안패치] 그누보드 4.33.10

· 2011-04-27 (수) 17:01:29 · 8413 · 22
4.33.10 (11.04.27)
: [보안패치] 회원정보수정시 세션에 기록된 패스워드를 알아낼 수 있는 취약점이 발견되었습니다.
(한국인터넷진흥원을 통하여 Null@Root 소속의 Hacker@n 님께서 알려주셨습니다.)
: 게시판복사시 복사되는 게시판 테이블의 CHARSET 이 제대로 생성되지 않는 오류를 수정하였습니다.
( 밀로즈님께서 알려주셨습니다. )

bbs/register_form.php

// 패스워드를 알아볼 수 없도록 회원가입일시를 넣어서 암호화 함
set_session("ss_tmp_password", base64_encode($member[mb_datetime].$_POST[mb_password]));

bbs/register_form_update.php

// 복호화를 한 후 회원가입일시를 없애주면 원래 패스워드가 나옴
$tmp_password = preg_replace("/^".$member[mb_datetime]."/", "", base64_decode(get_session("ss_tmp_password")));

lib/common.lib.php

function get_table_define($table, $crlf="\n")
{
global $g4;

...

if (strtolower($g4['charset']) == "utf-8")
$schema_create .= $crlf . ') DEFAULT CHARSET=utf8';
else
$schema_create .= $crlf . ')';

첨부파일

gnuboard4.euckr.tgz (1.9 MB) 306회 2011-04-27 22:37
gnuboard4.utf8.tgz (1.9 MB) 187회 2011-04-27 22:37
|

댓글 22개

2011-04-27 (수) 18:17:15
아싸 ~ 일빠가 아니군요. ^^
기존유저는 어떻게 해야 하나요 해당파일을 붙어녛기 형식으로 해야 하나요?
알려주세요. 백업해놓고 해야하나...
백업하시고, 해당파일(bbs/register_form.php ,bbs/register_form_update.php ,lib/common.lib.php )

의 각각 해당 부분-
bbs/register_form.php
검색: set_session("ss_tmp_password", $_POST[mb_password]);

-->
// 패스워드를 알아볼 수 없도록 회원가입일시를 넣어서 암호화 함
set_session("ss_tmp_password", base64_encode($member[mb_datetime].$_POST[mb_password]));

로 변경

bbs/register_form_update.php
검색:
$tmp_password = get_session("ss_tmp_password");

--> // 복호화를 한 후 회원가입일시를 없애주면 원래 패스워드가 나옴
$tmp_password = preg_replace("/^".$member[mb_datetime]."/", "", base64_decode(get_session("ss_tmp_password")));

로 변경

lib/common.lib.php
검색:

} // end while

return $schema_create;
} // end of the 'PMA_getTableDef()' function


-->

} // end while
if (strtolower($g4['charset']) == "utf-8")
$schema_create .= $crlf . ') DEFAULT CHARSET=utf8';
else
$schema_create .= $crlf . ')';

return $schema_create;
} // end of the 'PMA_getTableDef()' function

로 변경




참고로

lib/common.lib.php 에서 변경된 부분이

다음 함수 부분인데

// PHPMyAdmin 참고
function get_table_define($table, $crlf="\n")
{
// For MySQL < 3.23.20

요 부분에

global $g4;

요걸 추가해서

// PHPMyAdmin 참고
function get_table_define($table, $crlf="\n")
{
global $g4;
// For MySQL < 3.23.20

요렇게 변경하셔야 합니다.. 그 내용은 빠진듯..
수정해 놓았습니다.
알려주셔서 감사합니다.
2011-06-24 (금) 10:51:14
깔끔한 정리 고맙습니다~ 초보분들에게 큰 힘이 되어 주시는 군요~!^^
저는 두번째가 이렇게 되어있네요?

} // end while

$schema_create .= $crlf . ')';

return $schema_create;
} // end of the 'PMA_getTableDef()' function
첫번째는
$tmp_password = $mb_password;
이렇게 되어있어요.
괜찮겠죠?
2011-04-28 (목) 00:03:55
감사 합니다. 잘 쓰겠습니다.
감사합니다...^^
알려주신대로 코드덮어씌웠다가 오류나서 회원정보수정하고나면
하얀화면에서 스탑이네요ㅠ_ㅠ
$tmp_password = get_session("ss_tmp_password");
부분입니다.
$tmp_password = $mb_password; 부분이 아니에요..
매번 항상 잘 사용합니다 ㅋ
2011-04-28 (목) 07:29:05
감사합니다.
아~ 패치 따라가기 힘들어요 ㅎㅎ
2011-04-28 (목) 07:44:21
감사합니다.
2011-04-28 (목) 09:00:54
감사합니다.

그런데, 모든 파일을 업로드 해야하는건가요?

제가 utf 랭귀지팩 버전으로 쓰고 있늗네, 이것을 덮어 씌워도 괜찮을까요??
감사합니다.
보안버그 알려주신 화이트해커분 감사드리구요..
패치고생해주신 관리자님 감사합니다.
2011-04-28 (목) 19:42:28
감사합니다.
2011-04-29 (금) 11:40:44
감사합니다.
감사합니다. (__)
2011-05-21 (토) 15:37:23
감사합니다..
2012-01-16 (월) 16:01:39
감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

그누4 다운로드

220건

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

+