Cum pot să știu dacă site-ul meu folosește fișierul xmlrpc.php?

25 mai 2016, 12:08:32
Vizualizări: 25.6K
Voturi: 5

Am preluat un site web la locul meu de muncă care a fost dezvoltat de un angajat anterior, și se pare că recent acest site a fost victima unei serii de atacuri DDoS prin utilizarea pingback-ului xmlrpc, dovedit de înregistrări în log precum:

154.16.63.40 - - [22/May/2016:06:52:49 +0100] "POST /xmlrpc.php HTTP/1.1" 200 596 "-" "Googlebot/2.1 (+http://www.google.com/bot.html)" (Evident, acesta nu este un robot Google deoarece nu există niciun motiv pentru ca Google să facă POST către acest fișier.)

Cred că există multe soluții pentru aceasta (Acest tutorial) dar eu tind să mă orientez spre blocarea completă a accesului la fișier. Cu toate acestea, nu sunt sigur dacă acest site folosește efectiv serviciile pe care xmlrpc le permite. Există vreo modalitate specifică prin care pot verifica dacă dezvoltatorul anterior a implementat ceva care folosește funcționalitatea xmlrpc din WordPress? Aș putea verifica funcții în anumite fișiere/există ceva care să indice clar utilizarea acestuia?

orice ajutor ar fi binevenit!

EDITARE: Ar fi util ceva de genul acesta?

<FilesMatch "^(xmlrpc\.php)">
    Order Deny,Allow
    # Lista albă de adrese IP
    Allow from xxx.xxx.xxx.xxx
    Deny from all
</FilesMatch>

Dacă permit accesul de la adresa IP a serverului, ar funcționa acest lucru pentru plugin-uri etc. sau acestea au propriile adrese IP care ar trebui adăugate?

1
Comentarii

API-ul XML-RPC poate fi utilizat de clienți, de exemplu aplicațiile mobile WordPress. Cum știi toate IP-urile care trebuie adăugate în lista albă?

cybmeta cybmeta
25 mai 2016 13:14:20
Toate răspunsurile la întrebare 2
2

După cum ai descris, ai fost victima unui atac DDoS (sau poate nu, doar presupun că știi despre asta). Aceste tipuri de atacuri pot fi direcționate împotriva oricărei părți a unui site web dinamic, de exemplu fișierele index.php sau xml-rpc.php.

Din punctul meu de vedere, soluția corectă nu este blocarea părții atacate, ci blocarea atacatorului.

Deci, nu bloca API-ul XML-RPC în WordPress, acesta este folosit de un număr mare de plugin-uri și clienți externi; blochează-l doar dacă știi cu adevărat ce faci și consecințele acestui lucru. În schimb, blochează atacatorul la nivel de server, de exemplu poți adăuga IP-ul atacatorului într-o listă neagră în firewall-ul serverului sau în fișierul .htaccess.

25 mai 2016 12:29:56
Comentarii

Acesta este ceva ce fac deja, însă dacă atacatorul este persistent, va schimba pur și simplu adresa IP pe care o folosește cu una pe care încă nu am avut ocazia să o blochez, iar lista va continua să crească fără a rezolva cu adevărat problema la nivel fundamental.

LewisJWright LewisJWright
25 mai 2016 12:34:20

Și dacă atacatorul lovește index.php, ce ai face? Soluția este un firewall, nu blocarea scripturilor folosite de site-ul tău. Oricum, blochează XML-RPC API dacă știi ce faci și nu ai nevoie de el. Din păcate, nu pot răspunde la întrebarea ta despre "Cum să știu dacă am nevoie de XML-RPC".

cybmeta cybmeta
25 mai 2016 13:07:24
0

Aceasta arată mai degrabă ca un bot de spam sau o enumerare decât un atac DDoS. Pentru a fi sigur, ar trebui să analizezi consumul de resurse, dinamica adreselor IP și poate chiar conținutul cererilor.

1. Blocarea accesului la fișierul xmlrpc.php:

Cred că nu ar trebui să faci asta:

  1. Nu te va ajuta să supraviețuiești unui adevărat atac DDoS.
  2. După cum a menționat @cybmeta, ar putea afecta multe servicii terțe.
  3. Permiterea accesului doar de la anumite IP-uri nu ajută, deoarece IP-urile pot fi falsificate și nu poți enumera toate IP-urile care folosesc serviciul XML-RPC.

Eu înregistrez de obicei toate IP-urile care fac cereri către xmlrpc.php, folosesc iptables pentru a seta o limită de rată. Apoi, blochez IP-urile care sunt clar malitioase.

2. Cum să afli dacă site-ul tău folosește xmlrpc.php

  1. Funcțiile și resursele din WordPress care folosesc serviciul XML-RPC au șirul xmlrpc în numele funcțiilor sau fișierelor, așa că poți parcurge tema și pluginurile pentru a verifica dacă există astfel de potriviri.
  2. Toate cererile XML-RPC în WordPress trec prin xmlrpc.php, care definește define('XMLRPC_REQUEST', true), deci poți folosi:
if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) {
    // Loghează ceva.
    // Sau întrerupe imediat dacă cererea conține ceva rău intenționat.
}

Reține că nu poți folosi acest cod în fișierele temei sau ale pluginurilor. xmlrpc.php este independent de teme și pluginuri, așa că trebuie să-l plasezi în fișierul wp-config.php.

25 mai 2016 17:17:20