一、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é)果:

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

這個(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)行查找):
$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']));
2、在http.php文件的549行:
if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]/*修改為:*/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)不存在了。


