开源PHPMailer库被披露存有一个严重的远程代码执行漏洞。这个漏洞在被修补后,又进行了二次修复,因为第一次没有充分解决问题。那么,这个漏洞是如何工作的?为什么原始补丁没有解决问题?

Michael Cobb:代码库和框架大大减少了构建新应用程序所需的时间,保存了一些通用组件,因而开发团队不需要再为每个新项目从头开始构建。

绝大多数Web服务都是使用流行的第三方框架和库构建的。这种重复使用代码的最大问题是,如果在受欢迎的库中发现了一个漏洞,那么它会影响成千上万的应用程序、站点和服务。

这种情况非常频繁,最近又再次出现,前不久Dawid Golunski发现开源运输类PHPMailer中的远程代码执行漏洞。利用该漏洞,攻击者能够在Web服务器帐户的上下文中访问目标服务器,可能导致Web应用程序受损。

PHPMailer被许多开源项目所使用,如WordPress、Drupal和Joomla,全球约有900万用户。网上有数千个代码段和示例,显示了如何使用PHPMailer从各种形式(如联系人或注册表单)发送电子邮件,但其中大多数包含不安全的代码行,这让该漏洞得以被利用,因为它允许任何人伪造From和发件人地址。

PHPMailer使用PHP邮件功能作为发送邮件的默认方法。虽然PHPMailer使用的所有电子邮件地址在使用前都已先行进行验证,但Golunski发现了“生成一个包含可执行命令的有效‘发件人’电子邮件地址的方式”。虽然“发件人”电子邮件地址应由开发人员设置,但通常都是由用户自行设置,这非常不好,用户能够提交他们选择的任何电子邮件地址。另外,如果开发人员未对发件人的属性进行明确的设置,则使用发件人地址。此发件人值将添加到传递给PHP邮件功能的第五个参数,该函数无法过滤掉一些可能包含的字符串字面值转义字符。这样一来,攻击者能够注入包含发送邮件时执行命令的其他参数。

这个漏洞被标记为CVE-2016-10033,PHPMailer开发人员认为在发布的PHPMailer 5.2.18版本时已修复了该漏洞。他们在传递给PHP邮件功能之前,添加了escapeshellarg转义函数来清理发件人地址值。

但Golunski注意到,当escapeshellarg函数与现有的转义函数escapeshellcmd组合使用时,发件人值仍然没有得到正确的转义。通过向原始攻击代码添加额外的引用,仍然可以逃避补丁所提供的保护。这个新的漏洞是CVE-2016-10045,补丁在PHPMailer 5.2.20中被发布。

PHPMailer团队已经在GitHub上发布了如何正确处理网站表单中使用的电子邮件地址的示例。它需要向网站域内的有效地址发送表单数据,并由开发人员设置。

这被认为是一个非常关键的漏洞,它显示出开发人员和Web管理员保持对最新安全威胁以及使用任何共享组件、包或库订阅保持警惕的重要性。

开发人员应该审查使用PHPMailer邮件功能的所有脚本,还要研究PHP的各种转义功能的工作机制,以及它们对不同类型字符串的影响,因为错误的转义字符串也可能导致SQL注入。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget

官方微博

TechTarget中国

php打补丁,PHPMailer库打补丁后漏洞仍然存在,怎么解?相关推荐

  1. 开源我的基于字节的数据补丁算法库HDiffPatch

    开源我的基于字节的数据补丁算法库HDiffPatch 作者: HouSisong@GMail.com   2013.05.31 tag: HDiffPatch,diff,patch,补丁 HDiffP ...

  2. 微软黑屏补丁_慎装微软最新Win7补丁 部分用户更新补丁后无法关机

    清波科技2月9日报道 使用微软windows系统的用户,对于蓝屏肯定不陌生,不过现在还有比蓝屏更可怕的系统故障:无法关机和重启. 近日,在微软更新了一个最新的Win7补丁后,有部分用户反馈:在试图从开 ...

  3. .NET库和向后兼容的技巧——第3部分

    目录 二进制不兼容 害怕承诺 优点 缺点 强大的命名难题 二进制不兼容的类型 二进制兼容性和源代码兼容性 怎么不发疯 所有美好的事物都必须走到尽头 这是.NET库和向后兼容系列技术的第三篇文章: 第1 ...

  4. .netframewor金山卫士推送微软8月补丁 IE所有版本存在高危漏洞

    8月10日凌晨,微软刚刚发布了8月份的安全补丁,其中涉及到所有浏览器IE版本中的7个安全漏洞,最严重的漏洞可能会使网民通过IE浏览特制网页时允许远程执行代码,成功利用这些漏洞的者可以获得与本地用户相同 ...

  5. 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核

    补丁有几种方式: 1. 替换原有的EXE或DLL文件 2. 通过汇编码直接修改原来的EXE或DLL(豪杰就这么干过,太厉害了) 3. 修改注册表或INI文件以支持新格式文件 以上三种方法可单独使用或联 ...

  6. 远程桌面漏洞poc_十万火急,速打补丁!Windows RDP服务蠕虫级漏洞攻击被公开

    Windows RDP服务蠕虫级漏洞CVE-2019-0708攻击方法已放出,该漏洞可能导致类似WannaCry的蠕虫病毒爆发,攻击者亦可利用漏洞入侵后释放勒索病毒,漏洞威力不逊于永恒之蓝. 速打补丁 ...

  7. IDM All Products全系列破解UltraEditUltraCompareUEStudioUltraFTPUltraFinder全部最新版产品破解补丁及注册机补丁破解

     IDM All Products全系列破解UltraEditUltraCompareUEStudioUltraFTPUltraFinder全部最新版产品破解补丁及注册机补丁破解 IDM All ...

  8. 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核

    对于长期使用Linux的童鞋来说,不说有没有打过补丁,至少这个词大家并不陌生,下面我们通过一个实例来说说: 前几天接触了TQ3358这块天嵌的ARM板子,想给它装个实时Linux并做测试,在自带的光盘 ...

  9. 2021-01 补丁日: 微软多个高危漏洞通告

    报告编号:B6-2021-011302 报告来源:360CERT 报告作者:360CERT 更新日期:2021-01-13 0x01事件简述 2021年01月13日,360CERT监测发现发布了的风险 ...

最新文章

  1. android逆向分析概述_Android存储概述
  2. Nature-2018-抗菌药物组合有望特异性治疗耐多药性的细菌感染
  3. Redis源码试读(一)源码准备
  4. Java实用教程笔记 Java入门
  5. python:字典,元组
  6. (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
  7. 同步外部接口数据的一些记录和分享
  8. 汇编程序中,字符数据和ASCII的对应关系
  9. mysql 触发器不能同时 insert or update or delete_MySQL6:触发器
  10. 【文献学习】强化学习3:基于数据的方法
  11. Java只读服务器,在服务器端,JSP页面如何只读打开本地的word文件并显示在网页上...
  12. MySQL中向下查询_mysql
  13. VRTK实现瞬移, 多场景复制
  14. 【肌电信号】基于matlab GUI脉搏信号脉率存档【含Matlab源码 237期】
  15. 怎么设置访问服务器文件夹权限凭据,Windows server 共享文件夹权限设置
  16. 2010中国互联网哈哈榜:十大梁山好汉
  17. maven出现错误 大难题-------
  18. 三菱fx2n plc用什么编程软件
  19. 乐观锁、悲观锁、分布式锁的概念及实现
  20. Aspose.Slides for .NET V23 Crack

热门文章

  1. 信息安全系统设计基础第十一周 20135218 姬梦馨
  2. 10个加速Table Views开发的Tips
  3. scheme 学习:红黑树
  4. Anton Chuvakin:关于日志管理产品的十个注意事项
  5. ai前沿公司_美术是AI的下一个前沿吗?
  6. clob类型字段最大存储长度_请教oracle的CLOB字段的最大长度?
  7. python实训英文_GitHub - MiracleYoung/You-are-Pythonista: 汇聚【Python应用】【Python实训】【Python技术分享】等等...
  8. leetcode1433. 检查一个字符串是否可以打破另一个字符串(贪心算法)
  9. 管理员所有权代码_为什么代码所有权糟透了,您永远不应该在有实践的地方工作...
  10. 面向Tableau开发人员的Python简要介绍(第4部分)