ECSHOP 2.7.x sql注入漏洞分析

ecshop将我们可控的参数渲染进模板时,其中利用到$fun($para) 进行动态调用,而通过精心构造的payload使得$fun和$para我们可控,导致可以调用任何函数,从而达到sql注入

1. POC与复现

POC:

Referer: 554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:1:"1";s:2:"id";s:52:"1' and updatexml(0x7e,concat(0x7e,database()),0x7e)#";}

复现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ko9MyA9m-1650101920894)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416171342773.png)]

2. 漏洞分析

首先说一下漏洞触发点在includes\lib_insert.php的insert_ads函数,可以看到并没有对传入变量进行任何过滤并且拼接到sql语句中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W3ph8G8v-1650101920895)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416171530507.png)]
好了,从头开始跟,首先在user.php的308行,直接将referer的值传给back_act然后在325行将back_act的值分配到模板的back_act变量,然后跟进display函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bdljsgZr-1650101920895)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416171925899.png)]
这个函数是用来渲染模板的,这里的out就是渲染好的html内容,将内容用$this->_echash全局变量分割,也就是拿554fcae493e564ee0dc75bdf2ebf94ca分割html内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-14hnjzA7-1650101920896)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416172244468.png)]
分割出来大概就是这样,可以看到我们的payload在数组索引3位置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UGFPLVJf-1650101920896)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416172644256.png)]
继续跟进到insert_mod函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c9e7JEx8-1650101920897)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416172830040.png)]
先看下我们传入的参数值为
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NMZhR5zu-1650101920897)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416173017777.png)]
然后利用|分割,fun的值为ads,para值为竖线后面那一大串
然后para被反序列化为数组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-02kEpHJq-1650101920897)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416173153585.png)]
继续往下走,此时fun就是insert_ads,这就到了我们的漏洞触发点
继续跟进,将id值嵌入sql语句,这就导致了sql注入漏洞
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e2KJNHHm-1650101920897)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220416173250297.png)]

3. 修复建议

可以给$arr[‘id’]和$arr[‘num’]进行intval强制类型转换

4. 参考文献

https://cloud.tencent.com/developer/article/1333449

https://xz.aliyun.com/t/2725

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值