登录阿里云后台 有漏洞安全修复提示,级别尽快修复,同时给出ECS服务器管理重要通知:您的云服务器(xxx.xx.xxx.xx)由于被检测到对外攻击,已阻断该服务器对其它服务器端口(UDP:ALL)的访问,阻断预计将在2018-04-23 09:56:58时间内结束,请及时进行安全自查。若有疑问,请工单或电话联系阿里云售后。 阿里云经常提示有wordpress IP验证不当漏洞,实际上这个漏洞影响并不大,阿里云只是为了让你购买它的付费版的云盾服务器安全服务(安骑士)。其实我们自己手动就可以修复这个漏洞,下面是如何修复漏洞的方法。
漏洞名称:wordpress IP验证不当漏洞
补丁编号:7292650
补丁文件:wp-includes/http.php
补丁来源:云盾自研
漏洞描述:
wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证不当,导致黑客可构造类似于012.10.10.10这样的畸形IP绕过验证,进行SSRF。【注意:该补丁为云盾自研代码修复方案,云盾会根据您当前代码是否符合云盾自研的修复模式进行检测,如果您自行采取了底层/框架统一修复、或者使用了其他的修复方案,可能会导致您虽然已经修复了改漏洞,云盾依然报告存在漏洞,遇到该情况可选择忽略该漏洞提示】
漏洞修复方法:
找到wp-includes/http.php这个文件,在文件的526行(不同的WordPress版本行数不同,可以搜索下面代码来找出这个位置)附近找到:
$same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] );
其实最新的WordPress这一段是这样子的:
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;
}
如果你的 WordPress 版本不是最新版,在 541行左右找以下代码(最新版WordPress已经不需要修改这一项了。)
if ( 127 === $parts[0] || 10 === $parts[0]
替换成:
if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
如果发现上面这行代码跟源文件中的一样,则不用修改了,最新版 WordPress 已经是这样的代码了。。
修改完之后,登录阿里云,打开云盾服务器安全,找到这个漏洞,在后面点击验证一下,验证通过之后,就不提示这个漏洞了。