标题有点长,不过没有关系,只要方便大家搜索就ok,关于阿里云风险提示函数对输入IP验证不当,导致黑客可构造类似于012.10.10.10这样的畸形IP绕过验证处理办法,阿里云提示如下:
wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证不当,导致黑客可构造类似于012.10.10.10这样的畸形IP绕过验证,进行SSRF
处理办法有两个,一个是在阿里云内部开头专业版,具体可根据阿里云相关提示进行操作,实现一键修复,免费的只能撑7天,过了7天试用期还是要收费,本人比较抠门,不想给。于是网上找了一下,终于有了解决办法,而且立马生效。【实践证明此法行不通】
步骤如下:
通过FTP把wordpress /wp-includes/目录下的http.php文件下载到桌面——使用代码编辑器打开编辑——修改wp-includes/http.http文件中大概在第553行,版本不一样可能有所差异——把原来的:
preg_match(‘#^(([1-9]?d|1dd|25[0-5]|2[0-4]d).){3}([1-9]?d|1dd|25[0-5]|2[0-4]d)$#’, $host)
修改为:
preg_match(‘#^(([1-9]?d|1dd|25[0-5]|2[0-4]d|0+d+).){3}([1-9]?d|1dd|25[0-5]|2[0-4]d)$#’, $host)
效果立竿见影,修改后再回头去阿里云验证,风险提示消失,本人亲测,此法可解决。
不过,用了此法之后,次日我的站点就打不开,出现了这个提示:Error establishing a database connection,意思是建立数据库连接是发生错误,不知是否属于巧合,之前的网站一直好好的,一年多从未有此事发生,故而我还是先删除了改过的代码先,在观察看看,在此顺便也告知大家一下,以免与我一样的事情发生。
后面将持续关注,如果跟这个无关,届时再行更新。
后续:
经过一段时间的关注,可以肯定的告诉大家,此代码不行,会造成站点打不开,从2019年5月27号删除代码后,至今(2019.8.2),再也没有发生过同样的错误。特此声明下。
看来,能用的代码也只有之前用的,下面和大家分享一下别人的成果吧!代码如下:
可行的修复方法
1、在路径:/wp-includes/http.php找到 http.php 文件,用 Notepad++ 或其他编辑软件打开(修改之前记得先备份http.php原文件),大概在533行(不同的WordPress版本可能行数不同,你可以查找关键词进行查找):
$same_host = strtolower( $parsed_home[‘host’] ) === strtolower( $parsed_url[‘host’] );
修改为:
$same_host = ( strtolower( $parsed_home[‘host’] ) === strtolower( $parsed_url[‘host’] ) || ‘localhost’ == strtolower($parsed_url[‘host’]));
2、在 http.php 文件的549行:
if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
修改为:
if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0] || 0 === $parts[0]
漏洞修复完成
修改完以上内容,然后再到阿里云盾控制台重新验证一下漏洞,就会发现漏洞已经不存在了。