WordPress IP验证不当漏洞修复

2,498次阅读
没有评论

共计 640 个字符,预计需要花费 2 分钟才能阅读完成。

昨天才从 Emlog 迁移到 Wordpress,今早阿里云就发现了 WordPress IP 验证不当 的漏洞,路径为:wp-includes/http.php

经查发现在这里面有一处检验规则漏洞,文件中的 wp_http_validate_url 函数对输入 IP 验证不当,导致黑客可构造类似于 012.10.10.10 这样的畸形 IP 绕过验证,进行 SSRF。

源代码的第 540 行中,调用了 preg_match 方法对传入的 IP 地址进行校验,这里可以构造一个畸形的 IP 地址,以跳过 if 去执行 else,从而使用了 gethostbyname。

核心问题出在此正则表达式的校验比较弱,正确的 IPv4 地址是 xxx.xxx.xxx.xxx,但是首位不能是 0。

解决办法 -:增强正则表达式。
^(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$

即:if (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 ) )
更改为:if (preg_match( '#^(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$#', $host ) )
Wordpress IP 验证不当漏洞修复

打赏小哥

Wordpress IP 验证不当漏洞修复微信打赏 Wordpress IP 验证不当漏洞修复支付宝打赏

正文完
 0
评论(没有评论)