近日收到阿里云云盾安全中心的漏洞提醒邮件,提示 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)
如下图所示:
针对南方这种懒人来说,直接使用云盾企业版的一键修复功能,搞定!
如果有更好的解决方案,欢迎评论交流。