云服務(wù)器報(bào)wordpress /wp-includes/http.php文件中的wp_http_validate_url函數(shù)對(duì)輸入IP驗(yàn)證漏洞

一、wordpress函數(shù)wp_http_validate_url畸形IP繞過(guò)驗(yàn)證SSRF漏洞

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

阿里云提示:wordpress /wp-includes/http.php文件中的wp_http_validate_url函數(shù)對(duì)輸入IP驗(yàn)證不當(dāng),導(dǎo)致黑客可構(gòu)造類似于012.10.10.10這樣的畸形IP繞過(guò)驗(yàn)證,進(jìn)行SSRF;
修復(fù)方法:
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)

既增加對(duì)0開(kāi)頭的012.10.10.10這樣的IP進(jìn)行驗(yàn)證,簡(jiǎn)單測(cè)試用例結(jié)果:

image.png

網(wǎng)上轉(zhuǎn)(訛)載(傳)的修改方法

image.png

這個(gè)是什么意思呢?懂代碼的都知道它只是判斷域名,沒(méi)對(duì)IP做驗(yàn)證,所以這樣或許可以騙過(guò)阿里云的漏洞檢測(cè)(我沒(méi)去試),但是這樣仍然是沒(méi)有真正意義上的修復(fù)漏洞,那么……
各位看官覺(jué)得有什么不對(duì)的可評(píng)論指出

二、 阿里云給出的漏洞說(shuō)明

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

今天登陸阿里云服務(wù)器控制臺(tái),提示網(wǎng)站存在漏洞,等級(jí)為“需盡快修復(fù)”。對(duì)于我這種強(qiáng)迫癥的人來(lái)說(shuō),這樣的提醒當(dāng)然是越早消滅掉越好。下面是阿里給出的“wordpress IP驗(yàn)證不當(dāng)漏洞”說(shuō)明:

基本信息

標(biāo)題: wordpress IP驗(yàn)證不當(dāng)漏洞

披露時(shí)間: 1970-01-01 08:00:00

簡(jiǎn)介:

wordpress /wp-includes/http.php文件中的wp_http_validate_url函數(shù)對(duì)輸入IP驗(yàn)證不當(dāng),導(dǎo)致黑客可構(gòu)造類似于012.10.10.10這樣的畸形IP繞過(guò)驗(yàn)證,進(jìn)行SSRF。

解決方案:

方案一:使用云盾自研補(bǔ)丁進(jìn)行一鍵修復(fù);

方案二:更新該軟件到官方最新版本或?qū)で笤撥浖峁┥痰膸椭?/p>

注意:該補(bǔ)丁為云盾自研代碼修復(fù)方案,云盾會(huì)根據(jù)您當(dāng)前代碼是否符合云盾自研的修復(fù)模式進(jìn)行檢測(cè),如果您自行采取了底層/框架統(tǒng)一修復(fù)、或者使用了其他的修復(fù)方案,可能會(huì)導(dǎo)致您雖然已經(jīng)修復(fù)了該漏洞,云盾依然報(bào)告存在漏洞,遇到該情況可選擇忽略該漏洞提示】

如何修復(fù)

1、在路徑:/data/wwwroot/www.liwei8090.com/wp-includes/http.php找到http.php文件,用Notepad++打開(kāi)(修改之前記得先備份http.php原文件),大概在533行(不同的WordPress版本可能行數(shù)不同,你可以查找關(guān)鍵詞進(jìn)行查找):

  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]
    
漏洞修復(fù)完成

修改完以上內(nèi)容,然后再到阿里云盾控制臺(tái)重新驗(yàn)證一下漏洞,就會(huì)發(fā)現(xiàn)漏洞已經(jīng)不存在了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容