Прикол в том что злоумышленник намеренно запрашивает пароль админа и что делает форум? Правильно: меняет админу пароль и отсылает на мыло, но в чём вещь так можно 100 раз запросить пароль и админа будет задалбывать, короче вчера мне такое и сделали, я поставил заплату, чтобы не бесили:
Ищем функцию sendpassword() в файле profile.php
И ставим вместо:
CODE:
function sendpassword(){
global $exbb,$lang,$vars;
if (trim(intval($vars['reg_code']) ) != $_SESSION['reg_code']) error($lang['Registration'],$lang['Pers_error']);
$membername = preg_replace ($lang['search'], $lang['replace'], $vars['membername']);
$allusers = get_file($exbb['home_path'].'/data/users.php',FALSE);
$m_id = 0;
foreach ($allusers as $id=>$info) {
if ( $info['n'] == $membername ) { $m_id = $id; break; }
}
if (!checkuser($m_id)) error($lang['Pass_req'],$lang['User_unreg']);
$fp_user = NULL; $userfile = $exbb['home_path'].'members/'.$m_id.'.php';
$userdata = Get_File_Data($fp_user,$userfile,FALSE);
$newpassword = Generate_pass();
$userdata['pass'] = md5($newpassword);
$username = $userdata['name'];
save_opened_file($fp_user,$userdata);
$lang['Message_text'] = $lang['You_pass_only']."\r\n";
$time = date("d-m-Y H:i:s",time());
include('./admin/email_newpass.tpl');
sendmail($exbb['boardname'],$exbb['adminemail'],$email,$lang['Pass_onforum'].$exbb['boardname'],$userdata['mail']);
unset($_SESSION['reg_code']);
error($lang['Pass_req'],$lang['Pass_sended'],'<meta http-equiv="refresh" content="3; url=index.php "',0);
} # end routine.
function sendpassword(){
global $exbb,$lang,$vars;
if (trim(intval($vars['reg_code']) ) != $_SESSION['reg_code']) error($lang['Registration'],$lang['Pers_error']);
$membername = preg_replace ($lang['search'], $lang['replace'], $vars['membername']);
$allusers = get_file($exbb['home_path'].'/data/users.php',FALSE);
$m_id = 0;
foreach ($allusers as $id=>$info) {
if ( $info['n'] == $membername ) { $m_id = $id; break; }
}
if (!checkuser($m_id)) error($lang['Pass_req'],$lang['User_unreg']);
$fp_user = NULL; $userfile = $exbb['home_path'].'members/'.$m_id.'.php';
$userdata = Get_File_Data($fp_user,$userfile,FALSE);
$newpassword = Generate_pass();
$userdata['pass'] = md5($newpassword);
$username = $userdata['name'];
save_opened_file($fp_user,$userdata);
$lang['Message_text'] = $lang['You_pass_only']."\r\n";
$time = date("d-m-Y H:i:s",time());
include('./admin/email_newpass.tpl');
sendmail($exbb['boardname'],$exbb['adminemail'],$email,$lang['Pass_onforum'].$exbb['boardname'],$userdata['mail']);
unset($_SESSION['reg_code']);
error($lang['Pass_req'],$lang['Pass_sended'],'<meta http-equiv="refresh" content="3; url=index.php "',0);
} # end routine.
Вот это:
CODE:
function sendpassword(){
global $exbb,$lang,$vars;
if (trim(intval($vars['reg_code']) ) != $_SESSION['reg_code']) error($lang['Registration'],$lang['Pers_error']);
$membername = preg_replace ($lang['search'], $lang['replace'], $vars['membername']);
$allusers = get_file($exbb['home_path'].'/data/users.php',FALSE);
$m_id = 0;
foreach ($allusers as $id=>$info) {
if ( $info['n'] == $membername ) { $m_id = $id; break; }
}
if (!checkuser($m_id)) error($lang['Pass_req'],$lang['User_unreg']);
$fp_user = NULL; $userfile = $exbb['home_path'].'members/'.$m_id.'.php';
$userdata = Get_File_Data($fp_user,$userfile,FALSE);
if ($m_id == '1') {
echo 'Пароль админа: Xdfju9ufgUUfjdufjUJ983jfelfmqwefeiot3jturejgnjunbtununUINFNEIFW(#*JR83r8 =)<BR>Powered by BABA MANYA :)';
access_log('Запрашивался пароль супер админа');
return false;
}
else {
$newpassword = Generate_pass();
$userdata['pass'] = md5($newpassword);
$username = $userdata['name'];
save_opened_file($fp_user,$userdata);
$lang['Message_text'] = $lang['You_pass_only']."\r\n";
$time = date("d-m-Y H:i:s",time());
include('./admin/email_newpass.tpl');
sendmail($exbb['boardname'],$exbb['adminemail'],$email,$lang['Pass_onforum'].$exbb['boardname'],$userdata['mail']);
unset($_SESSION['reg_code']);
error($lang['Pass_req'],$lang['Pass_sended'],'<meta http-equiv="refresh" content="3; url=index.php "',0);
}
}
function sendpassword(){
global $exbb,$lang,$vars;
if (trim(intval($vars['reg_code']) ) != $_SESSION['reg_code']) error($lang['Registration'],$lang['Pers_error']);
$membername = preg_replace ($lang['search'], $lang['replace'], $vars['membername']);
$allusers = get_file($exbb['home_path'].'/data/users.php',FALSE);
$m_id = 0;
foreach ($allusers as $id=>$info) {
if ( $info['n'] == $membername ) { $m_id = $id; break; }
}
if (!checkuser($m_id)) error($lang['Pass_req'],$lang['User_unreg']);
$fp_user = NULL; $userfile = $exbb['home_path'].'members/'.$m_id.'.php';
$userdata = Get_File_Data($fp_user,$userfile,FALSE);
if ($m_id == '1') {
echo 'Пароль админа: Xdfju9ufgUUfjdufjUJ983jfelfmqwefeiot3jturejgnjunbtununUINFNEIFW(#*JR83r8 =)<BR>Powered by BABA MANYA :)';
access_log('Запрашивался пароль супер админа');
return false;
}
else {
$newpassword = Generate_pass();
$userdata['pass'] = md5($newpassword);
$username = $userdata['name'];
save_opened_file($fp_user,$userdata);
$lang['Message_text'] = $lang['You_pass_only']."\r\n";
$time = date("d-m-Y H:i:s",time());
include('./admin/email_newpass.tpl');
sendmail($exbb['boardname'],$exbb['adminemail'],$email,$lang['Pass_onforum'].$exbb['boardname'],$userdata['mail']);
unset($_SESSION['reg_code']);
error($lang['Pass_req'],$lang['Pass_sended'],'<meta http-equiv="refresh" content="3; url=index.php "',0);
}
}
Принцип работы: заплатка проверяет ид того человека для которого запросили пароль, если у него ид = 1, то есть это супер админ, то выдает сообщение типа "отвали" и запысывает в лог кто и когда попытался поиздеваться над админом, если же не 1 ид, то пароль меняеться, высылаеться, как обычно
Надеюсь пригодиться и ставить заплату советую
Есть вопросы пишите сюда или по адресу: http://ts-board.ru/topic.php?for...tid=1154292079#1 в параллельный топ