Response playbooks, investigation guides, and Atomic Red Team tests are Pro-only. Upgrade to unlock the full detection package for THREAT-Impact-PublicWebsiteDefacement.

Upgrade to Pro
THREAT-Impact-PublicWebsiteDefacement

Public Website Defacement via Compromised CMS Admin Session or Mass Static Asset Tampering

Impact Last updated:

Adversaries who obtain stolen CMS administrator credentials or exploit an unpatched plugin/theme vulnerability on a public-facing content management system (WordPress, Joomla, Drupal, Umbraco, Sitecore, etc.) frequently pivot straight to defacing the site — replacing the homepage, posting propaganda content, or mass-editing pages — to deliver a political message, claim credit, or intimidate the target organization. This pattern shows up in two complementary ways depending on the compromise vector: (1) a burst of authenticated content-edit HTTP requests (POST/PUT to admin post/page/theme-editor endpoints) from a single source IP or session hitting many distinct URLs in a short window, captured in WAF or reverse-proxy access logs, which is characteristic of a scripted mass-edit rather than a human editor working through the admin UI one page at a time; and (2) direct filesystem tampering where an attacker who has RCE (via a vulnerable plugin, exposed file manager, or stolen SFTP/SSH credentials) bypasses the CMS application layer entirely and mass-modifies static HTML, PHP, CSS, JS, and image assets directly in the web root, captured via endpoint file-monitoring telemetry. Both paths differ sharply from routine content operations: legitimate CMS editors and CI/CD deployment pipelines touch a handful of pages per session or deploy through a recognized service account/process, not dozens of distinct admin endpoints or web-root files from a single caller within minutes. Detection correlates a distinct-URL or distinct-file count threshold within a short burst window against the initiating source IP, session, or account to separate scripted mass defacement from normal editorial and deployment activity.

What is THREAT-Impact-PublicWebsiteDefacement Public Website Defacement via Compromised CMS Admin Session or Mass Static Asset Tampering?

Public Website Defacement via Compromised CMS Admin Session or Mass Static Asset Tampering (THREAT-Impact-PublicWebsiteDefacement) maps to the Impact tactic — the adversary is trying to manipulate, interrupt, or destroy your systems and data in MITRE ATT&CK.

This page provides production-ready detection logic for Public Website Defacement via Compromised CMS Admin Session or Mass Static Asset Tampering, covering the data sources and telemetry it touches: WAF / reverse proxy access logs (CEF), Microsoft Defender for Endpoint file events, File: File Modification. The queries below are rated critical severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Impact
Microsoft Sentinel / Defender
kusto
let EditWindow = 15m;
let MinEditCount = 8;
let MinFilesModified = 5;
let AdminPaths = dynamic(["/wp-admin/post.php", "/wp-admin/post-new.php", "/wp-admin/edit.php", "/wp-admin/theme-editor.php", "/wp-admin/customize.php", "/wp-json/wp/v2/pages", "/wp-json/wp/v2/posts", "/administrator/index.php", "/administrator/components/com_content", "/user/login", "/node/add", "/umbraco/backoffice", "/sitecore/shell"]);
let WebRootPaths = dynamic(["\\inetpub\\wwwroot\\", "\\wwwroot\\", "\\htdocs\\", "\\public_html\\", "/var/www/", "/usr/share/nginx/html/"]);
let WebAssetExtensions = dynamic([".html", ".htm", ".php", ".css", ".js", ".jpg", ".png", ".svg"]);
// Branch 1: burst of CMS admin content-edit requests from a single source IP, seen in WAF/reverse-proxy logs forwarded as CEF
let CmsAdminEditBurst = CommonSecurityLog
| where TimeGenerated > ago(2h)
| where RequestMethod in ("POST", "PUT")
| where RequestURL has_any (AdminPaths)
| summarize EditCount = count(), DistinctURLs = dcount(RequestURL), URLSample = make_set(RequestURL, 10) by SourceIP, DestinationHostName, bin(TimeGenerated, EditWindow)
| where EditCount >= MinEditCount
| extend DetectionType = "CmsAdminEditBurst", Severity = "High"
| project TimeGenerated, Actor = SourceIP, Target = DestinationHostName, Count = EditCount, DistinctItems = DistinctURLs, Sample = URLSample, DetectionType, Severity;
// Branch 2: mass direct modification of static web assets on the host filesystem, bypassing the CMS application layer entirely
let MassAssetTamper = DeviceFileEvents
| where TimeGenerated > ago(2h)
| where ActionType == "FileModified"
| where FolderPath has_any (WebRootPaths)
| where FileName has_any (WebAssetExtensions)
| where InitiatingProcessFileName !in~ ("svchost.exe", "TrustedInstaller.exe", "msiexec.exe", "WUDFHost.exe", "MicrosoftEdgeUpdate.exe")
| summarize FilesModified = dcount(FileName), FileSample = make_set(FileName, 10), Processes = make_set(InitiatingProcessFileName) by DeviceName, InitiatingProcessAccountName, bin(TimeGenerated, EditWindow)
| where FilesModified >= MinFilesModified
| extend DetectionType = "MassStaticAssetTamper", Severity = "Critical"
| project TimeGenerated, Actor = InitiatingProcessAccountName, Target = DeviceName, Count = FilesModified, DistinctItems = FilesModified, Sample = FileSample, DetectionType, Severity;
CmsAdminEditBurst
| union MassAssetTamper
| sort by TimeGenerated desc

Detects public website defacement via two complementary branches. Branch 1 mines WAF/reverse-proxy access logs (ingested into CommonSecurityLog as CEF) for a single source IP issuing 8 or more POST/PUT requests to CMS admin content-edit endpoints (WordPress post/page editor and REST API, Joomla administrator, Drupal node/add, Umbraco/Sitecore backoffice) across 8 or more distinct URLs within a 15-minute window — the signature of a scripted mass-edit rather than manual editorial work. Branch 2 mines Microsoft Defender for Endpoint file telemetry for 5 or more distinct static web assets (HTML, PHP, CSS, JS, images) modified in a web root directory within the same window by a process not associated with routine OS servicing, catching the RCE/file-manager path where the attacker bypasses the CMS UI entirely. Either branch firing independently is a strong defacement indicator; both firing in the same window against the same host is near-certain.

critical severity medium confidence

Data Sources

WAF / reverse proxy access logs (CEF) Microsoft Defender for Endpoint file events File: File Modification

Required Tables

CommonSecurityLog DeviceFileEvents

False Positives

  • Legitimate content editors performing bulk edits during a scheduled content migration, redesign, or seasonal campaign refresh from a known editorial account
  • CI/CD deployment agents (Jenkins, GitHub Actions runners, Azure DevOps build agents) pushing an updated site build to the web root as part of a normal release
  • CMS auto-update processes (WordPress core/plugin/theme auto-updater, Composer-driven Drupal deploys) that rewrite many PHP/HTML/CSS files during a scheduled update window
  • Marketing or SEO automation tools that bulk-update metadata or content across many pages via the CMS REST API on a schedule
  • Site migration or staging-to-production sync jobs that copy a large static asset set into the web root in one operation

Sigma rule & cross-platform mapping

The detection logic for Public Website Defacement via Compromised CMS Admin Session or Mass Static Asset Tampering (THREAT-Impact-PublicWebsiteDefacement) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  category: network_connection
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Simulate Burst of CMS Admin Content-Edit Requests

    Expected signal: WAF/reverse-proxy access logs (CommonSecurityLog) showing 10 POST requests to /wp-admin/post.php from the test source IP within a few minutes, targeting 10 distinct post IDs.

  2. Test 2Simulate Mass Static Asset Tampering on Web Root (Linux)

    Expected signal: File-modification events (Sysmon Event ID 11 / auditd) for 6 distinct files under /tmp/atomictest-webroot within seconds of each other, written by a shell process.

  3. Test 3Simulate Mass Static Asset Tampering on IIS Web Root (Windows)

    Expected signal: MDE DeviceFileEvents / Sysmon Event ID 11 entries for 5 distinct files under C:\atomictest\wwwroot within seconds, with InitiatingProcessFileName = powershell.exe.

Unlock playbooks & atomic tests with Pro

Get the full detection package for THREAT-Impact-PublicWebsiteDefacement — response playbook and atomic red team tests, plus investigation guidance and hunting queries.

df00tech Pro — £29/user/month

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections

Tactic Hub