Wat is wp-json en (waarom) loop ik risico?

De risico's van wp-json in WordPress: Hoe je bestanden en plugins blootlegt
WordPress is een krachtig en veelzijdig platform, maar standaardinstellingen kunnen soms onbedoelde
beveiligingsrisico’s introduceren. Een van deze risico’s komt voort uit de REST API-endpoint
wp-json
, dat standaard toegankelijk is op elke WordPress-installatie. Dit endpoint kan meer
prijsgeven over je website dan je misschien denkt. In dit artikel bespreken we de beveiligingsrisico’s van
wp-json
, hoe het bestanden die je uploadt vindbaar maakt voor iedereen, en hoe kwaadwillenden
erachter kunnen komen welke plugins je gebruikt.
Wat is wp-json en waarom is het een risico?
De wp-json
endpoint, oftewel de WordPress REST API, biedt ontwikkelaars de mogelijkheid om met
je site te communiceren zonder dat ze direct toegang nodig hebben tot het dashboard. Dit is handig voor
integraties met mobiele apps of andere webservices, maar het brengt ook gevaren met zich mee.
Zonder extra beveiligingsmaatregelen kan de REST API informatie blootleggen, zoals:
- De gebruikersnamen van auteurs en beheerders
- Een (niet volledige gelukkig) lijst van geïnstalleerde en actieve plugins
- Bestanden die via de WordPress uploader zijn geüpload, inclusief hun exacte paden
Dit betekent dat kwaadwillenden eenvoudig kunnen achterhalen welke kwetsbare plugins je gebruikt of zelfs gevoelige bestanden kunnen ontdekken die per ongeluk toegankelijk zijn gebleven.
Hoe maakt wp-json geüploade bestanden openbaar?
Wanneer je een bestand uploadt naar de WordPress-mediabibliotheek, wordt het opgeslagen in de
wp-content/uploads/
directory. Deze bestanden zijn meestal publiek toegankelijk, tenzij er
specifieke serverinstellingen zijn die dit blokkeren.
Wat veel mensen echter niet weten, is dat de WordPress REST API (via wp-json/wp/v2/media
)
metadata over deze bestanden kan blootgeven. Dit omvat onder andere:
- De bestandsnaam en de exacte URL van het geüploade bestand
- De auteur van het bestand (als diegene een WordPress-gebruiker is)
- De datum waarop het bestand is geüpload
Met deze informatie kunnen kwaadwillenden bijvoorbeeld gevoelige documenten vinden die per ongeluk zijn geüpload en niet goed beveiligd zijn.
Voorbeeld: Een bestsellerauteur met een lek
Ik heb ooit een auteur met meer dan 20 bestsellers op zijn naam gewezen op een ernstig lek op zijn website.
Door de wp-json
API te gebruiken, kon ik achterhalen welke bestanden hij had geüpload,
inclusief bestanden die niet openbaar hadden mogen zijn. Dit betekende dat onbevoegden toegang hadden tot
vertrouwelijke bestanden, puur doordat de REST API deze informatie vrijgaf. De melding die ik bij 'm deed,
werd gelukkig gewaardeerd.
Hoe kan wp-json worden misbruikt om plugins te identificeren?
Een andere veelvoorkomende aanvalsmethode is het gebruik van de REST API om te achterhalen welke plugins een
site gebruikt. Dit kan eenvoudig worden gedaan via wp-json/
, veel plugins voegen eigen 'routes'
toe aan de api en zo kun je ze achterhalen.
- Als een plugin kwetsbaarheden bevat en niet is bijgewerkt, kan een aanvaller dit uitbuiten.
- Kwaadwillenden kunnen gerichte aanvallen uitvoeren op specifieke plugins die veelvoorkomende exploits hebben.
Hoe kun je je website beveiligen?
Gelukkig zijn er manieren om jezelf te beschermen tegen deze risico’s:
- Beperk toegang tot de REST API – Gebruik een beveiligingsplugin zoals Wordfence of Disable WP REST API om te beperken wie de API kan gebruiken.
- Blokkeer ongewenste verzoeken met .htaccess of Nginx-regels – Je kunt de toegang tot bepaalde REST API endpoints blokkeren.
Zijn er ook nadelen aan het uitschakelen van wp-json?
Helaas wel. Sommige functies van de api kunnen door de site gebruikt worden. Zo hebben wij een klant waar het zoekfilter van het blog afhankelijk is van de api. Dan is het belangrijk om geselecteerd toegang te verschaffen tot de benodigde 'end poinsts'.
Conclusie
Hoewel de WordPress REST API veel voordelen biedt, kan deze ook gevoelige informatie blootleggen. Zonder extra beveiligingsmaatregelen kunnen kwaadwillenden eenvoudig ontdekken welke bestanden op je website staan en welke plugins je gebruikt. Dit maakt je site kwetsbaar voor gerichte aanvallen en datalekken.
Door preventieve stappen te nemen, zoals het beperken van API-toegang en het up-to-date houden van je plugins, kun je de beveiliging van je WordPress-site aanzienlijk verbeteren. Heb je zelf al eens gecontroleerd wat jouw wp-json endpoint openbaar maakt?