PHP-IMAP是一个IMAP通信的包装器,无需安装/启用php-imap模块即可使用。在版本5.3.0之前,未经过滤的附件文件名允许任何未经认证的用户利用目录遍历漏洞,导致远程代码执行漏洞。每个使用`Attachment::save()`存储附件且没有提供`$filename`或传递未经过滤的用户输入的应用程序都会受到此攻击的影响。攻击者可以向收件箱发送具有恶意附件的电子邮件,该附件将由`webklex/php-imap`或`webklex/laravel-imap`进行抓取。漏洞前提是脚本在不提供`$filename`或提供未经过滤的`$filename`的情况下存储附件,即`src/Attachment :: save(string $path,string $filename = null)`。在这种情况下,当没有将`$filename`传递到`Attachment::save()`方法中时,包将从邮件中使用一系列未经过滤和不安全的输入值作为后备。即使开发人员通过将邮件附件本身的名称或文件名(从电子邮件标头)传递给`Attachment::save()`方法来传递`$filename`,输入值也从未被包处理。还没有对文件扩展名(例如'.php')或文件内容进行限制。这允许攻击者以任何类型和内容上传恶意代码,并在底层用户具有写权限的任何位置上传。攻击者还可以覆盖现有文件,并向通过cron或请求执行的文件注入恶意代码。版本5.3.0中包含了此问题的补丁。
"将组件 webklex/php-imap 升级至 5.3.0 及以上版本"
"将组件 webklex/laravel-imap 升级至 5.3.0 及以上版本"