Incident HXL-2026-001 Resolved, monitoring until 4 December

What happened to labs.hackxpert.com

On 29 October 2026 the server that hosted HackXpert Labs was deleted by mistake. Our DNS record for labs.hackxpert.com kept pointing at its old IP address, which our hosting provider handed to someone else, so until 4 November visitors saw a third-party spam site instead of the labs. No personal data was involved, the labs are back on a new server, and this page sets out what happened.

Six days from deletion to fix

Crimson: the labs down, from the deletion to the fix. Gold: our response. Dark: normal activity.
124Oct
25
26
27
228
329
30
31
41Nov
2
3
54Nov
  1. 1: the labs homepage is last seen working.
  2. 2: a contractor, whose hosting account has full administrator rights, creates an API token for a billing review done with an AI assistant.
  3. 3: CAPIEExamServer, which hosts the labs, is shut down and deleted a minute later through that account, unintentionally. Its IP address goes back to the provider, but labs.hackxpert.com still points at it.
  4. 4: the contractor creates a second token for the same review; one of the two is read-only.
  5. 5: we notice the spam site at 20:54, rebuild the labs on another server and point labs.hackxpert.com at it by 21:13, and revoke all non-owner access.

Full event log

All times are Europe/Brussels (CET, UTC+1).

WhenEventSource
13 OctLast confirmed normal operation of a lab endpoint, /RXSS/POST/10.phpWork records
24 OctLabs homepage last seen workingOwner
24 Oct, 13:02Contractor logs in to the hosting console, verified with a code sent to their emailLinode login history and notification
28 OctContractor creates an API token named "test" for a billing review done with an AI assistantLinode event log, contractor
29 Oct, 10:39CAPIEExamServer, which hosted the labs, shut down and deleted about a minute later through the contractor account, with no new login that day; its hosting backups are deleted with itLinode event log
29 Oct – 4 NovThe deleted server's IP address is reassigned by the provider. labs.hackxpert.com still points at it, so visitors reach a third-party spam siteDNS record, observation
1 NovContractor creates a second "test" token for the same review; one of the two is read-onlyLinode event log, contractor
4 Nov, 20:02Owner logs in to the hosting consoleLinode login history
4 Nov, 20:54Owner notices labs.hackxpert.com serving a spam blogTeam chat
4 Nov, 21:03Owner finds the server deletedTeam chat
4 Nov, 21:13Labs being rebuilt on another server; labs.hackxpert.com already pointed at its address (172.104.232.237)Team chat, Linode event log
4 Nov, 21:20Contractor's hosting access disabled as a precautionTeam chat
4 Nov, 21:25Kubernetes credentials reset on both clustersLinode console
4 Nov, 21:32Labs confirmed back onlineTeam chat
4 Nov, 21:34All hosting users other than the owner's deleted, which revokes their API tokens; this report startedLinode event log
4 Nov, 21:35External check: one resolver still returns the spam site from its cached copy of the old record (30-minute TTL)Investigation
4 Nov, 21:35–21:39Every direct request reaches the new server and genuine lab content; the spam site's pages return 404 thereInvestigation
4 Nov, eveningCertificate server (RatCerts) reviewed as a precaution: no sign of unauthorised access; its application secrets rotated; GitHub tokens, keys, collaborators and apps auditedOwner
4 Nov, eveningLinode's login-verification email confirms the 24 Oct login was the contractor's ownLinode notification
4 Nov, eveningDeletion confirmed accidental. Cloudflare's audit log shows no change to the labs record between the deletion and the 21:13 fixOwner, Cloudflare audit log

The deletion was confirmed accidental on 4 November. We handled it as a security incident until then.

Summary

On 29 October CAPIEExamServer was deleted by mistake through a contractor's hosting account with full administrator rights. The server hosted HackXpert Labs and, from time to time, exam code; no personal data was stored on it. The account's last login was verifiably the contractor's own, and the deletion has been confirmed as accidental.

Our DNS record for labs.hackxpert.com still pointed at the deleted server's IP address. The provider reassigned that address, and whoever received it runs a site that answers any hostname with a generated spam blog, so visitors to the labs saw "labs.hackxpert.com - PDF Documents" instead. The spam was never on our servers. On 4 November we rebuilt the labs on another server and pointed the record at it, nineteen minutes after noticing.

Until the cause was clear we handled this as a security incident. We removed every hosting user except the owner's, revoked their API tokens, reset the Kubernetes credentials on both clusters and hardened related systems. Those measures stay in place.

Incident record

Incident ID
HXL-2026-001
Status
Resolved: root cause confirmed and all corrective actions in place; monitoring until 4 December 2026
Category
Unintended deletion of a server through a privileged contractor account, followed by a dangling DNS record whose recycled IP address served third-party spam
Functional impact
Medium: labs unavailable on labs.hackxpert.com for six days and replaced by a third-party spam site; one server lost
Information impact
None: neither affected server stored personal data
Recoverability
Supplemented: the deleted server and its hosting backups are gone; labs rebuilt from source on another server; exam code redeployed from source when needed
Affected
CAPIEExamServer (deleted), which hosted HackXpert Labs; the labs.hackxpert.com DNS record; Kubernetes clusters ToolsAndInfra and Hackxpert-labs (credentials reset as a precaution)
Not affected
RatCerts exam bookings and certificates; RatCTF; the course platform
Organisation
The XSS Rat (Wesley Thijs), Maasmechelen, Belgium
Incident handler
Wesley Thijs
Report version
1, published 4 November 2026

Impact ratings use the functional, information and recoverability categories from NIST SP 800-61 Rev. 2, which Rev. 3 leaves to each organisation's own scheme.

What we found

The spam came from a server that is not ours. labs.hackxpert.com pointed at an IP address we no longer held, and that address now belongs to a site that serves templated spam for any hostname it receives.

DNS

  • hackxpert.com is hosted on Cloudflare DNS.
  • From the deletion on 29 October until 21:13 on 4 November, the labs record still pointed at the deleted server's address. Cloudflare's audit log shows no change in between.
  • At 21:35 the record pointed at the new server, 172.104.232.237, with a TTL of 1800 seconds. There is no CNAME, no AAAA record and no wildcard record.

HTTP behaviour, checked 4 Nov from 21:35

  • One request still returned the spam site: a fake "latest news" blog of scraped book and document titles with invented authors and backdated posts, set to be indexed by search engines. That resolver was serving its cached copy of the old record, which a 30-minute TTL allows.
  • Every direct request reached the new server and the genuine 17,482-byte labs index, across nine variants: desktop, mobile, Googlebot and Bingbot user agents, a Google referrer, Dutch and English language headers, and HTTP to HTTPS.
  • The spam site's own article links returned our server's 404 page, so none of its pages exist on our systems.

Assessment

This is a dangling DNS record: a hostname that outlived the server it pointed to. Operators who pick up recycled cloud IP addresses often run a catch-all site that turns any hostname still pointing at them into SEO spam. Nobody accessed our systems to put it there.

Indicators

Use these to check whether you saw the same page. The site belongs to whoever now holds our old IP address; its tracker IDs are the most useful pivots for linking it to other hijacked hostnames.

TypeIndicatorContext
Page titlelabs.hackxpert.com - PDF DocumentsSpam homepage; the hostname is templated into the title
TrackerHistats counter 5061625Footer image on the spam page
TrackerYandex Metrica counter 51689945Tracking pixel on the spam page
URL pattern/pdf/, /report/, /document/, /archive/, /paper/, /journal/, /file/, /ebook/, /digest/ + a 12-character ID starting with u + a slugSpam article links
URL pattern/dmca, /contact, /privacy, /category/<genre>Spam site navigation
ContentInvented authors (e.g. "Douglas Kemmer", "Clara Bosco") with posts dated Aug–Oct 2025Generated filler
Metarobots index, follow, canonical https://labs.hackxpert.com/Aimed at search ranking

Impact

For six days labs.hackxpert.com showed a third-party spam site instead of the labs, and one server was lost. No personal data was involved.

  • Visitors: anyone opening labs.hackxpert.com in that window saw a spam blog. It had no downloads, login forms or payment fields, but it did load third-party trackers (Histats, Yandex Metrica) that record a visitor's IP address and browser details.
  • Lab users: the labs were unavailable on their usual address for those six days. HackXpert Labs needs no account, so no lab credentials were at risk.
  • Search results: the spam page asked to be indexed under labs.hackxpert.com, so search results may show book or document titles until the site is recrawled.
  • Exams: CAPIEExamServer and its hosting backups were deleted on 29 October. Besides the labs it only hosted exam code, which is kept in source and redeployed when needed. Exam bookings and certificates on RatCerts were not affected: that server was not deleted, its root password was unchanged and it shows no sign of unauthorised access. We hardened it on 4 November as a precaution.
  • Other services: RatCTF, the course platform and thexssrat.com show no symptoms and are being checked as part of scoping.

What we've done, and what's next

Until the cause was known, the priority was to get the labs back on a server we control and remove all non-owner access.

DoneIn progress or planned

Containment

  • Delete every hosting user other than the owner's, which revokes the API tokens they created 4 Nov
  • Reset the Kubernetes credentials on both clusters 4 Nov
  • Audit GitHub access to the certificate platform's repository: tokens, SSH keys, deploy keys, collaborators and authorised apps 4 Nov
  • Rotate the certificate platform's application secrets and stop tracking secret files in its private repository 4 Nov
  • Check both clusters for service accounts, tokens or role bindings nobody can account for 4 Nov
  • Restrict network access to the Kubernetes control planes 4 Nov
  • Rotate root passwords, SSH keys and shared password-manager entries the contractor account could reach, as standard offboarding 4 Nov
  • Reset every other account the contractor holds for The XSS Rat and sign out all their sessions 4 Nov
  • Confirm with the contractor whether they created the two "test" tokens: they did, for a billing review 4 Nov
  • Report the deletion to Linode support and request API-level logs for both "test" tokens 4 Nov
  • Review Cloudflare's DNS audit log: no change to the labs record between the deletion and the fix 4 Nov

Eradication

  • Rebuild the labs from source on another server and point labs.hackxpert.com at it 4 Nov
  • Confirm none of the spam site's pages exist on our new server 4 Nov
  • Harden the certificate server's network exposure and run its application with least privilege 4 Nov

Recovery

  • Bring the labs back on the rebuilt host 4 Nov
  • Re-check the labs homepage from several networks and user agents, since the spam was cloaked 4 Nov
  • Ask Google and Bing to recrawl the site and drop the spam URLs from their indexes 4 Nov
  • Redeploy the exam code from source when the next exam needs it
  • Watch the homepage and the certificate server for 30 days for changes or logins by removed accounts running since 4 Nov

The labs were back on their usual address nineteen minutes after we noticed the spam site.

Root cause

Both parts are explained: an accidental deletion, and a DNS record that outlived the server.

The server deletion

The deletion was made through the contractor's account during the contractor's working hours, with no new login that day. The account's last login, on 24 October, was the contractor's own: it passed Linode's emailed verification code. The day before, the contractor had created an API token for a billing review carried out with an AI assistant, and the deletion most likely went through that token. It has been confirmed as accidental.

The spam on labs.hackxpert.com

When the server was deleted, its IP address went back to the provider's pool, but labs.hackxpert.com kept pointing at it. The address was reassigned to a third party whose server answers any hostname with a generated spam blog, so our hostname showed their content.

We also considered whether a visitor had escaped one of the deliberately vulnerable labs and replaced the homepage. That is ruled out: the record pointed away from our servers for the whole window, and the spam site's pages do not exist on our server.

What turned a mistake into an incident

One account could delete a production server with no approval step and no alert. The hosting backups were deleted along with the server. And nothing removed the DNS record that pointed at it. Corrective actions 1, 3, 5, 6 and 7 address each of those.

Corrective actions

No single account should be able to delete production unnoticed, and a DNS record should never outlive the server it points to. All fourteen actions were in place by 4 November.

#ActionWhyStatus
1Give contractors restricted hosting users with only the permissions their work needsOne account could delete any server, by mistake or otherwiseDone
2Require 2FA on every hosting, GitHub and password-manager account, and alert on logins from new addressesUnusual logins should be seen when they happenDone
3Require approval and a written record before any server is deleted or rebuiltDestructive actions should never be a surpriseDone
4Allow API tokens only with a named purpose, minimum scopes and an expiry, and never give AI assistants or other automation delete rights; review monthlyTokens act silently and do not appear in login historyDone
5Keep backups outside the hosting accountHosting backups are deleted along with their serverDone
6Enable notifications for deletions, rebuilds and user changesThe deletion went unnoticed for six daysDone
7Remove or repoint DNS records before deleting or rebuilding the hosts they point toThe labs record outlived its server and its recycled address served spamDone, standing rule
8Run each vulnerable lab in its own container with a read-only filesystem and no write access to the public homepageKeeps a lab exploit inside that labDone
9Monitor key pages from several regions and user agentsCloaked spam is invisible from our own browsersDone
10Proxy public hosts through Cloudflare and restrict access to the Kubernetes control planesHides origin IPs and limits who can reach cluster APIsDone
11Keep secrets out of git, with secret scanning on every pushCredentials in a repository stay readable in its historyDone
12Default-deny firewalls on every production hostOnly the ports a service needs should be reachableDone
13Run every production app as an unprivileged userAn app bug should never mean root on the serverDone
14One offboarding and compromise checklist covering hosting, GitHub, Kubernetes, password manager, email and social accountsRemoving one account does not remove copied credentialsDone

NIST mapping

NIST SP 800-61 Rev. 3 organises incident response around the six functions of the Cybersecurity Framework (CSF) 2.0 rather than a fixed lifecycle.

CSF 2.0 functionWhere this report covers it
Govern (GV)Contractor access, approval for destructive actions and offboarding (actions 1, 3, 14)
Identify (ID)Affected and unaffected assets in the incident record
Protect (PR)Least privilege, token hygiene, off-account backups, lab isolation, secrets handling and host hardening (actions 1, 2, 4, 5, 8, 10–13)
Detect (DE)What we found; monitoring and notifications (actions 2, 6, 9)
Respond (RS)Incident record, timeline, indicators, containment and eradication
Recover (RC)Recovery steps, and this page as recovery communication

Sources: NIST SP 800-61 Rev. 3; NIST announcement, April 2025.

For lab users and exam candidates

HackXpert Labs is a deliberately vulnerable practice environment, so it will occasionally go down and be rebuilt. That is expected, and the labs are back.

If you saw the "PDF Documents" page, you don't need to do anything: it was someone else's site on an address we had given up, with no downloads or login forms. Ignore search results for labs.hackxpert.com that show book or document titles until they disappear.

Exam bookings and certificates on RatCerts were not affected, and no personal data was held on any affected server. Questions go to wesley@thexssrat.com.