{"id":595,"date":"2026-06-12T16:17:11","date_gmt":"2026-06-29T11:16:44","guid":{"rendered":"https:\/\/brutefort.com\/blog\/how-bots-attack-wordpress\/"},"modified":"2026-09-03T09:04:01","modified_gmt":"2026-09-03T09:04:01","slug":"how-bots-attack-wordpress","status":"publish","type":"post","link":"https:\/\/brutefort.com\/blog\/how-bots-attack-wordpress\/","title":{"rendered":"How Bots Attack WordPress Sites (And How to Stop Them)"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1260\" height=\"708\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-270404.jpeg\" alt=\"Binary code on a dark screen representing automated bot attacks on WordPress\" class=\"wp-image-593\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-270404.jpeg 1260w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-270404-300x169.jpeg 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-270404-1024x575.jpeg 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-270404-768x432.jpeg 768w\" sizes=\"auto, (max-width: 1260px) 100vw, 1260px\" \/><figcaption>Photo by Pixabay from Pexels<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nobody is sitting at a keyboard trying to guess your password. That&#8217;s the part most site owners get wrong when they picture an attack. Attacks against WordPress sites are almost entirely automated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s not personal, and it&#8217;s not because your site looks vulnerable. Bots \u2014 scripts running on networks of compromised servers \u2014 scan millions of sites at once, probing the same paths and trying the same credential lists on every one. No human is watching. No human needs to.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Understanding how bots operate shows exactly why certain defenses work and others don&#8217;t. Bots have predictable behavior, and that predictability is their weakness. This guide walks through each stage of a typical attack and the setting that shuts it down.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Quick Answer:<\/strong> Bot attacks follow four predictable steps: find your login page, test credentials at scale, distribute attempts to dodge detection, then exploit any successful login. A custom login URL breaks step one. Rate limiting breaks step two. Together, they stop the vast majority of automated attacks before they get anywhere.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Finding Your Login Page<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bots don&#8217;t need to guess where your login page is. WordPress installs it at <code>\/wp-login.php<\/code> on every site. A bot scanning a range of IP addresses or a list of domains just appends that path and checks for a valid login form. If it finds one, the site goes into the attack queue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This discovery phase is completely silent from your side. No error, no slowdown, no alert. Your site just gets logged in a database somewhere, and the credential-testing phase begins.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Testing Credentials at Scale<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once a valid login page is confirmed, bots start submitting credential pairs. Most start with the username <strong>admin<\/strong> \u2014 still the most common WordPress username on older installs. From there they cycle through password lists: common passwords first, then lists pulled from public data breaches.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Speed depends on the bot and your server&#8217;s response time, but hundreds of attempts per minute is typical. Without rate limiting, WordPress accepts each attempt, checks it, returns a failure, and waits for the next one. Indefinitely.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1260\" height=\"441\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-325229.jpeg\" alt=\"Server room with cable infrastructure representing WordPress hosting targeted by bots\" class=\"wp-image-594\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-325229.jpeg 1260w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-325229-300x105.jpeg 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-325229-1024x358.jpeg 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/06\/pexels-photo-325229-768x269.jpeg 768w\" sizes=\"auto, (max-width: 1260px) 100vw, 1260px\" \/><figcaption>Photo by Manuel Geissinger from Pexels<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Distributing the Attack to Avoid Detection<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">More sophisticated bots distribute their attempts across many IP addresses to dodge simple IP-based blocking. Instead of 1,000 attempts from one IP, they&#8217;ll send 10 attempts each from 100 different IPs \u2014 making each one look almost normal. This is why IP blocking alone isn&#8217;t enough: rate limiting needs to work at the account or session level too, not just per IP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">They also throttle requests to stay under alert thresholds and rotate user agents to blend in with real browser traffic. This infrastructure often runs on botnets of compromised devices \u2014 home routers, IoT devices, web servers \u2014 that were hacked themselves and are now launching points for someone else&#8217;s attack.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: What Happens After a Successful Login<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If a credential pair works, the bot usually doesn&#8217;t do anything visible right away. It creates a new admin account as a persistent backdoor, installs a web shell for server-level access if possible, and reports the compromised site back to whoever runs the operation. Actual exploitation \u2014 spam injection, redirects, malware \u2014 often happens hours or days later, from a different IP, using the backdoor account.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Standard Defenses Work Against Bots<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bots rely on predictability \u2014 the same paths, the same credential lists, the same patterns. That predictability is exactly what makes a few targeted defenses so effective.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BruteFort implements the defenses below directly, which is why they work as well as they do against automated bots.<\/p>\n\n\n\n<div class=\"wp-block-stackable-button-group stk-block-button-group stk-block stk-5d0439f\" data-block-id=\"5d0439f\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-button-group\">\n<div class=\"wp-block-stackable-button stk-block-button stk-block stk-13ca680\" data-block-id=\"13ca680\"><style>.stk-13ca680 .stk-button{background:#f13434 !important;border-top-left-radius:var(--stk--preset--border-radius--small, 4px) !important;border-top-right-radius:var(--stk--preset--border-radius--small, 4px) !important;border-bottom-right-radius:var(--stk--preset--border-radius--small, 4px) !important;border-bottom-left-radius:var(--stk--preset--border-radius--small, 4px) !important;}.stk-13ca680 .stk-button:before{border-color:#0f0e17 !important;}<\/style><a class=\"stk-link stk-button stk--hover-effect-darken\" href=\"https:\/\/brutefort.com\/brutefort-features\/\"><span class=\"stk-button__inner-text\">Get BruteFort Now!<\/span><\/a><\/div>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Start with <strong>rate limiting<\/strong>, since it breaks the attack at step 2. Set BruteFort to lock out an IP after 5 failed attempts in 30 minutes, and the bot either stops or moves on. Even a distributed attack slows to a crawl once every participating IP hits that same lockout after a few tries.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"415\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/Brutefort-General-Rate-Limits.webp\" alt=\"BruteFort General Rate Limits panel showing max attempts, time period, and custom error message settings\" class=\"wp-image-666\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/Brutefort-General-Rate-Limits.webp 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/Brutefort-General-Rate-Limits-300x122.webp 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/Brutefort-General-Rate-Limits-768x311.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">From there, turn on <strong>a custom login URL<\/strong> to break the attack at step 1 instead. Move your login page off the default <code>\/wp-login.php<\/code> path to something of your choosing, and bots probing the default path get a 404 before they ever reach the credential-testing phase.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If your users are concentrated in one geography, add <strong>geo blocking<\/strong> as a third filter. A significant share of automated attack traffic comes from a small number of regions, so picking your countries and blocking everywhere else eliminates a large chunk of bot traffic before it even reaches the rate limiter.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"589\" src=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-geo-blocking.webp\" alt=\"BruteFort Geo Blocking panel with toggle, blacklist or whitelist mode, and country selection\" class=\"wp-image-670\" srcset=\"https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-geo-blocking.webp 1024w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-geo-blocking-300x173.webp 300w, https:\/\/brutefort.com\/blog\/wp-content\/uploads\/2026\/07\/brutefort-geo-blocking-768x442.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions About WordPress Bot Attacks<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">How can I tell if bots are currently hitting my site?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">BruteFort&#8217;s Logs screen is the most direct way to check. Every IP that triggers a login lockout is recorded with the attempt count and timestamp. Unexpected entries there mean automated attack traffic is already finding your site. Server access logs can also show unusual patterns of POST requests to <code>\/wp-login.php<\/code> if you have access to them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do bots only target the login page?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. Bots also probe for known plugin vulnerabilities, scan for exposed configuration files, and test for common misconfigurations. But the login page is the most commonly targeted path, because a successful login gives immediate, persistent admin access. Protecting it is the highest-priority defense for most WordPress sites.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Will changing my username from &#8220;admin&#8221; stop bot attacks?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It helps. Most credential lists lead with &#8220;admin&#8221; as the username, so a unique username forces bots to guess both the username and password correctly. But it&#8217;s not complete on its own \u2014 bots also use emails and usernames from breach databases. Rate limiting is a stronger defense, since it stops the attempts entirely after a few failures, regardless of what username the bot tries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is my small site really a bot target? It gets almost no traffic.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Bots don&#8217;t select targets based on traffic or value \u2014 they scan everything. A personal blog with 50 monthly visitors gets the same automated probing as a high-traffic ecommerce site. Low-traffic sites are often easier targets, because their owners are less likely to have security measures in place and less likely to notice when something goes wrong.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Bot attacks are relentless and automated, but they&#8217;re also predictable. Moving your login URL and adding rate limiting turns a viable attack into a dead end. <a href=\"https:\/\/wordpress.org\/plugins\/brutefort\/\" target=\"_blank\" rel=\"noopener\">BruteFort<\/a> sets up both in minutes, with no configuration complexity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You might also like:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/brutefort.com\/blog\/brute-force-attack-wordpress\/\">What Is a Brute Force Attack on WordPress (And How to Stop One)<\/a><\/li><li><a href=\"https:\/\/brutefort.com\/blog\/wordpress-site-hacked-symptoms\/\">WordPress Site Hacked? Here Are the Warning Signs to Look For<\/a><\/li><li><a href=\"https:\/\/brutefort.com\/blog\/wordpress-login-security\/\">WordPress Login Security: How to Protect Your Site from Unauthorized Access<\/a><\/li><\/ul>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 1,\n          \"name\": \"Home\",\n          \"item\": \"https:\/\/brutefort.com\/\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 2,\n          \"name\": \"Blog\",\n          \"item\": \"https:\/\/brutefort.com\/blog\/\"\n        },\n        {\n          \"@type\": \"ListItem\",\n          \"position\": 3,\n          \"name\": \"How Bots Attack WordPress Sites (And How to Stop Them)\",\n          \"item\": \"https:\/\/brutefort.com\/blog\/how-bots-attack-wordpress\/\"\n        }\n      ]\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"How can I tell if bots are currently hitting my site?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"BruteFort's Logs screen is the most direct way to check. Every IP that triggers a login lockout is recorded with the attempt count and timestamp. Unexpected entries there mean automated attack traffic is already finding your site. Server access logs can also show unusual patterns of POST requests to \/wp-login.php if you have access to them.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Do bots only target the login page?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"No. Bots also probe for known plugin vulnerabilities, scan for exposed configuration files, and test for common misconfigurations. But the login page is the most commonly targeted path, because a successful login gives immediate, persistent admin access. Protecting it is the highest-priority defense for most WordPress sites.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Will changing my username from \u201cadmin\u201d stop bot attacks?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"It helps. Most credential lists lead with \u201cadmin\u201d as the username, so a unique username forces bots to guess both the username and password correctly. But it's not complete on its own \u2014 bots also use emails and usernames from breach databases. Rate limiting is a stronger defense, since it stops the attempts entirely after a few failures, regardless of what username the bot tries.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Is my small site really a bot target? It gets almost no traffic.\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Yes. Bots don't select targets based on traffic or value \u2014 they scan everything. A personal blog with 50 monthly visitors gets the same automated probing as a high-traffic ecommerce site. Low-traffic sites are often easier targets, because their owners are less likely to have security measures in place and less likely to notice when something goes wrong. Bot attacks are relentless and automated, but they're also predictable. Moving your login URL and adding rate limiting turns a viable attack into a dead end. BruteFort sets up both in minutes, with no configuration complexity.\"\n          }\n        }\n      ]\n    }\n  ]\n}\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Automated bots are responsible for the majority of WordPress attacks. Here&#8217;s exactly how they find your site, what they do once they find it, and the settings that stop them.<\/p>\n","protected":false},"author":1,"featured_media":593,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[],"class_list":["post-595","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-brute-force"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/posts\/595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/comments?post=595"}],"version-history":[{"count":7,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/posts\/595\/revisions"}],"predecessor-version":[{"id":850,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/posts\/595\/revisions\/850"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/media\/593"}],"wp:attachment":[{"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/media?parent=595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/categories?post=595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brutefort.com\/blog\/wp-json\/wp\/v2\/tags?post=595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}