Выполнение атаки по словарю на свой сайт - PullRequest
2 голосов
/ 03 августа 2010

Я бы хотел выполнить атаку по словарю или, если это проще, провести атаку прямо в базу данных с моими хешированными паролями, чтобы выяснить, какие пользователи моего сайта используют простые пароли.

Я будупри создании паролей реализовывать некоторые правила сложности, но я бы хотел иметь возможность связаться с пользователями, у которых есть простые слова из словаря, и попросить их сменить свои пароли.

База данных MySQL с паролями хешированных MD5Остальная часть сайта написана на PHP.

Я предполагаю, что мне нужен файл словаря и их автоматический способ проверки каждого слова для каждого пользователя, но у меня есть более 1000 пользователей для просмотра, и я уверен,Есть более 10000 потенциальных слов для тестирования, поэтому я не знаю, как лучше всего автоматизировать подобные вещи.

Любая помощь или руководство будут чрезвычайно полезны.

Ответы [ 7 ]

9 голосов
/ 03 августа 2010

База данных MySQL с MD5 зашифрованные пароли.

... с MD5 хэшированными паролями. Хеширование! = Шифрование

Самый простой способ провести атаку - это поместить слова словаря в список, скажем, $dict и

.
foreach ($dict as $word) {
   $hash = md5($word);
   $db->query("SELECT username FROM users WHERE password='$hash'"); 
   // and see if any rows are returned
}

Как говорится, вы должны:

3 голосов
/ 03 августа 2010
  1. Получить словарь
  2. Кодировать слова словаря в MD5.Примите во внимание различия в верхнем и нижнем регистре.
  3. Выберите useremail из базы данных, где пароль в наборе закодированных слов.
  4. Отправка электронных писем на эти письма.
2 голосов
/ 03 августа 2010

Если MD5 несоленый , то вы, вероятно, сможете читать слабые или только умеренно надежные пароли пользователей в виде открытого текста, вводя хэши в оперативную радужную таблицу, например: http://gdataonline.com/seekhash.php

Атаки по словарю тогда не нужны.

Если вы используете несоленые пароли MD5 в своем приложении, то вас, конечно, следует избить ржавым железным прутом.

2 голосов
/ 03 августа 2010

10000 слов и 1000 пользователей звучат не так уж плохо.Начните с чего-то вроде этого:

<?php

$words = ... // load dictionary file into array
foreach ($words as $word) {
    $result = mysql_query('
        SELECT name
        FROM users
        WHERE password = MD5(' . $word . ');
    ');
    while ($row = mysql_fetch_assoc($result)) {
        print($row['name'] . "\n");
        // send an email, save to a file, etc.
    }
}

Заранее создайте индекс по паролю, и вам будет хорошо.

1 голос
/ 03 августа 2010

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

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

Если вы собираетесь загрузить его, протестируйте его на изолированном компьютере.

0 голосов
/ 03 августа 2010

Проверьте свои пароли при следующем входе.Если какой-либо пароль слабый, перенаправьте пользователя на страницу смены пароля и заставьте его / ее / ее изменить его.

0 голосов
/ 03 августа 2010

Заставить всех пользователей менять свои пароли с помощью новой политики. Этот способ намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...