在我自己的网站上执行字典攻击

时间:2010-08-03 12:40:26

标签: php mysql security testing

我想执行字典攻击,或者如果使用我的哈希密码直接在数据库中进行攻击,以便找出我网站的哪些用户使用简单密码。

我会在创建密码时实施一些复杂性规则,但我希望能够联系拥有简单字典单词并要求他们更改密码的用户。

数据库是带有MD5哈希密码的MySQL。该网站的其余部分是用PHP编写的。

我的假设是我需要一个字典文件,它们是一种自动化的方式来测试每个用户的每个单词,但我有超过1000个用户可以查看,我确信有超过10,000个潜在的单词需要测试,所以我没有关于自动化这类事物的最佳方法的想法。

非常感谢任何帮助或指导。

7 个答案:

答案 0 :(得分:9)

  

数据库是带有MD5的MySQL   加密密码。

...使用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
}

话虽如此,你应该:

答案 1 :(得分:3)

  1. 获取字典
  2. 将字典单词编码为MD5。考虑大写和小写的变化。
  3. 从数据库中选择useremail,其中包含编码字集合中的密码。
  4. 向这些电子邮件发送电子邮件。

答案 2 :(得分:2)

10,000个单词和1,000个用户听起来不太糟糕。从这样的事情开始:

<?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.
    }
}

事先建立一个密码索引,你应该好好去。

答案 3 :(得分:2)

如果MD5是无盐,那么您可以通过将哈希值输入到在线彩虹表中来读取明文中的弱用户密码或中等强度用户密码,例如:{{3 }}

当时不需要字典攻击。

如果您在应用程序中使用了无盐的MD5密码,那么您当然应该使用生锈的铁棒进行殴打。

答案 4 :(得分:1)

互联网上有共享软件和免费软件声称会对网站进行暴力破解或字典攻击。

我毫不犹豫地推荐任何,甚至建议这些程序按照他们的说法行事。

如果您要下载一个,请在隔离的计算机上进行测试。

答案 5 :(得分:0)

强制所有用户使用新策略更改其密码。这种方式更容易。

答案 6 :(得分:0)

下次登录时检查密码。如果任何密码不足,请将用户重定向到更改密码页面,并强制他/她/更改密码。