wordpress IP验证不当漏洞修复

漏洞描述wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证不当,导致黑客可构造类似于012.10.10.10这样的畸形IP绕过验证,进行SSRF。

 

修复方案:找到/wp-includes/http.php这个文件,在文件的533行附近找到:

 

$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']));

修改后同附近代码效果如下:

$same_host = (  strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] ) || 'localhost' === strtolower($parsed_url['host']));

在文件的549行附近找到:

if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]

改成:

if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0] || 0 === $parts[0]

修改后同附近代码效果如下:

if ( $ip ) {

$parts = array_map( 'intval', explode( '.', $ip ) );

if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0] || 0 === $parts[0]

|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )

|| ( 192 === $parts[0] && 168 === $parts[1] )

) {