Anymacro 邮件系统N处SQL注入 漏洞
0x01 背景 AnyMacro(安宁)成立于1999年,是国内领先的统一消息/移动门户/PushMail产品与应用解决方案提供商。主要客户涵盖国家部委、大型企业以及部分海外客户,客户分布于政府、军工、金融、电信、能源、教育等行业。 AnyMacro在技术创新和关键应用中一直处于行业领先地位,在全球首家提出并实现LAMP架构邮件/消息系统已成为事实的行业标准。AnyMacro 具有统一消息/移动门户/PushMail领域的全线技术与自主知识产权,还是多家国际Linux厂商的OEM邮件/消息产品提供商。 0x02 漏洞分析: 由于该邮件系统部分代码已经 加密 ,并且暂无方法解密,通过黑盒加白盒测试,发现所有页面只要添加了权限验证模块,都会出现SQL注入漏洞(危害非常非常严重),SQL注入漏洞可获取邮件信息,以及邮件用户名和密码。 此SQL注入漏洞产生于COOKIE当中,其中只要ANY_EMAIL=xxxx’ 即可报错注入。。。
初步怀疑该问题存在于加密代码当中。。。。 下面分析在其中一处代码当中的SQL注入 在tosms.php中
<?php require_once 'config/config.php'; require_once 'include/template.php'; require_once 'include/func.php'; require_once 'include/right.php'; require_once 'include/dbfunc.php'; require_once 'include/sms_func.php'; require_once 'include/func_login.php'; include_once "include/$AUTH_MODULE"; session_start(); $F_sid = trim($_REQUEST['F_sid']); if(isset($_REQUEST['F_sms_send'])) { //当f_sms_send条件存在时,触发 $email= $_COOKIE['ANY_EMAIL']; //无过滤从cookie中获取 $telstr = trim($_REQUEST['F_tel']); $tmp = explode(":",$telstr); $send_tel = $tmp[0]; $send_pass = ''; $sql = "SELECT id,maildir FROM user WHERE id='".$email."'";//直接传入sql语句当中执行,造成sql注入漏洞 $res = db_query($sql); $row = db_fetch($res); if(!empty($row['id'])) { $smsfile = $row['maildir'].'/sms.config'; if(file_exists($smsfile)) { $fstr = @file($smsfile); $farr = explode(",",trim($fstr[0])); $tel_arr[$farr[0]] = $farr[2]; $send_pass = $tel_arr[$send_tel]; } } $recv_tel = trim($_REQUEST['F_phone']); $sms_msg= trim($_REQUEST['F_msg']);抓包丢sqlmap注入,即可注入出所有邮件用户名和密码。。。 注入出用户名和密码,登录后台。。。
查看更多关于Anymacro 邮件系统N处SQL注入漏洞 - 网站安全 - 自学的详细内容...