ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Взлом через восстановление пароля[Нужна помощь]
  #1  
Старый 05.03.2010, 14:19
Аватар для AveoSS
AveoSS
Новичок
Регистрация: 19.02.2010
Сообщений: 13
Провел на форуме:
58642

Репутация: 4
По умолчанию Взлом через восстановление пароля[Нужна помощь]

Здравствуйте,есть форма восстановления пароля
с примерно таким кодом
PHP код:
{literal}
<
script language=javascript>
function 
checkform() {
  if (
document.forgotform.email.value == '') {
    
alert("Введите ваше имя пользователя или email!");
    
document.forgotform.email.focus();
    return 
false;
  }
  return 
true;
}
</
script>
{/
literal}
<
h3>Восстановление пароля :</h3><br>

<
form method=post name=forgotform onsubmit="return checkform();">
<
input type=hidden name=a value="forgot_password">
<
input type=hidden name=action value="forgot_password">
<
table cellspacing=0 cellpadding=2 border=0>
<
tr>
 <
td>Введите ваше имя пользователя или email!</td>
 <
td><input type=text name='email' value="" class=inpts size=30></td>
</
tr>
<
tr>
 <
td>&nbsp;</td>
 <
td><input type=submit value="Напомнить" class=sbmt></td>
</
tr>
</
table>
</
form><br><br>

{if 
$found_records == 0}
Такой счет не существует
{elseif $found_records 0}
Вход и пароль высланы ВамПожалуйста проверьте вашу эл.почту.
{/if} 
вот еще forgoten_password.inc

PHP код:
$found_records = -1;
  if (
$frm['action'] == 'forgot_password')
  {
    
$found_records 0;
    
$email quote ($frm['email']);
    
$q '' 'select * from hm2_users where username=\'' $email '\' or email=\'' $email '\' and (status=\'on\' or status=\'suspended\')';
    if (!(
$sth mysql_query ($q)))
    {
      exit (
mysql_error ());
      ;
    }

    while (
$row mysql_fetch_array ($sth))
    {
      if ((
$settings['demomode'] == AND $row['id'] <= 3))
      {
      }
      else
      {
        if (
$row['activation_code'] != '')
        {
          
$info = array ();
          
$info['activation_code'] = $row['activation_code'];
          
$info['username'] = $row['username'];
          
$info['name'] = $row['name'];
          
$info['ip'] = '[not logged]';
          
$info['max_tries'] = $settings['brute_force_max_tries'];
          
send_mail ('brute_force_activation'$row['email'], $settings['system_email'], $info);
        }

        
$password gen_confirm_code (80);
        
$enc_password md5 ($password);
        
$q '' 'update hm2_users set password = \'' $enc_password '\' where id = ' $row['id'];
        if (!(
$sth1 mysql_query ($q)))
        {
          exit (
mysql_error ());
          ;
        }

        if (
$settings['store_uncrypted_password'] == 1)
        {
          
$pswd quote ($password);
          
$q '' 'update hm2_users set pswd = \'' $pswd '\' where id = ' $row['id'];
          if (!(
$sth1 mysql_query ($q)))
          {
            exit (
mysql_error ());
            ;
          }
        }

        
$info = array ();
        
$info['username'] = $row['username'];
        
$info['password'] = $password;
        
$info['name'] = $row['name'];
        
$info['ip'] = $frm_env['REMOTE_ADDR'];
        
send_mail ('forgot_password'$row['email'], $settings['system_email'], $info);
      }

      
$found_records 1;
    }
  }

  
$smarty->assign ('found_records'$found_records);
  
$smarty->display ('forgot_password.tpl');
?> 
Как взломщику удается отправлять пароль не только на почту админа но и себе???

Последний раз редактировалось AveoSS; 05.03.2010 в 15:14..
 
Ответить с цитированием

  #2  
Старый 05.03.2010, 15:16
Аватар для AveoSS
AveoSS
Новичок
Регистрация: 19.02.2010
Сообщений: 13
Провел на форуме:
58642

Репутация: 4
По умолчанию

Я так понимаю это происходит на этапе формирования запроса здесь, как сформировать запрос в форме ввода почты для восстановления пароля?

Код:
$q = '' . 'select * from hm2_users where username=\'' . $email . '\' or email=\'' . $email . '\' and (status=\'on\' or status=\'suspended\')';
 
Ответить с цитированием

  #3  
Старый 05.03.2010, 18:14
Аватар для AveoSS
AveoSS
Новичок
Регистрация: 19.02.2010
Сообщений: 13
Провел на форуме:
58642

Репутация: 4
По умолчанию

Есть смысл пробовать так в поле ввода логина\мыла
admin\';update hm2_users set pswd ='test' where id =1/*


Подскажите,пожалуйста, хоть в правильном направлении иду или нет.
 
Ответить с цитированием

  #4  
Старый 05.03.2010, 19:23
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

ну тут скуля на лицо, нет проверки на то, что значение при запросе только одно, т.е. просто написав емайл админа и потом свое мыло (мы должны быть предварительно зарегены на сайте и иметь живое мыло), т.е. типо в сторону or копать, т.е. например такой запрос будет правильный:

$q = 'select * from hm2_users where username= '' . $email . ' or email=' . $email . ' or email = "а_тут_email_ взломщика"' ;

и вернет данные как по админу, так и по нашему акку, и все последующие действия будут верны как для почты админа, так и для почты хеккера, т.е. мы МОЖЕМ поменять пароль как себе, так и админу

а проверка на id, которая типо существует, работает как раз на хеккера:

if (($settings['demomode'] == 1 AND $row['id'] <= 3))
{
}
else - тут как раз наоборот должно быть типо "Хеккер дай!"

т.е. это ровным счетом означает, что чувак, надо чтобы у тебя id было >3, флаг тебе в руки

ну а дальше идет while, который делает необходимые действия СО ВСЕМИ РЕЗУЛЬТАТАМИ первого sql запроса (где выбирается юзер по email), которых может быть не один, ибо проверки нет

PS: Ну и не фильтруется нифига ничего, это понятно. Диагноз не факт что правильный, беглый просмотр

т.е. при восстановлении вписать в поле мыла чонить вроде этого:

admin@mail.ru' or email='hekker@mail.ru

Последний раз редактировалось Pashkela; 05.03.2010 в 20:00..
 
Ответить с цитированием

  #5  
Старый 05.03.2010, 19:59
Аватар для AveoSS
AveoSS
Новичок
Регистрация: 19.02.2010
Сообщений: 13
Провел на форуме:
58642

Репутация: 4
По умолчанию

Вот пытаюсь подставить сюда
Код:
$q = '' . 'select * from hm2_users where username=\'' . $email . '\' or email=\'' . $email . '\' and (status=\'on\' or status=\'suspended\')';
admin\' or username= \'aveo.ssx

Насколько я понимаю таким образом я закрою 1 юзернейм и будет закрыт 2, а дальше все исполнится как надо, НО ничего не выходит может это из-за

Код:
$email = quote ($frm['email']);
Пробывал еще так

admin@thebestmoney.ru ' or email= 'aveo.ssx@gmail.com

толку 0 -(

Может кто-то еще что-то посоветует?

Последний раз редактировалось AveoSS; 05.03.2010 в 20:03..
 
Ответить с цитированием

  #6  
Старый 05.03.2010, 20:03
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

понимаешь, не видя всего исходного кода, включая все функции и т.д.

$email = quote ($frm['email']);

трудно что-то говорить. Но суть взлома по идее в этом
 
Ответить с цитированием

  #7  
Старый 05.03.2010, 20:21
Аватар для AveoSS
AveoSS
Новичок
Регистрация: 19.02.2010
Сообщений: 13
Провел на форуме:
58642

Репутация: 4
По умолчанию

quote подставляет слеши?
 
Ответить с цитированием

  #8  
Старый 05.03.2010, 20:24
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Вообще-то устранение уязвимостей денег стоит. Ссылку дал в личку. Основное тебе тут сказал. Дальше или сам, или извини

PS: Тут надо весь код нахрен переписывать, а не просто сказать "как"

Последний раз редактировалось Pashkela; 05.03.2010 в 20:27..
 
Ответить с цитированием

  #9  
Старый 05.03.2010, 20:30
Аватар для AveoSS
AveoSS
Новичок
Регистрация: 19.02.2010
Сообщений: 13
Провел на форуме:
58642

Репутация: 4
По умолчанию

мне нужно просто узнать как юзать уязвимость,а вот как её править я уже сам разберусь!
Точнее будет сказать как разобраться со слешами подставляемыми к кавычкам.(если я не ошибаюсь)


Вот не могу понять почему на такие данные в форме
Код:
admin@thebestmoney.ru' or email= 'test@test.ru
получаю No accounts found
слеши подставляются насколько я понял+ судя по коду запросакавычки будут тоже закрыты для email и username

Последний раз редактировалось AveoSS; 05.03.2010 в 20:35..
 
Ответить с цитированием

  #10  
Старый 06.03.2010, 03:51
Аватар для AveoSS
AveoSS
Новичок
Регистрация: 19.02.2010
Сообщений: 13
Провел на форуме:
58642

Репутация: 4
По умолчанию

Неужели ни у кого нету мыслей по реализации? Буду благодарен за любую помощь, идею или просто толковый совет!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взлом сервера Microsoft IIS 6 Через SQL Запросы [Tsh] *CorPSe* АнтиАдмин 3 08.03.2005 12:16
взлом ip через isq и др. BART Болталка 20 04.10.2004 05:15
взлом через инфу волк_тряпошный Чаты 8 14.02.2003 18:23



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ