【漏洞】WordPress IP 验证不当漏洞

一 、修复漏洞

Ricky 最近在使用 WordPress 5.1.1 时,阿里云提示 WordPress 存在一个 WordPress IP 验证不当漏洞,该漏洞的修复还是很简单的,只需要将 /wp-includes/http.php 文件中的(从第 545 行开始):

if ( isset( $parsed_home['host'] ) ) {
	$same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] );
} else {
	$same_host = false;
}

if ( ! $same_host ) {
	$host = trim( $parsed_url['host'], '.' );
	if ( preg_match( '#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d|0+\d+)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host ) ) {
		$ip = $host;
	} else {
		$ip = gethostbyname( $host );
		if ( $ip === $host ) { // Error condition for gethostbyname()
			$ip = false;
		}
	}
	if ( $ip ) {
		$parts = array_map( 'intval', explode( '.', $ip ) );
		if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
			|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
			|| ( 192 === $parts[0] && 168 === $parts[1] )
		) {

改成:

if ( isset( $parsed_home['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; } ;
} else {
	$same_host = false;
}

if ( ! $same_host ) {
	$host = trim( $parsed_url['host'], '.' );
	if ( preg_match( '#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host ) ) {
		$ip = $host;
	} else {
		$ip = gethostbyname( $host );
		if ( $ip === $host ) { // Error condition for gethostbyname()
			$ip = false;
		}
	}
	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] )
		) {

即可。

源代码下载请点击这里(压缩包中 http_old.php 为修改前的文件,http.php 为修改后的文件)。

二 、来自阿里云的报道

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

文章附件

这篇文章对你有帮助吗?

相关文章

发表评论?

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据