WordPress Page Builder KingComposer 2.9.6 Open Redirection
WordPress 插件 KingComposer 版本2.9.6 以及以前版本受到开放重定向漏洞的影响。该漏洞在packetstorm网站披露于2023年7月24日,除了该漏洞,该版本的插件还存在XSS攻击的漏洞风险
图1.来自packetstorm网站的WordPress Page Builder KingComposer 2.9.6漏洞的说明
根据从调查这些攻击中了解到的情况,FOFA执行了互联网范围的扫描,以识别受损WordPress实例。通过这些扫描,FOFA识别出全球 16个 安装KingComposer 插件的WordPress实例,这些实例主要来源于美国、德国、法国、瑞士、日本等国家。首先,这些网站不太可能有专门的IT人员来管理他们的邮件服务器,并且可能不太可能有效地检测和修复事件。其次,这些网站中有部分网站存在不再被使用的现象。
值得注意的是,在该插件版本之前,就已经披露过相关类型的漏洞,这意味着官方可能并没有注意到这个漏洞的存在。
图2.受感染的WordPress服务器的地理分布(按IP的地理位置)
WordPress 最早出现开放重定向的插件漏洞可以追溯到2013年8月披露的WordPress Encrypted Blog 0.0.6.2 漏洞。大部分原因是由于插件的开发者并没有考虑相关的原因。
这篇文章详细介绍了WordPress Page Builder KingComposer 2.9.6 开放重定向漏洞的工作原理,并详细介绍了重定向的的过程,表明了 WordPress 实例遭到入侵。
分析
当 Web 应用程序接受不受信任的输入时,可能会导致 Web 应用程序将请求重定向到不受信任输入中包含的 URL,则可能会出现未经验证的重定向和转发。通过修改恶意站点的不受信任的 URL 输入,攻击者可以成功发起网络钓鱼诈骗并窃取用户凭据。
如果不对在代码中进行相应的代码约束,就会导致漏洞的出现。
为了进行测试,向满足漏洞条件的实例采取如下步骤:
- 制作一个用户难以识别的虚假网站
- 设计一个重定向虚假网站的payload
- 向装在该插件的实例发送payload请求
在执行这些步骤之后,我们可以返回到我们精心设计的虚假网站,并诱导用户进行一系列操作。
我们在该网站设置预制的payload将其重定向到FOFA网站。
当执行响应后,页面离开原来的站点。
防止开放重定向只需要判断重定向的链接是否是合法的链接即可。
1. 如果登录链接和站点其他页面都在同一个域名,一般可以依靠编程语言自身的相关函数即可处理,如在ASP.MVC中可以用Url.IsLocalUrl(string url)来判断。
2. 如果登录链接和站点其他页面不在同一个域名,则需要自己去实现判断的逻辑。
public ActionResult LogOn(LogOnModel model, string returnUrl){
//a demo code to avoid Open Redirection
FormsAuthentication.SetAuthCookie(model.UserName, false);
if (!string.IsNullOrEmpty(returnUrl)&& Url.IsLocalUrl(returnUrl)) {
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}
可能的广泛利用
一般而言,此类型漏洞均是通过伪造网站来达到欺骗用户的目的。
下表显示了在此扫描中发现的服务器受到最多入侵的国家/地区,此扫描存在一定的时效性,因此受感染服务器的真实数量可能更高。
值得注意的是,通常受感染的组织可能位于与WordPress实例不同的国家/地区,因为这些统计信息基于 IP 地址地理位置.
结论
总而言之,开放重定向漏洞是经常出现在插件以及主题上的一种漏洞,尽管不会威胁到实例的内部核心数据,却会导致用户可能会被虚假网站欺骗,出于安全的目的,建议开发者修复相关漏洞。
如果您的组织无法执行事件响应,或者您无法聘请第三方进行事件响应,那么遵守如下建议:
- 使用最新补丁重建对应的实例
- 如果无法避免用户输入,请确保提供的值有效、适合应用程序,并且已授权给用户。
- 通过创建受信任 URL 列表(主机列表或正则表达式)来清理输入。
这应基于允许列表方法,而不是阻止列表。 - 强制所有重定向首先浏览一个页面,通知用户他们正在离开您的网站,并清楚地显示目标,并让他们点击链接进行确认。