xmlrpc.php?存在于 WordPress 網(wǎng)站程序中,通過(guò)使用 HTTP 作為傳輸機(jī)制和 XML 作為編碼機(jī)制來(lái)標(biāo)準(zhǔn)化這些通信來(lái)實(shí)現(xiàn)此目的。然而,xmlrpc.php 文件引入了安全漏洞,并且可能成為被攻擊的目標(biāo)。
最近網(wǎng)站大量 POST 請(qǐng)求 xmlrpc.php,導(dǎo)致 CPU 負(fù)載爆滿,內(nèi)存也比平時(shí)占用更多,感覺是被人掃描攻擊了。所以這個(gè)涉及到了?WordPress 安全,必須重視起來(lái)。
XML-RPC?是支持 WordPress 與其他系統(tǒng)之間通信的規(guī)范。XML-RPC 不僅用于移動(dòng)應(yīng)用程序:它還用于允許 WordPress 和其他博客平臺(tái)之間進(jìn)行通信,還支持引用和?pingback。但是由于?REST API?已集成到 WordPress 核心中,因此 xmlrpc.php 文件不再用于此通信。
如果您的站點(diǎn)上啟用了 XML-RPC,則黑客可能會(huì)利用 xmlrpc.php 在短時(shí)間內(nèi)向您的站點(diǎn)發(fā)送大量 pingback,從而在您的站點(diǎn)上發(fā)起 DDoS 攻擊。這可能會(huì)使服務(wù)器超載,并使站點(diǎn)無(wú)法正常運(yùn)行。而每次 xmlrpc.php 發(fā)出請(qǐng)求時(shí),它都會(huì)發(fā)送用戶名和密碼進(jìn)行身份驗(yàn)證,所以,黑客可以使用它來(lái)嘗試爆破您的站點(diǎn)。
在此基礎(chǔ)上,我們 還發(fā)現(xiàn)了攻擊//xmlrpc.php
地址,來(lái)耗盡 WordPress 站點(diǎn)的服務(wù)器資源,所以更加推薦最后一種方法。
因此,您現(xiàn)在應(yīng)該在站點(diǎn)上禁用 xmlrpc.php,但是很多人不知道該如何停用 xmlrpc.php 文件,雖然將其刪除是最簡(jiǎn)單的方法,但是由于 WordPress 經(jīng)常升級(jí),又會(huì)重新生成該文件,所以在此基礎(chǔ)上,WPEXP 跟大家分享五個(gè)禁用 xmlrpc.php 的方法,供大家選擇使用。
在當(dāng)前主題的?functions.php?文件添加下面這行代碼就能關(guān)閉 xmlrpc.php
復(fù)制
//通過(guò) functions.php 函數(shù)文件禁用 xmlrpc.php
add_filter('xmlrpc_enabled', '__return_false');
在 WordPress 根目錄編輯?wp-config.php?文件,最開始的地方添加:
復(fù)制
if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){
$protocol = $_SERVER['SERVER_PROTOCOL'] ?? '';
if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){
$protocol = 'HTTP/1.0';
}
header("$protocol 403 Forbidden", true, 403);
die;
}
Nginx 規(guī)則
復(fù)制
location ~* ^/xmlrpc.php$ {
return 403;
}
Apache 規(guī)則
在 .htaccess 文件前面添加以下代碼。
復(fù)制
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
這個(gè)的前提要求需要保護(hù)好自己的服務(wù)器 IP 不被發(fā)現(xiàn),在此基礎(chǔ)上可以在云防火墻或者 CDN 中寫好阻止 xmlrpc.php 訪問,比上述所有配置都要進(jìn)一步降低服務(wù)器性能的消耗,因?yàn)樗€沒有請(qǐng)求你服務(wù)器就被攔截了。
這里以 CloudFlare WAF 防火墻為例,在添加/xmlrpc.php
基礎(chǔ)上,再添加一個(gè)//xmlrpc.php
以防萬(wàn)一。怕大家看不懂,這里使用 URI 完整,小伙伴們可以考慮使用 URI 包含規(guī)則,填寫一個(gè)/xmlrpc.php
?即可。
退而求其次,如果你有使用寶塔的 Nginx 防火墻,那么也可以使用防火墻來(lái)阻止 xmlrpc.php 訪問。但是這個(gè)畢竟還是會(huì)涉及服務(wù)器資源的占用,在能夠做好 IP 不泄露的情況下,使用云端防火墻或 CDN 去阻止是最好的!