Press "Enter" to skip to content

修复 WordPress 函数 wp_http_validate_url 畸形 IP 绕过验证 SSRF 漏洞

近日收到阿里云云盾安全中心的漏洞提醒邮件,提示 WordPress 程序存在安全风险(南方使用的是 WordPress 5.2.2 )。进入阿里云云盾后发现是 WordPress 程序下 /wp-includes/http.php 文件中 wp_http_validate_url 函数对输入 IP 验证不当,导致黑客可构造类似于 012.10.10.10 这样的畸形 IP 绕过验证,进行 SSRF。

查阅了相关信息后,发现该漏洞修复主要有两种。

一种是网传(谣传)的修复方法:

这个是什么意思呢?就连不是很懂代码的南方都知道它仅仅只是判断域名,没对 IP 做验证,而这个漏洞却是利用畸形 IP 绕过验证,所以上面的修复方法或许可以骗过阿里云的漏洞检测,但是这样仍然是没有真正意义上的修复漏洞,那么……

第二种修复方法是:

找到 /wp-includes/http.php 文件,大概在 553 行左右(修复方法参考至:传送门

将:

preg_match('#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host)

修改为:

preg_match('#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d|0+\d+)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host)

如下图所示:

针对南方这种懒人来说,直接使用云盾企业版的一键修复功能,搞定!

如果有更好的解决方案,欢迎评论交流。

发表评论

邮箱地址不会被公开。 必填项已用*标注