云服务器报wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证漏洞

一、wordpress函数wp_http_validate_url畸形IP绕过验证SSRF漏洞

原文:https://blog.csdn.net/dclnet/article/details/81869078

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

修复方法:

http.php 540行

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)

改成

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)

既增加对0开头的012.10.10.10这样的IP进行验证,个人简单测试用例结果:

云服务器报wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证漏洞_第1张图片
image.png

网上转(讹)载(传)的修改方法

云服务器报wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证漏洞_第2张图片
image.png

这个是什么意思呢?懂代码的都知道它只是判断域名,没对IP做验证,所以这样或许可以骗过阿里云的漏洞检测(我没去试),但是这样仍然是没有真正意义上的修复漏洞,那么……
各位看官觉得有什么不对的可评论指出

二、 阿里云给出的漏洞说明

原文:https://www.liwei8090.com/2831.html

今天登陆阿里云服务器控制台,提示网站存在漏洞,等级为“需尽快修复”。对于我这种强迫症的人来说,这样的提醒当然是越早消灭掉越好。下面是阿里给出的“wordpress IP验证不当漏洞”说明:

云服务器报wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证漏洞_第3张图片
阿里云服务器报“wordpress IP验证不当”漏洞

云服务器报wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证漏洞_第4张图片
阿里云服务器报“wordpress IP验证不当”漏洞

基本信息

标题: wordpress IP验证不当漏洞

披露时间: 1970-01-01 08:00:00

简介:

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

解决方案:

方案一:使用云盾自研补丁进行一键修复;

方案二:更新该软件到官方最新版本或寻求该软件提供商的帮助。

注意:该补丁为云盾自研代码修复方案,云盾会根据您当前代码是否符合云盾自研的修复模式进行检测,如果您自行采取了底层/框架统一修复、或者使用了其他的修复方案,可能会导致您虽然已经修复了该漏洞,云盾依然报告存在漏洞,遇到该情况可选择忽略该漏洞提示】

如何修复

1、在路径:/data/wwwroot/www.liwei8090.com/wp-includes/http.php找到http.php文件,用Notepad++打开(修改之前记得先备份http.php原文件),大概在533行(不同的WordPress版本可能行数不同,你可以查找关键词进行查找):

  1.  $same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] );
    
  2.    /*修改为*/
    
  3.    $same_host = (  strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] ) || 'localhost' == strtolower($parsed_url['host']));
    

2、在http.php文件的549行:

  1.    if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
    
  2.    /*修改为:*/
    
  3.    if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0] || 0 === $parts[0]
    
漏洞修复完成

修改完以上内容,然后再到阿里云盾控制台重新验证一下漏洞,就会发现漏洞已经不存在了。

阿里云服务器报“wordpress IP验证不当”漏洞

你可能感兴趣的:(云服务器报wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证漏洞)