admin.php wordpress,Wordpress admin-ajax.php远程SQL注入漏洞

WordPress是一款免费的论坛Blog系统。

WordPress实现上存在输入验证漏洞,远程攻击者可能利用此漏洞执行SQL注入攻击非授权访问数据库。

WordPress的wp-admin/admin-ajax.php文件没有正确验证对cookie参数的输入。在wp-admin/admin-ajax.php的6行:

------------------[source code]----------------------

define('DOING_AJAX', true);

check_ajax_referer();

if ( !is_user_logged_in() )

die('-1');

------------------[/source code]----------------------

然后在check_ajax_referer()函数中:

------------------[source code]----------------------

function check_ajax_referer() {

$cookie = explode('; ', urldecode(empty($_POST['cookie']) ?

$_GET['cookie'] : $_POST['cookie'])); // AJAX scripts must pass

cookie=document.cookie

foreach ( $cookie as $tasty ) {

if ( false !== strpos($tasty, USER_COOKIE) )

$user = substr(strstr($tasty, '='), 1);

if ( false !== strpos($tasty, PASS_COOKIE) )

$pass = substr(strstr($tasty, '='), 1);

}

if ( !wp_login( $user, $pass, true ) )

die('-1');

------------------[/source code]----------------------

可见使用了urldecode(),因此通过%2527就可以向wp_login()传送单引号,绕过php的magic_quotes功能。

接下来:

------------------[source code]----------------------

function wp_login($username, $password, $already_md5 = false) {

global $wpdb, $error;

...

$login = get_userdatabylogin($username);

------------------[/source code]----------------------

最终:

------------------[source code]----------------------

function get_userdatabylogin($user_login) {

global $wpdb;

...

if ( !$user = $wpdb->get_row("SELECT * FROM $wpdb->users

WHERE user_login = '$user_login'") )

return false;

------------------[/source code]----------------------

因此攻击者可以执行SQL注入攻击。

WordPress WordPress 2.1.3

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://wordpress.org/download/

loading-bars.svg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值