WordPress <= 1.5.1.1-(wp-includes/functions.php:555)注入
WordPress <= 1.5.1.1 - SQL注入分析
- 影响条件:
- 程序:WordPress
- 版本:<= 1.5.1.1
- 严重程度:高危
简要
在Wordpress调用模版时候,其功能之一是在右侧显示当前存档的类型,进行对应类型查询的时候没有使用干净的参数导致注入
正文
首先将断点下在问题点追寻处理流程
如下:
这是最后参数被污染之后所处的位置

为了理解wordpress的漏洞就要研究wordpress的整个处理流程.
我们可以看到#8中的代码
index.php12345<?php/* Short and sweet */define('WP_USE_THEMES', true);require('./wp-blog-header.php');?>
很简单的两行代码
Short and sweet:grinning:
包含了wp-blog-header.php
wp-blog-header.php主要进行了一些配置文件的初始化,以及对 GET传入的参数进行了构建。
构建好参数之后经过处理,应用到对应的模板上面.
构建参数在主要是如下代码
|
|
query_posts()函数的函数原型,如下:
|
|
query_posts申明了一个$wp_query的全局变量,这是很重要的一个全局变量.
query()函数原型,如下:1234function &query($query) {$this->parse_query($query);return $this->get_posts();}
query函数做了对参数的解析赋值,之后return调用了一个get_posts()函数这个函数做了很多拼接并进行数据库查询语句的动作.
我还发现了,在#4中的load_template()
|
|
这里的`extract($wp_query->query_vars);`貌似是一段废代码,因为`$wp_query->query_vars`是`NULL`,extract()接受的参数是array.
在`#2`中
这个函数从`$wp_query`中取出了`cat`参数被污染的值,并且最终传入了`functions.php`中的`get_category()`拼接的语句中执行了注入的语句.
