更多安全资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn)
漏洞概述
受影响版本
受影响版本:WordPress < 5.8.3
漏洞分析
在clean_query函数中,当传递进来的$query满足以下两个条件:
-
$query['taxonomy']为空;
-
$query['filed']的值等于term_taxonomy_id。
WordPress的执行就会进入580行,调用transform_query函数。跟进该函数,满足602行,不做任何措施直接return,保持了terms的值不受改变。
在get_sql_for_clause中可以找到$terms变量被拼接到sql语句中。
WP_Query->__construct()
WP_Query->query()
WP_Query->get_posts()
WQ_Tax_Query->get_sql()
WQ_Tax_Query->get_sql_clauses()
WQ_Tax_Query->get_sql_for_query()
WQ_Tax_Query->get_sql_for_clause()
WQ_Tax_Query->clean_query()
在get_posts()中可以找到对WQ_Tax_Query->get_sql()的调用。
漏洞复现
EleCustom Skin插件安装量在10万以上,且其存在的漏洞调用是无需登录的。该插件存在方法get_document_data(),其核心代码如下:
public function get_document_data(){
global $wp_query;
$id = $this->widget_id;
$post_id = $this->post_id;
$theme_id = $this->theme_id;
$old_query = $wp_query->query_vars;
$this->query['paged'] = $this->current_page; // we need current(next) page to be loaded
$this->query['post_status'] = 'publish';
$wp_query = new \WP_Query($this->query);
wp_reset_postdata();//this fixes some issues with some get_the_ID users.
if (is_archive()){
$post_id = $theme_id;
}
$document = \Elementor\Plugin::$instance->documents->get_doc_for_frontend( $post_id );
$theme_document = \Elementor\Plugin::$instance->documents->get_doc_for_frontend( $theme_id );
$data[] = $this->get_element_data($id,$theme_document->get_elements_data());
// Change the current post, so widgets can use `documents->get_current`.
\Elementor\Plugin::$instance->documents->switch_to_document( $document );
ob_start();
$document->print_elements_with_wrapper( $data );
$content = ob_get_clean();
echo $this->clean_response($content,$id);
\Elementor\Plugin::$instance->documents->restore_document();
$wp_query->query_vars = $query_vars;
die;
}
全局搜索get_document_data,该方法被注册的action名字如下。
因此,该漏洞在这个插件是存在触发路径的。开启debug功能后,构造报文即可成功注入出数据库user。
流行插件分析
修复方案
目前WordPress已发布升级补丁以修复漏洞,补丁获取链接如下:
参考链接:
https://www.zerodayinitiative.com/blog/2022/1/18/cve-2021-21661-exposing-database-info-via-wordpress-sql-injection
启明星辰积极防御实验室(ADLab)
ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员,“黑雀攻击”概念首推者。截止目前,ADLab已通过CVE累计发布安全漏洞近1100个,通过 CNVD/CNNVD累计发布安全漏洞2000余个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、移动智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。
文章评论