浅析PHP框架Laravel最新SQL注入漏洞

浅析PHP框架Laravel最新SQL注入漏洞,第1张

概述浅析PHP框架Laravel最新SQL注入漏洞 PHP知名开发框架Laravel,之前在官方博客通报了一个高危sql注入漏洞,这里简单分析下。

首先,这个漏洞属于网站Coding写法不规范,官方给了提示:

但官方还是做了修补,升级最新版本V5.8.7可修复。

我们先定位下这里:

Illuminate\ValIDation\Rule

官方推荐的写法是:

Rule::unique('users')->ignore($ID),

如果网站Coding没有预先对$ID的值做处理时,用户可以直接传递恶意数据给ignore函数,就会导致sql注入。

我们来跟一下函数:

\Illuminate\ValIDation\Rules\Unique.PHP class Unique {... public function ignore($ID, $IDColumn = null) { if ($ID instanceof Model) { return $this->ignoreModel($ID, $IDColumn);        } $this->ignore = $ID; $this->IDColumn = $IDColumn ?? 'ID'; return $this;    }

这里我们不考虑把$ID写成实例的情况,$ID是用户可控的话,$IDColumn直接写为空即可,最后赋值情况如下:

$this->ignore = $ID; $this->IDColumn = 'ID';

如果网站代码类似这样构造的话,黑客输入的值就属于可控状态:

$ID = $request->input('ID');

最后我们会走到这儿:

Illuminate\ValIDation\Rules\Unique.PHP public function __toString() {        ...        ...    }

我们看下关键的代码变更:

Illuminate\ValIDation\Rules\Unique.PHPV5.8.7【最新版】 public function __toString() { $this->ignore ? '"'.addslashes($this->ignore).'"' : 'NulL',    } Illuminate\ValIDation\Rules\Unique.PHPV5.8.4 public function __toString() { $this->ignore ? '"'.$this->ignore.'"' : 'NulL',    }

这里最新的代码v5.8.7,把$this->ignore直接给addslashes了,以前这里是没有防护的。

有趣的是,笔者对比了下diff,期间官方还试图对其他引用的地方进行过滤。最后还是在__toString处,进行了统一的过滤。

最后提一句,后面的代码会进入DatabaseRule,进行后续sql规则匹配。

Illuminate\ValIDation\Rules\DatabaseRule.PHP

这之后就没有再进一步处理,接着形成了sql注入。

更多Laravel相关技术文章,请访问Laravel框架入门教程栏目进行学习! 总结

以上是内存溢出为你收集整理的浅析PHP框架Laravel最新SQL注入漏洞全部内容,希望文章能够帮你解决浅析PHP框架Laravel最新SQL注入漏洞所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存