XML-RPC Wordpress svetainėse
Turinys
Kas yra XML-RPC
"WordPress" XML-RPC specifikacija buvo sukurta siekiant standartizuoti skirtingų sistemų bendravimą tarpusavyje internetu, t. y. kad su "WordPress" galėtų sąveikauti ne "WordPress" programos (pvz., kitos tinklaraščių rašymo platformos ir darbalaukio klientai). Turinio valdymo sistemoje “Wordpress” esantis xmlrpc.php failas leidžia išorinėms programoms prisijungti, perkelti ir apdoroti duomenis. Tai atlikta standartizuojant ryšį, naudojant HTTP kaip perdavimo mechanizmą ir XML kaip kodavimo mechanizmą.
XML-RPC atsirado anksčiau nei “WordPress”: ji buvo naudojama “b2” tinklaraščių kūrimo programoje, iš kurios 2003 m. buvo sukurta “WordPress”. Sistemos kodas saugomas xmlrpc.php faile, esančiame svetainės šakniniame kataloge. Jis ten tebėra, nors XML-RPC jau gerokai paseno.
Ankstyvosiose "WordPress" versijose XML-RPC buvo išjungtas pagal numatytuosius nustatymus. Tačiau nuo 3.5 versijos jis kaip tik pagal numatytuosius nustatymus gali būti įjungtas. Pagrindinė to priežastis buvo ta, kad "WordPress" mobilioji programėlė galėtų bendrauti su jūsų "WordPress" svetaine.
Tačiau XML-RPC buvo naudojamas ne tik mobiliojoje programėlėje: jis taip pat buvo naudojamas ryšiui tarp "WordPress" ir kitų tinklaraščių rašymo platformų palaikyti, juo buvo įjungtos "Trackbacks" ir "Pingbacks" grįžtamosios nuorodos, jis taip pat buvo naudojamas "Jetpack" įskiepiui, kuris susieja savarankiškai talpinamą "WordPress" svetainę su "WordPress.com".
Tačiau xmlrpc.php turi ir trūkumų, kadangi dėl jo kyla su saugumu susijusių rizikų "WordPress" svetainui. Todėl dabar jį pakeitė "WordPress REST API", kuri daug geriau atveria "WordPress" kitoms programoms. Todėl xmlrpc.php failas šiam ryšiui nebenaudojamas. Vietoj to REST API naudojama ryšiui su "WordPress" mobiliąja programėle, kompiuterių klientais, kitomis tinklaraščių rašymo platformomis, WordPress.com (įskiepiui "Jetpack") ir kitomis sistemomis bei paslaugomis palaikyti. Sistemų, su kuriomis gali bendrauti REST API, spektras yra daug didesnis nei tas, kurį leidžia xmlrpc.php.
Kadangi REST API atlieka šiuos visus funkcionalumus, svetainėje turėtumėte išjungti xmlrpc.php - dėl jo atsiranda saugumo spragų ir jis gali tapti atakų taikiniu.
DDoS atakos vykdomos per XML-RPC "Pingbacks"
Failas gali būti panaudotas DDoS atakoms vykdomoms per XML-RPC "Pingbacks" grįžtamąsias nuorodas. Viena iš xmlrpc.php įjungtų funkcijų buvo “pingbacks” ir “trackbacks”. Tai pranešimai, kurie rodomi jūsų svetainės komentaruose, kai kitas tinklaraštis ar svetainė pateikia nuorodą į jūsų turinį, pavyzdžiui:
Pingbacks: * Kai svetainė A paskelbia naują įrašą ir naudoja pingback mechanizmą, tai reiškia, kad svetainė A siunčia pranešimą svetainei B per XML-RPC protokolą. Pranešimas apie naują įrašą yra siunčiamas automatiškai, be tiesioginio svetainės savininko įsikišimo. * Jei svetainė B priima pingback, tai jis gali automatiškai sukurti nuorodą į naują įrašą svetainėje A. Tai leidžia svetainėms automatizuoti informacijos dalinimąsi ir tarpusavio susiejimą.
Trackbacks: * Svetainėje A galima rankiniu būdu sukurti trackback nuorodą į svetainę B. Tokiu atveju svetainės administratorius pats įdeda specialią nuorodą į kitą svetainę, informuodamas, kad yra sukurtas susijęs įrašas. * Kai svetainė B gauna trackback pranešimą, ji gali jį patvirtinti arba atmesti. Patvirtinus trackback, svetainė B gali atvaizduoti nuorodą į svetainę A kaip atsaką į savo įrašą.
Šį bendravimą įgalino XML-RPC specifikacija, tačiau dabar ją jau pakeitė REST API.
Jei jūsų svetainėje įjungtas XML-RPC, programišius, pasinaudodamas xmlrpc.php, gali surengti DDoS ataką prieš svetainę ir per trumpą laiką į ją išsiųsti daugybę "pingbacks" užklausų. Tai gali sutrikdyti tiek svetainės, tiek serverio darbą.
Brute - force atakos per XML-RPC
Kiekvieną kartą, kai xmlrpc.php pateikia užklausą, jis siunčia vartotojo vardą ir slaptažodį autentiškumui patvirtinti. Dėl šios priežasties kyla rizika svetainės saugumui. Kadangi xmlrpc.php su kiekviena užklausa siunčia autentifikavimo informaciją, įsilaužėliai gali ja pasinaudoti bandydami patekti į jūsų svetainę. Tokia grubios jėgos (brute – force) ataka gali leisti jiems įterpti turinį, ištrinti kodą arba sugadinti svetainės duomenų bazę. Kadangi jei programišius į jūsų svetainę išsiųs pakankamai užklausų, kurių kiekvienoje bus nurodyta skirtinga vartotojo vardo ir slaptažodžio pora, yra tikimybė, kad galiausiai jis pataikys į teisingą užklausą ir gaus prieigą prie svetainės. Todėl, jei naudojate atnaujintą "WordPress" versiją, kuri bendravimui su išorinėmis sistemomis naudoja REST API, reikėtų išjungti xmlrpc.php dėl keliamo svetainės pažeidžiamumo. REST API naudoja OAuth, kuri autentifikavimui siunčia ne vartotojo vardus ar slaptažodžius, o tokens.
Patikrinimas, ar xmlrpc.php veikia svetainėje
Patikrinimui yra sukurtų trečiųjų šalių įrankių, vienas tokių XML-RPC Validator Web App.
xmlrpc.php išjungimas
Įskiepiai
Lengviausias būdas išjungti xmlrpc.php – įskiepio pagalba. Įskiepis “Disable XML-RPC” pilnai išjungs šį funkcionalumą, užteks įskiepį įdiegti ir aktyvuoti:
Jeigu norima išjungti tik kai kuriuos xmlrpc.php funkcionalumus, galima naudoti kitą įskiepį - “Disable XML-RPC pingback”. Šis įskiepis leis išjungti tik “pingback” funkciją, o kitos XML-RPC funkcijos, jei jos yra reikalingos, liks veikiančios.
Įskiepis “REST XML-RPC data checker” tinkamas, jei norite tiksliau kontroliuoti, kaip svetainėje konfigūruojamas tiek xmlrpc.php, tiek REST API.
Prieigos ribojimas .htaccess failo pagalba
Galima xmlrpc.php išjungti nenaudojant įskiepių. Prieigą galima apriboti .htaccess failo pagalba svetainės public_html kataloge jame įrašant kodą:
<Files "xmlrpc.php"> Require all denied </Files>
Situacijos, kada xmlrpc.php gali būti reikalingas
- Nėra naudojamas REST API, tačiau reikalinga svetainės komunikacija su kitomis sistemomis;
- Nėra galimybės atnaujinti “Wordpress” versijos į 4.4 ar aukštesnę ir dėl to REST API nėra prieinamas;
- Dirbama su išorine programa, kuri nėra suderinama veikti naudojant WP REST API, tačiau gali naudoti būtent XML-RPC. Šiuo atveju laikui bėgant reikėtų pagalvoti apie programos atnaujinimą arba pasirinkimą tokios programos, kuri suderinama su REST API naudojimu.
Iš esmės vienintelė priežastis, kodėl XML-RPC vis dar pasiekiamas “Wordpress” svetainėse yra dėl grįžtamojo suderinamumo - kad veiktų tos versijos, kurios naudojamos prieš atsirandant REST API. Tad XML-RPC naudojimas šiuo metu visgi indikuoja, kad yra dirbama su pasenusiomis sistemomis.