小朱订单管理系统的一个注入

好久没搞站了,工作太忙,时间虽然有点,但始终没有什么原创出来,还好90SEC能经常上来逛逛,上回变成实习的,真是吓了一跳。
经常搞购物站的人应该有遇到这么个订单管理系统的,是个收费的系统。。。
漏洞出现在订单处理页面dorder.php。

代码如下:
[php]
//设置工程相对路径
$root_path="./";
require_once("$root_path/lib/config.php");
require_once("$root_path/data/dconfig.php");
if(isset($_POST['realname'])){
session_start();
$db=new MySql();
//登录判断
$pro_name=str_check($_POST['pro_name']);

$pay_type=str_check($_POST['pay_type']);

$realname=str_check($_POST['realname']);
$tel=str_check($_POST['tel']);
$tel2=str_check($_POST['tel2']);
$tmpadd=str_check($_POST['addess']);
$guest=str_check($_POST['guest']);
$addess=str_check($_POST['province3']).str_check($_POST['city3']).str_check($_POST['area3']).str_check($_POST['addess']);
$qq=str_check($_POST['qq']);
$post=str_check($_POST['post']);
$mun=intval($_POST['mun']);
$email=str_check($_POST['email']);
$pay_time=date("mdhis");
//来路
$referer = $_SERVER['HTTP_REFERER'];
if(empty($realname)){
showmessage_go("您的姓名!");
}else{
$ip=ip();
$sql = "INSERT INTO dindan (pro_name,pay_type,pay_time, realname,tel,tel2,addess,guest,ips,lastdate,qq,post,mun,email,shen) " .
"VALUES ('$pro_name','$pay_type','$pay_time','$realname','$tel','$tel2','$addess','$guest','$ip',now(),'$qq','$post','$mun','$email','$referer')";
$res = $GLOBALS['db']->query($sql);
$mailok=0;
if(file_exists("$root_path/data/dmailconfig.php")){
require_once("$root_path/data/dmailconfig.php");
}
if($mailok==1 && $smtpusermail && $smtpemailto){
//发送
require_once("$root_path/lib/email.class.php");

$mailbody .="

姓名:".$realname."
";
$mailbody .="

联系电话:".$tel."
";
$mailbody .="

产品:".$pro_name."
";
$mailbody .="

地址:".$addess."
";
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
$smtp->debug = FALSE;//是否显示发送的调试信息
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);
}
$msg="订单提交成功,我们会尽快为您安排发货,祝您购物愉快!";
echo "

";
}

}
?>

[/php]
漏洞很明显,$ip处没有过滤,产生注入。
[php]
$ip=ip();
$sql = "INSERT INTO dindan (pro_name,pay_type,pay_time, realname,tel,tel2,addess,guest,ips,lastdate,qq,post,mun,email,shen) " .
"VALUES ('$pro_name','$pay_type','$pay_time','$realname','$tel','$tel2','$addess','$guest','$ip',now(),'$qq','$post','$mun','$email','$referer')";
[/php]

后台拿shell也很简单,可以直接插一句话的,在设置那儿有两处可以直接插直接写入文件。

2 条评论

  1. 释放感觉

    老大 需要进入后台才能拿到webshell吗?

    1. 0day5
      @释放感觉

      暂时是的。感谢你的支持

发表评论