Merge branch 'master' of github.com:gnuboard/g5
This commit is contained in:
@ -28,6 +28,7 @@ include_once(G5_PATH.'/head.sub.php');
|
|||||||
// 파일만 가능합니다.
|
// 파일만 가능합니다.
|
||||||
// 공백이 없어야 합니다.
|
// 공백이 없어야 합니다.
|
||||||
|
|
||||||
|
$msg = isset($msg) ? strip_tags($msg) : '';
|
||||||
$msg2 = str_replace("\\n", "<br>", $msg);
|
$msg2 = str_replace("\\n", "<br>", $msg);
|
||||||
|
|
||||||
$url = clean_xss_tags($url);
|
$url = clean_xss_tags($url);
|
||||||
@ -36,7 +37,7 @@ if (!$url) $url = clean_xss_tags($_SERVER['HTTP_REFERER']);
|
|||||||
$url = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", $url);
|
$url = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", $url);
|
||||||
|
|
||||||
// url 체크
|
// url 체크
|
||||||
check_url_host($url);
|
check_url_host($url, $msg);
|
||||||
|
|
||||||
if($error) {
|
if($error) {
|
||||||
$header2 = "다음 항목에 오류가 있습니다.";
|
$header2 = "다음 항목에 오류가 있습니다.";
|
||||||
@ -46,7 +47,7 @@ if($error) {
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
alert("<?php echo strip_tags($msg); ?>");
|
alert("<?php echo $msg; ?>");
|
||||||
//document.location.href = "<?php echo $url; ?>";
|
//document.location.href = "<?php echo $url; ?>";
|
||||||
<?php if ($url) { ?>
|
<?php if ($url) { ?>
|
||||||
document.location.replace("<?php echo str_replace('&', '&', $url); ?>");
|
document.location.replace("<?php echo str_replace('&', '&', $url); ?>");
|
||||||
|
|||||||
@ -67,7 +67,7 @@ if ($auto_login) {
|
|||||||
|
|
||||||
if ($url) {
|
if ($url) {
|
||||||
// url 체크
|
// url 체크
|
||||||
check_url_host($url);
|
check_url_host($url, '', G5_URL, true);
|
||||||
|
|
||||||
$link = urldecode($url);
|
$link = urldecode($url);
|
||||||
// 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
|
// 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
|
||||||
|
|||||||
@ -17,7 +17,7 @@ include_once('./_head.sub.php');
|
|||||||
$url = clean_xss_tags($_GET['url']);
|
$url = clean_xss_tags($_GET['url']);
|
||||||
|
|
||||||
// url 체크
|
// url 체크
|
||||||
check_url_host($url);
|
check_url_host($url, '', G5_URL, true);
|
||||||
|
|
||||||
$url = get_text($url);
|
$url = get_text($url);
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
********************/
|
********************/
|
||||||
|
|
||||||
define('G5_VERSION', '그누보드5');
|
define('G5_VERSION', '그누보드5');
|
||||||
define('G5_GNUBOARD_VER', '5.2.9.8.3');
|
define('G5_GNUBOARD_VER', '5.2.9.8.4');
|
||||||
|
|
||||||
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
||||||
define('_GNUBOARD_', true);
|
define('_GNUBOARD_', true);
|
||||||
|
|||||||
@ -3008,7 +3008,7 @@ function check_password($pass, $hash)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 동일한 host url 인지
|
// 동일한 host url 인지
|
||||||
function check_url_host($url, $msg='', $return_url=G5_URL)
|
function check_url_host($url, $msg='', $return_url=G5_URL, $is_redirect=false)
|
||||||
{
|
{
|
||||||
if(!$msg)
|
if(!$msg)
|
||||||
$msg = 'url에 타 도메인을 지정할 수 없습니다.';
|
$msg = 'url에 타 도메인을 지정할 수 없습니다.';
|
||||||
@ -3018,7 +3018,7 @@ function check_url_host($url, $msg='', $return_url=G5_URL)
|
|||||||
$is_host_check = false;
|
$is_host_check = false;
|
||||||
|
|
||||||
// url을 urlencode 를 2번이상하면 parse_url 에서 scheme와 host 값을 가져올수 없는 취약점이 존재함
|
// url을 urlencode 를 2번이상하면 parse_url 에서 scheme와 host 값을 가져올수 없는 취약점이 존재함
|
||||||
if ( !isset($p['host']) && urldecode($url) != $url ){
|
if ( $is_redirect && !isset($p['host']) && urldecode($url) != $url ){
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while($i <= 3){
|
while($i <= 3){
|
||||||
$url = urldecode($url);
|
$url = urldecode($url);
|
||||||
@ -3040,7 +3040,7 @@ function check_url_host($url, $msg='', $return_url=G5_URL)
|
|||||||
|
|
||||||
//php 5.6.29 이하 버전에서는 parse_url 버그가 존재함
|
//php 5.6.29 이하 버전에서는 parse_url 버그가 존재함
|
||||||
//php 7.0.1 ~ 7.0.5 버전에서는 parse_url 버그가 존재함
|
//php 7.0.1 ~ 7.0.5 버전에서는 parse_url 버그가 존재함
|
||||||
if ( (isset($p['host']) && $p['host']) ) {
|
if ( $is_redirect && (isset($p['host']) && $p['host']) ) {
|
||||||
$bool_ch = false;
|
$bool_ch = false;
|
||||||
foreach( array('user','host') as $key) {
|
foreach( array('user','host') as $key) {
|
||||||
if ( isset( $p[ $key ] ) && strpbrk( $p[ $key ], ':/?#@' ) ) {
|
if ( isset( $p[ $key ] ) && strpbrk( $p[ $key ], ':/?#@' ) ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user