SQL.
问题出现在 \lib\sys\keke_shop_release_class.php 的save_service_obj函数中
部分代码如下
此处fileIdStr无单引号保护。
往上看
依次经过
$fileIdArr = explode('|', $_POST ['fileid1']);
$fileIdStr = implode(',', $fileIdArr);
得到fileIdStr
此处只进行了简单的数组判断和提取
传入参数
则$fileIdArr = ('1) and if(((ascii(substring(user(),1,1)))=114),sleep(10),1);#','')
$fileIdStr = '1) and if(((ascii(substring(user(),1,1)))=114),sleep(10),1);#'
最后拼接的sql即为
成功带入查询延时注入
看看哪几个地方引用了它:
拿第一个做证明
shop\goods\control\pub.php
即发布商品,首先登陆,
随便填写信息,提交抓包
直接在fileid1参数后追加要注入的语句
成功执行。
其余6点原理相同,
再来说说后台的
问题函数在 lib\inc\CommonClass.php 的delFileBySavename函数
很明显,传入的savename可控即可删除任意文件,来看看引用该函数的地方
向上追踪
即lib\sys\keke_shop_class.php 的 delServiceFiles函数,
部分代码如下:
同样没有针对$filename进行处理
再向上追踪
来看看第一处:
依然没有任何过滤,此处不证明了,虽然可以删除安装lock.毕竟是后台权限。还是比较鸡肋的,
第二处同上
最后给一个超级明显的后台注入点凑十个问题:
auth\enterprise\admin\auth_list.php
第18,19行
太明显,就不证明了。