/wp-includes/, /wp-admin/, /wp-content/) without an index file, causing Apache's autoindex module to block and log the attempt. The pattern is consistent with automated WordPress reconnaissance tooling.
/wp-content/plugins/akismet/ (AH01630). These IPs attempted to directly access a plugin directory blocked by server configuration — indicative of targeted plugin enumeration.
eval() calls, base64-encoded payloads, xmlrpc.php exploitation, .env/.git probing, or directory traversal (../) patterns were found in these error logs. Attacks are reconnaissance-phase only.
| File (Date) | Day | Lines (file) | Actual Date Entries | Volume |
|---|---|---|---|---|
| error_log.20260201.gz | Sun | 97 | 12 (Feb 01) + 90 (Jan 31 overflow) | High |
| error_log.20260202.gz | Mon | 23 | 40 (actual Feb 02 total) | Low |
| error_log.20260203.gz | Tue | 28 | 23 | Low |
| error_log.20260204.gz | Wed | 30 | 34 | Low |
| error_log.20260205.gz | Thu | 21 | 122 | High |
| error_log.20260206.gz | Fri | 124 | 17 | High |
| error_log.20260207.gz | Sat | 17 | 21 | Low |
| error_log.20260208.gz | Sun | 32 | 26 | Low |
| error_log.20260209.gz | Mon | 23 | 16 | Low |
| error_log.20260210.gz | Tue | 20 | 23 | Low |
| error_log.20260211.gz | Wed | 17 | 61 | Med |
| error_log.20260212.gz | Thu | 53 | 28 | Med |
| error_log.20260213.gz | Fri | 32 | 68 | Med |
| error_log.20260214.gz | Sat | 64 | 3 | Low |
| error_log.20260215.gz | Sun | 3 | 2 | Min |
| error_log.20260216.gz | Mon | 2 | 33 | Min |
| error_log.20260217.gz | Tue | 33 | 11 | Low |
| error_log.20260218.gz | Wed | 11 | 6 | Min |
| error_log.20260219.gz | Thu | 6 | 38 | Min |
| error_log.20260220.gz | Fri | 42 | 28 | Med |
| error_log.20260221.gz | Sat | 24 | 45 | Med |
| error_log.20260222.gz | Sun | 86 | 205 | PEAK |
| error_log.20260223.gz | Mon | 178 | 70 | High |
| error_log.20260224.gz | Tue | 63 | 82 | High |
| error_log.20260225.gz | Wed | 75 | 17 | High |
| error_log.20260226.gz | Thu | 17 | 106 | Low |
| error_log.20260227.gz | Fri | 128 | 56 | High |
| error_log.20260228.gz | Sat | 59 | 25 | Med |
| TOTAL | — | 1,308 | 1,308 |
Note: "Lines (file)" = lines in the .gz file (may contain previous day overflow). "Actual Date Entries" = entries with that calendar date inside the log content. Feb 01 file contains 90 Jan 31 entries.
Actual daily entry counts from log content (by calendar date):
Apache module:level breakdown
Apache error code breakdown
Deny or Require all denied rule. All 8 instances target /wp-content/plugins/akismet/ — suggesting the server has an .htaccess rule blocking direct plugin access, and bots are hitting it.
| # | IP Address | Hits | Unique Dirs Probed | Days Active | AH01630 | IP Range / Notes | Risk |
|---|---|---|---|---|---|---|---|
| 1 | 20.89.235.135 | 70 | 52 | 1 (Feb 05, 4-min burst) | — | Microsoft Azure (US East) | HIGH |
| 2 | 104.46.216.98 | 63 | 48 | 2 (Feb 22–23) | — | Microsoft Azure (US East) | HIGH |
| 3 | 20.78.146.86 | 60 | 32 | 5 (Feb 20–24) | — | Microsoft Azure (SE Asia) | HIGH |
| 4 | 52.141.18.191 | 55 | 40 | 3 (Feb 22–24) | — | Microsoft Azure (US East2) | HIGH |
| 5 | 40.115.138.121 | 55 | 15 | 5 (Feb 01,03,23,24,27) | — | Microsoft Azure (AU East) | MED-HIGH |
| 6 | 20.219.8.79 | 49 | 28 | 5 (Jan 31, Feb 01,04,07,25,26) | — | Microsoft Azure (India) | MED-HIGH |
| 7 | 20.151.107.14 | 47 | 39 | 1 (Feb 27) | — | Microsoft Azure (US South) | MED-HIGH |
| 8 | 172.213.144.131 | 47 | 39 | 1 (Feb 26) | — | Microsoft Azure (US East) | MED-HIGH |
| 9 | 20.194.29.45 | 45 | 28 | 4 (Jan 31, Feb 05,06,22) | — | Microsoft Azure (SE Asia) | MED-HIGH |
| 10 | 20.89.40.149 | 39 | 32 | 2 (Feb 21–22) | — | Microsoft Azure (US East) | MED-HIGH |
| 11 | 20.78.169.245 | 31 | — | 2 (Feb 17,19) | — | Microsoft Azure (SE Asia) | MED |
| 12 | 91.239.130.201 | 30 | — | 1 (Feb 22) | YES (1) | Non-Azure — Europe (suspicious) | HIGH |
| 13 | 20.78.152.240 | 30 | 9 | 1 (Jan 31) | — | Microsoft Azure (SE Asia) | MED |
| 14 | 188.95.65.43 | 30 | — | 1 (Feb 16) | YES (1) | Non-Azure — Europe (suspicious) | HIGH |
| 15 | 185.193.157.211 | 30 | — | 1 (Feb 05) | YES (1) | Non-Azure — Europe (suspicious) | HIGH |
| 16 | 149.88.19.87 | 30 | — | 1 (Feb 13) | YES (1) | Non-Azure — CDN/VPN range | HIGH |
| 17 | 138.199.19.178 | 30 | — | 2 (Feb 26–27) | YES (1) | Non-Azure — Hosting/VPN | HIGH |
| 18 | 20.197.58.121 | 25 | — | 3 (Feb 22–24) | — | Microsoft Azure (SE Asia) | MED |
| 19 | 20.212.209.31 | 24 | — | 3 (Feb 02–04) | — | Microsoft Azure (AU East) | MED |
| 20 | 20.89.52.173 | 21 | — | 3 (Feb 25–27) | — | Microsoft Azure (US East) | MED |
Total unique IPs seen: 96. The majority fall in Microsoft Azure IP ranges (20.x, 40.x, 52.x, 104.x, 13.x, 172.x). Non-Azure IPs with AH01630 denials are particularly suspicious.
105 unique WordPress paths were probed in total. All paths are under /home/c3605507/public_html/security-blog-it.com/
TOP 25 MOST PROBED PATHS
| # | Relative Path | Hits | Category |
|---|---|---|---|
| 1 | /wp-content/uploads/ | 77 | uploads |
| 2 | /wp-includes/PHPMailer/ | 69 | library |
| 3 | /wp-includes/ | 68 | core |
| 4 | /wp-includes/images/ | 57 | assets |
| 5 | /wp-includes/assets/ | 57 | assets |
| 6 | /wp-includes/html-api/ | 49 | core |
| 7 | /wp-includes/ID3/ | 46 | library |
| 8 | /wp-includes/fonts/ | 44 | assets |
| 9 | /wp-includes/css/ | 38 | assets |
| 10 | /wp-includes/SimplePie/ | 32 | library |
| 11 | /wp-includes/customize/ | 31 | core |
| 12 | /wp-includes/block-patterns/ | 31 | core |
| 13 | /wp-content/languages/ | 31 | content |
| 14 | /wp-content/upgrade/ | 25 | sensitive |
| 15 | /wp-includes/rest-api/ | 24 | API |
| 16 | /wp-includes/certificates/ | 23 | sensitive |
| 17 | /wp-admin/images/ | 22 | wp-admin |
| 18 | /wp-includes/block-supports/ | 20 | core |
| 19 | /wp-includes/pomo/ | 18 | library |
| 20 | /wp-includes/IXR/ | 18 | XML-RPC lib |
| 21 | /wp-admin/css/colors/ectoplasm/ | 18 | wp-admin |
| 22 | /wp-includes/js/codemirror/ | 17 | assets |
| 23 | /wp-includes/theme-compat/ | 16 | core |
| 24 | /wp-includes/js/dist/ | 16 | assets |
| 25 | /wp-includes/Text/ | 16 | library |
PATHS BY CATEGORY BREAKDOWN
SENSITIVE PATHS TARGETED
ALL UNIQUE PATHS (105 total) — grouped
/wp-admin/css/ /wp-admin/css/colors/ (blue, coffee, ectoplasm, light, midnight, modern, ocean, sunrise) /wp-admin/images/ /wp-admin/includes/ /wp-admin/js/ /wp-admin/js/widgets/ /wp-admin/maint/ /wp-content/languages/ /wp-content/languages/plugins/ /wp-content/languages/themes/ /wp-content/plugins/contact-form-7/ /wp-content/themes/twentytwentyfour/ /wp-content/themes/twentytwentythree/ /wp-content/themes/twentytwentythree/patterns/ /wp-content/upgrade/ /wp-content/upgrade-temp-backup/ /wp-content/uploads/ (+ yearly: 2021,2022,2023,2024,2025,2026; monthly: 02/) /wp-includes/ (root) /wp-includes/ID3/ /wp-includes/IXR/ /wp-includes/PHPMailer/ /wp-includes/Requests/ /wp-includes/Requests/library/ /wp-includes/SimplePie/ /wp-includes/Text/ /wp-includes/Text/Diff/ /wp-includes/Text/Diff/Engine/ /wp-includes/Text/Diff/Renderer/ /wp-includes/assets/ /wp-includes/block-bindings/ /wp-includes/block-patterns/ /wp-includes/block-supports/ /wp-includes/blocks/ (block, button, code, comments, file, loginout, more, post-author, shortcode) /wp-includes/certificates/ /wp-includes/css/ /wp-includes/css/dist/ (block-library, edit-widgets, preferences, widgets) /wp-includes/customize/ /wp-includes/fonts/ /wp-includes/html-api/ /wp-includes/images/ /wp-includes/images/crystal/ /wp-includes/images/media/ /wp-includes/images/smilies/ /wp-includes/interactivity-api/ /wp-includes/js/ /wp-includes/js/codemirror/ /wp-includes/js/crop/ /wp-includes/js/dist/ /wp-includes/js/jquery/ /wp-includes/js/jquery/ui/ /wp-includes/js/plupload/ /wp-includes/js/thickbox/ /wp-includes/js/tinymce/ (plugins, skins, themes, utils) /wp-includes/l10n/ /wp-includes/php-compat/ /wp-includes/pomo/ /wp-includes/rest-api/ /wp-includes/rest-api/endpoints/ /wp-includes/rest-api/fields/ /wp-includes/rest-api/search/ /wp-includes/sitemaps/ /wp-includes/sitemaps/providers/ /wp-includes/sodium_compat/ /wp-includes/sodium_compat/src/ /wp-includes/style-engine/ /wp-includes/theme-compat/ /wp-includes/widgets/
php_flag log_errors On and ErrorLog routing.
All log entries are exclusively Apache module errors (autoindex, authz_core). PHP errors would appear if php_error_log pointed to this error log file — they do not in this configuration.
/home/c3605507/public_html/security-blog-it.com/wp-content/plugins/akismet/. The Akismet plugin directory has an explicit access restriction (likely Options -Indexes + Require all denied in .htaccess or VirtualHost). Each denial represents a bot attempting direct HTTP access to the plugin directory — a standard WordPress fingerprinting technique.
| Timestamp | Client IP | IP Type | Target Path |
|---|---|---|---|
| Sat Jan 31 07:20:52 2026 | 13.75.54.243 | Azure AP | /wp-content/plugins/akismet/ |
| Mon Feb 02 01:18:12 2026 | 20.63.209.182 | Azure US | /wp-content/plugins/akismet/ |
| Mon Feb 02 11:36:05 2026 | 104.211.72.80 | Azure IN | /wp-content/plugins/akismet/ |
| Thu Feb 05 12:43:23 2026 | 185.193.157.211 | Non-Azure EU | /wp-content/plugins/akismet/ |
| Fri Feb 13 09:52:00 2026 | 149.88.19.87 | Non-Azure | /wp-content/plugins/akismet/ |
| Mon Feb 16 04:21:54 2026 | 188.95.65.43 | Non-Azure EU | /wp-content/plugins/akismet/ |
| Sun Feb 22 00:42:36 2026 | 91.239.130.201 | Non-Azure EU | /wp-content/plugins/akismet/ |
| Thu Feb 26 18:04:31 2026 | 138.199.19.178 | Non-Azure | /wp-content/plugins/akismet/ |
7a. Attack Pattern Summary
| Attack Vector | Count | Found? |
|---|---|---|
Directory traversal (../) | 0 | NONE |
| WordPress xmlrpc.php attacks | 0 | NONE |
| wp-login.php brute force | 0 | NONE |
| SQL injection patterns | 0 | NONE |
| File inclusion attempts | 0 | NONE |
| .env / .git probing | 0 | NONE |
| phpMyAdmin access | 0 | NONE |
| base64 / eval() payloads | 0 | NONE |
| Shell/webshell paths | 0 | NONE |
| Directory enumeration (AH01276) | 1,300 | ACTIVE |
| Plugin dir access (AH01630) | 8 | ACTIVE |
| wp-admin dir probing | ~74 | ACTIVE |
| WordPress structure mapping | 105 paths | ACTIVE |
| Multi-day persistent scanners | 11 IPs | ACTIVE |
7b. Suspicious / Non-Azure IPs (Priority Block List)
| IP | Hits | AH01630 | Pattern |
|---|---|---|---|
91.239.130.201 | 30 | YES | 29 dir probes + 1 denied; Feb 22 burst |
188.95.65.43 | 30 | YES | 29 dir probes + 1 denied; Feb 16 burst |
185.193.157.211 | 30 | YES | 29 dir probes + 1 denied; Feb 05 burst |
149.88.19.87 | 30 | YES | 29 dir probes + 1 denied; Feb 13 burst |
138.199.19.178 | 30 | YES | 29 dir probes + 1 denied; Feb 26–27 |
23.100.90.148 | 15 | — | Azure-adjacent; brief scan session |
4.204.195.211 | 14 | — | Non-Azure 4.x; dir scan |
68.221.137.26 | 8 | — | US ISP range; scan activity |
213.35.118.50 | 3 | — | European IP; small scan footprint |
7c. Persistent Multi-Day Scanners (Highest Priority)
| IP | Total Hits | Days Active | Date Range | Notes |
|---|---|---|---|---|
40.115.138.121 | 55 | 5 | Feb 01, 03, 23, 24, 27 | Azure AU; systematic 7-dir batches each visit |
20.219.8.79 | 49 | 5 | Jan 31, Feb 01, 04, 07, 25, 26 | Azure India; distributed scan over full month |
20.78.146.86 | 60 | 5 | Feb 20, 21, 22, 23, 24 | Azure SE Asia; concentrated late-Feb activity |
20.194.29.45 | 45 | 4 | Jan 31, Feb 05, 06, 22 | Azure SE Asia; sporadic throughout month |
40.113.19.56 | 18 | 4 | Feb 07, 09, 13, 24 | Azure; lower volume persistent |
20.212.209.31 | 24 | 3 | Feb 02, 03, 04 | Azure AU; consecutive day scanning |
52.141.18.191 | 55 | 3 | Feb 22, 23, 24 | Azure US; concentrated burst |
20.197.58.121 | 25 | 3 | Feb 22, 23, 24 | Azure; concurrent with Feb 22 spike |
7d. Feb 22 Coordinated Spike Analysis (205 entries — highest single day)
104.46.216.98 — 59 hits (10:10 UTC burst, 43 hits in ~60 seconds)52.141.18.191 — 45 hits (10:26 UTC burst)91.239.130.201 — 30 hits (00:41 UTC + 1 akismet denial at 00:42)20.89.40.149 — 26 hits20.78.146.86 — 26 hits (spread across 00:08–15:12 UTC)20.194.29.45 — 14 hits20.197.58.121 — 5 hits| Module | Error Level | Count | Error Code | Description |
|---|---|---|---|---|
autoindex |
error | 1,300 | AH01276 |
mod_autoindex: Cannot generate directory listing — no DirectoryIndex found and Options -Indexes enforced |
authz_core |
error | 8 | AH01630 |
mod_authz_core: Client denied access — explicit Require/Deny rule matched the request |
Modules NOT present in logs: php, auth_basic, auth_digest, ssl, rewrite, proxy, cgi, fcgid. No web application firewall (WAF/mod_security) entries detected.
Options -Indexes is set (as here), it logs AH01276 instead of serving a listing. The site's configuration is correct — but the high volume of these errors indicates bots are systematically requesting every known WordPress subdirectory.
Require directives. AH01630 fires when a request matches a Require all denied or similar rule. The Akismet plugin directory appears to have such protection, which is good practice.
Numbers = log entries per hour (UTC). Darker red = higher volume.
| Hour (UTC) | Count | JST (UTC+9) | Level |
|---|---|---|---|
| 00:00 | 60 | 09:00 | Med |
| 01:00 | 56 | 10:00 | Med |
| 02:00 | 49 | 11:00 | Med |
| 03:00 | 51 | 12:00 | Med |
| 04:00 | 60 | 13:00 | Med |
| 05:00 | 11 | 14:00 | Low |
| 06:00 | 34 | 15:00 | Low |
| 07:00 | 49 | 16:00 | Med |
| 08:00 | 23 | 17:00 | Low |
| 09:00 | 77 | 18:00 | High |
| 10:00 | 122 | 19:00 | PEAK |
| 11:00 | 43 | 20:00 | Med |
| 12:00 | 53 | 21:00 | Med |
| 13:00 | 12 | 22:00 | Low |
| 14:00 | 27 | 23:00 | Low |
| 15:00 | 115 | 00:00 next day | PEAK |
| 16:00 | 25 | 01:00 | Low |
| 17:00 | 22 | 02:00 | Low |
| 18:00 | 58 | 03:00 | Med |
| 19:00 | 60 | 04:00 | Med |
| 20:00 | 155 | 05:00 | PEAK #1 |
| 21:00 | 61 | 06:00 | Med |
| 22:00 | 49 | 07:00 | Med |
| 23:00 | 36 | 08:00 | Low |
/wp-admin/ and /wp-includes/ comprehensively including deeply nested paths like /wp-includes/js/tinymce/skins/lightgray/img/.
/wp-content/upgrade-temp-backup/ probing, this suggests attackers are hunting for backup artifacts.
Immediate Actions
Options -ExecCGI -Indexes and a rule preventing .php execution inside it (e.g., php_flag engine off or an .htaccess deny for *.php in uploads/).
Medium-Term Hardening
https://www.microsoft.com/en-us/download/details.aspx?id=56519
<Files xmlrpc.php>
Require all denied
</Files>
ALL 96 UNIQUE IPs (sorted by hit count)
70 20.89.235.135 (Azure US East) 63 104.46.216.98 (Azure US East) 60 20.78.146.86 (Azure SE Asia) 55 52.141.18.191 (Azure US East2) 55 40.115.138.121 (Azure AU East) 49 20.219.8.79 (Azure India) 47 20.151.107.14 (Azure US South) 47 172.213.144.131 (Azure US East) 45 20.194.29.45 (Azure SE Asia) 39 20.89.40.149 (Azure US East) 31 20.78.169.245 (Azure SE Asia) 30 91.239.130.201 *** Non-Azure EU *** 30 20.78.152.240 (Azure SE Asia) 30 188.95.65.43 *** Non-Azure EU *** 30 185.193.157.211 *** Non-Azure EU *** 30 149.88.19.87 *** Non-Azure *** 30 138.199.19.178 *** Non-Azure *** 25 20.197.58.121 (Azure SE Asia) 24 20.212.209.31 (Azure AU East) 21 20.89.52.173 (Azure US East) 19 20.205.120.43 (Azure) 18 40.113.19.56 (Azure) 18 20.63.209.182 (Azure) 18 20.223.168.28 (Azure) 17 20.24.197.43 (Azure) 16 20.48.177.128 (Azure) 15 23.100.90.148 (Azure-adjacent) 15 20.214.159.60 (Azure) 14 4.204.195.211 *** Non-Azure *** 14 20.220.8.221 (Azure) 14 172.213.144.187 (Azure) 14 13.75.54.243 (Azure AP) 14 104.211.72.80 (Azure India) 13 104.208.91.171 (Azure) 10 20.196.204.231 (Azure) 10 172.190.142.176 (Azure) 9 20.213.25.204 (Azure) 8 74.248.113.199 (non-Azure) 8 68.221.137.26 *** Non-Azure US *** 8 40.89.140.250 (Azure) 8 20.63.0.10 (Azure) 8 20.43.58.219 (Azure) 8 20.234.88.224 (Azure) 8 20.199.186.0 (Azure) 8 20.100.190.151 (Azure) 7 4.241.216.217 (non-Azure) 7 20.78.129.228 (Azure SE Asia) 7 20.46.176.183 (Azure) 7 20.43.27.35 (Azure) 6 20.203.180.35 (Azure) 6 20.151.2.11 (Azure) 6 172.213.161.82 (Azure) 5 20.89.58.13 (Azure) 5 20.69.252.116 (Azure) 5 20.203.240.55 (Azure) 5 20.123.25.77 (Azure) 5 185.194.178.23 *** Non-Azure EU *** 5 104.46.226.22 (Azure) 5 104.211.88.54 (Azure India) 4 52.169.5.4 (Azure) 4 52.141.4.186 (Azure) 4 51.13.121.91 (Azure EU) 4 51.103.136.17 (Azure EU) 4 40.83.92.30 (Azure) 4 40.65.177.112 (Azure) 4 20.24.82.132 (Azure) 4 20.24.204.137 (Azure) 4 20.223.211.237 (Azure) 4 20.220.62.160 (Azure) 4 20.214.157.214 (Azure) 4 20.210.188.132 (Azure) 4 20.111.18.181 (Azure) 4 20.100.195.34 (Azure) 4 132.164.252.220 (non-Azure) 4 13.75.55.228 (Azure AP) 3 4.194.217.214 (non-Azure) 3 213.35.118.50 *** Non-Azure EU *** 3 20.89.56.154 (Azure) 3 20.42.209.0 (Azure) 3 20.187.67.15 (Azure) 3 20.151.220.171 (Azure) 2 74.248.32.28 (non-Azure) 2 40.89.135.33 (Azure) 2 4.217.180.34 (non-Azure) 2 20.65.47.129 (Azure) 2 20.205.115.105 (Azure) 2 20.122.194.178 (Azure) 2 140.245.121.105 (non-Azure) 1 52.169.148.186 (Azure EU) 1 40.89.137.255 (Azure) 1 20.27.221.169 (Azure) 1 20.215.185.223 (Azure) 1 20.214.137.92 (Azure) 1 20.203.136.132 (Azure) 1 20.100.184.236 (Azure) 1 13.71.191.191 (Azure AP)
HOURLY DISTRIBUTION DETAIL
Hour Count Bar 00:00 60 ████████████████████████ 01:00 56 ██████████████████████ 02:00 49 ████████████████████ 03:00 51 ████████████████████ 04:00 60 ████████████████████████ 05:00 11 ████ 06:00 34 █████████████ 07:00 49 ████████████████████ 08:00 23 █████████ 09:00 77 ██████████████████████████████ 10:00 122 ████████████████████████████████████████████████ 11:00 43 █████████████████ 12:00 53 █████████████████████ 13:00 12 █████ 14:00 27 ██████████ 15:00 115 █████████████████████████████████████████████ 16:00 25 ██████████ 17:00 22 █████████ 18:00 58 ███████████████████████ 19:00 60 ████████████████████████ 20:00 155 ████████████████████████████████████████████████████████████ 21:00 61 ████████████████████████ 22:00 49 ████████████████████ 23:00 36 ██████████████
ERROR CODE REFERENCE
AH01276 — autoindex:error "Cannot serve directory %s: No matching DirectoryIndex (%s) found, and server-generated directory index forbidden by Options directive" Module: mod_autoindex Severity: error Action: Returns 403 Forbidden to client AH01630 — authz_core:error "client denied by server configuration: %s" Module: mod_authz_core Severity: error Action: Returns 403 Forbidden to client
FILE INFO
Location: /home/kali/Desktop/VScode/202602_error/ Files: 28 (.gz compressed) Date range: error_log.20260201.gz — error_log.20260228.gz Total lines: 1,308 Total unique IPs: 96 Total unique paths: 105 Error codes found: AH01276, AH01630 Modules: autoindex, authz_core PHP errors: 0 Traversal attempts: 0 Exploit payloads: 0