近日使用阿里云服务器搭建wordpress个人博客系统,云盾里检查到又漏洞。
本文的亮点在最后,如果你和我一样,没有找到http.php 这个文件,解决方式请看文末。
漏洞信息
漏洞名称:wordpress IP验证不当漏洞
提示信息:wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证不当,导致黑客可构造类似于012.10.10.10这样的畸形IP绕过验证,进行SSRF。
如何解决
找到对应的 /wp-includes/http.php,我的wordpress 4.9.8 版本在文件中的 533 行,代码截图
if ( isset( $parsed_home['host'] ) ) { $same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] ); } else { $same_host = false; }
修改为
if ( isset( $parsed_home['host'] ) ) { $same_host = (strtolower($parsed_home['host']) === strtolower($parsed_url['host']) || 'localhost' === strtolower($parsed_url['host'])); } else { $same_host = false; }
验证漏洞是否修复
再次点击阿里云验证,如下图
好,我们最后说一下,http.php 文件没有找到的解决办法!
我遇到这个问题,一开始以为是wp的版本问题,后来查看了很多资料,也升级wp到最新版,但是还是没有,最后才找到原因:竟然是因为wp-includes 目录下文件太多,我使用的是宝塔控制面板,结果每页显示的文件数量有限,换言之,这个http.php的文件,跑到第二页去了。
如果你也是没有找对位置,就看看这个吧!