WordPress /wp-includes/http.php文件中的wp_http_validate_url函数没有正确验证输入IP,导致黑客构建类似012.10.10.10的异常IP旁路验证来执行SSRF。
解决方案:
找到文件/wp-includes/http.php,文件中大约有465行。在修改文件之前,记得在http.php备份原始文件。这是一个好习惯:
$same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] );
改成
if ( isset( $parsed_home['host'] ) ) { $same_host = ( strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] ) || 'localhost' === strtolower( $parsed_url['host'] ) ); } else { $same_host = false; } ;
在文件的 478 行左右找到
if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
修改为:
if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0] || 0 === $parts[0]