Actuele situatie: PHP2Shell. Twee kritieke PHP-kwetsbaarheden (CVSS 9.2) maken schadelijke code zonder inloggen mogelijk. Patches sinds 21-10-2026.Wat u nu moet doen →

Vreemde beheerdersaccounts in CMS en server vinden

Een onbekende beheerder is vaak de eenvoudigste achterdeur. Zo zoekt u laag voor laag naar vreemde accounts, ook naar accounts die de interface verbergt.

Stand 5 min. leestijdDetectie en forensisch onderzoek

Kort gezegd: Vreemde beheerdersaccounts vindt u alleen als u alle lagen controleert: het CMS of de webshop, het hostingpaneel, de systeemgebruikers van de server, de SSH-toegangen en de databasegebruikers. Vertrouw niet op de gebruikerslijst in de backend, want ingebrachte code kan accounts daar verbergen. Vondsten eerst documenteren en blokkeren, dan de oorzaak vaststellen, pas daarna verwijderen.

Waarom een onbekende beheerder zo gevaarlijk is

Een extra beheerdersaccount is voor aanvallers de gemakkelijkste achterdeur. Het heeft geen schadelijke code nodig, valt bij bestandsscans niet op en overleeft elke update. Wie zich later met dit account aanmeldt, ziet er in het logboek uit als een gewone redacteur.

Na PHP2Shell wint deze controle aan gewicht. De lekken CVE-2026-109618 en CVE-2026-109619 maken de uitvoering van schadelijke code zonder aanmelding mogelijk. Wie code op de server kan uitvoeren, kan ook in de database schrijven en daarmee accounts aanmaken. Een PHP-update dicht het lek, maar verwijdert geen account dat eerder is ontstaan.

Voor PHP2Shell bestaan geen gepubliceerde, bevestigde Indicators of Compromise, dus geen lijst met typische sporen. Een onbekend account is daarom geen PHP2Shell-bewijs, maar wel een duidelijke aanwijzing voor onbevoegde toegang, ongeacht langs welke weg. Een overzicht van verdere tekenen staat onder Ben ik al gecompromitteerd?.

Waar vreemde beheerdersaccounts kunnen zitten

Veel exploitanten kijken alleen in het CMS. Aanvallers denken in lagen, en elke laag heeft eigen accounts:

Laag Waar kijken Waarop letten
CMS of webshop Gebruikersbeheer en databasetabel van de gebruikers Rol beheerder, aanmaakdatum, vreemd mailadres
Hostingpaneel Gebruikers, extra accounts, FTP-accounts Accounts die niemand in het team heeft aangemaakt
Linux-server /etc/passwd, groepen sudo of wheel, sudoers verdere accounts met UID 0, nieuwe login-shells
SSH authorized_keys van alle gebruikers Sleutels zonder bekende eigenaar
Database Gebruikerstabel van de databaseserver Gebruikers met globale rechten of host %
Externe diensten Domein, DNS, Search Console, CDN extra eigenaren of gemachtigden

De SSH-laag is zelfstandig genoeg voor een eigen artikel: Onbekende SSH-sleutels vinden en verwijderen.

Vreemde beheerdersaccounts in het CMS vinden, ook verborgen

De gebruikerslijst in de backend wordt door de toepassing zelf gegenereerd. Draait ingebrachte code mee, dan kan die afzonderlijke vermeldingen eruit filteren. Betrouwbaarder zijn daarom hulpmiddelen die rechtstreeks naar de opgeslagen gegevens kijken. Voor WordPress somt WP-CLI alle beheerders met aanmaakdatum op:

wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

Nog een laag dieper gaat een lezende query in de database. Ze toont elk account waaraan de beheerdersrol is toegewezen, ongeacht wat de interface weergeeft. Het tabelvoorvoegsel wp_ past u aan uw installatie aan:

SELECT u.ID, u.user_login, u.user_email, u.user_registered
FROM wp_users u
JOIN wp_usermeta m ON m.user_id = u.ID
WHERE m.meta_key = 'wp_capabilities'
  AND m.meta_value LIKE '%administrator%'
ORDER BY u.user_registered DESC;

Vergelijk de resultaten van backend, WP-CLI en database. Duikt een account alleen in de database op, dan is dat een sterk waarschuwingssignaal, omdat er dan bovendien code in het spel is die het verbergt. Voor andere systemen zoals Shopware, TYPO3 of Joomla geldt hetzelfde principe: de gebruikerstabel rechtstreeks bevragen en vergelijken met de weergave in de backend. Welke tabellen dat zijn, staat in de documentatie van de fabrikant.

Systeemgebruikers en databasegebruikers controleren

Op de server zelf zijn vooral accounts met rootrechten en accounts die zich kunnen aanmelden interessant. De volgende opdrachten lezen alleen:

# Accounts met UID 0 (normaal alleen root)
awk -F: '$3 == 0 {print $1}' /etc/passwd

# Accounts met een echte login-shell
grep -vE '(nologin|false)$' /etc/passwd

# Leden van de beheerdersgroepen
getent group sudo wheel

# Extra sudo-regels
sudo ls -la /etc/sudoers.d/
sudo grep -rvE '^\s*(#|$)' /etc/sudoers /etc/sudoers.d/

# Laatste aanmeldingen met volledige datum
last -F | head -30

Op de databaseserver controleert u welke gebruikers bestaan en welke rechten ze hebben:

SELECT user, host FROM mysql.user ORDER BY user;
SHOW GRANTS FOR 'anwendung'@'localhost';

Een toepassing heeft in de regel één gebruiker nodig met rechten op precies één database. Een extra gebruiker met globale rechten die vanaf willekeurige hosts (%) mag toegang krijgen, moet worden opgehelderd.

Vergeet de accounts buiten de server niet. Wie toegang heeft tot het domeincontract of het DNS-beheer, kan bezoekers omleiden of certificaten voor vreemde servers laten uitgeven. Een extra eigenaar in de Google Search Console kan sitemaps indienen en instellingen wijzigen. Loop daarom bij registrar, DNS-aanbieder, CDN en Search Console de lijst van gemachtigden na en vergelijk die met wat uw team kent.

Zo gaat u juist met een vondst om

De eerste impuls is het vreemde account meteen te verwijderen. Daarmee verdwijnt echter ook een belangrijk spoor: de aanmaakdatum beperkt vaak wanneer de aanvaller in het systeem was. Beter is deze volgorde:

  1. Documenteren: Gebruikersnaam, ID, e-mail, aanmaakdatum, rol en laatste activiteit met tijdstip vastleggen, bij voorkeur als schermafbeelding en export.
  2. Blokkeren in plaats van verwijderen: Rol intrekken, wachtwoord door een willekeurige waarde vervangen of het account deactiveren.
  3. Periode afbakenen: Logs rond de aanmaakdatum controleren. Welke verzoeken waren er kort ervoor, welke bestanden veranderden?
  4. Verdere lagen controleren: Wie een account aanmaakt, laat zelden slechts één ding achter. Bestanden, cronjobs, SSH-sleutels en database eveneens doorzoeken.
  5. Opschonen en toegangen vernieuwen: Pas na opschoning en PHP-update alle wachtwoorden, sleutels en sessies vernieuwen.

Een opmerking ter voorzichtigheid: niet elk onbekend account is kwaadaardig. Bureaus, eerdere dienstverleners of onderhoudsplug-ins maken soms eigen accounts aan. Stel dat vast voordat u alarm slaat, maar doe het tijdig.

Terugkeer voorkomen

Na de opschoning moeten beheerdersaccounts de uitzondering zijn, niet de regel. Bewezen zijn persoonlijke accounts in plaats van gedeelde toegangen, zo weinig mogelijk beheerders en een tweestapsverificatie voor beheerderstoegangen. Leg bovendien vast wie nieuwe beheerdersaccounts mag aanmaken en waar dat wordt gedocumenteerd.

Een regelmatige query zoals de bovenstaande, bijvoorbeeld wekelijks en met vergelijking met de week ervoor, maakt nieuwe accounts snel zichtbaar. Bij WordPress helpt bovendien de gids Achterdeuren in WordPress vinden.

Hoe helpt PHP SOS concreet?

  • Wij controleren alle accountlagen van CMS via server tot database en vergelijken de weergave in de backend met de opgeslagen gegevens.
  • Wij stellen vondsten met tijdstempels veilig voordat accounts worden geblokkeerd of verwijderd.
  • Wij stellen in het kader van de incident response vast hoe het account is ontstaan en of er verdere achterdeuren bestaan.
  • Wij vernieuwen toegangen in de juiste volgorde en richten een doorlopende controle van nieuwe beheerdersaccounts in.

Veelgestelde vragen

Moet ik een onbekend beheerdersaccount meteen verwijderen?

Liever niet meteen. Documenteer eerst gebruikersnaam, aanmaakdatum, e-mailadres en laatste activiteit en blokkeer het account. Verwijderd wordt pas als de sporen zijn veiliggesteld, want de aanmaakdatum is vaak een belangrijke aanwijzing voor het tijdstip van de inbraak.

Kan een beheerdersaccount in de backend onzichtbaar zijn?

Ja. Ingebrachte code kan afzonderlijke accounts uit de gebruikerslijst van de interface verbergen. Een directe bevraging van de database of een opdrachtregelhulpmiddel toont daarentegen alle opgeslagen accounts. Kijk daarom niet alleen in de backend.

Welke lagen moet ik naast het CMS controleren?

Hostingpaneel, FTP- en SFTP-toegangen, systeemgebruikers van de server inclusief sudo-rechten, SSH-sleutels, databasegebruikers en accounts bij domein, DNS en Search Console. Een aanvaller heeft maar één van deze deuren nodig om terug te komen.

Volstaat het na de vondst alle wachtwoorden te wijzigen?

Nee. Een vreemd account toont dat iemand toegang had. Dan moeten ook de toegangspoort, verdere achterdeuren en mogelijke gegevensuitstroom worden opgehelderd. Wachtwoorden wijzigt u pas na de opschoning en vanaf een schoon apparaat.

Bronnen

Direct contact

Elk uur telt. Schrijf ons nu.

Beschrijf kort het systeem, de PHP-versie en wat u opmerkt. Wij nemen contact op, brengen de situatie in kaart en werken op afstand tot het incident is afgerond en gedocumenteerd.

Directe hulp