HEX
Server: nginx/1.16.1
System: Linux VM-0-14-centos 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64
User: www (1000)
PHP: 8.3.31
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.sceysls.com/.htaccess
########################################################################
# WORDPRESS .HTACCESS — HARDENED (wp2shell / CVE-2026-63030 protected)
# Everything above the BEGIN/END WordPress markers is safe — WP never
# overwrites anything outside them.
########################################################################

# ------------------------------------------------------------------
# 0. No directory listing
#    (If you get HTTP 500 right after pasting, delete this one line —
#     your host doesn't allow the Options override.)
# ------------------------------------------------------------------
Options -Indexes

# ------------------------------------------------------------------
# 1. WP2SHELL BLOCK — must come FIRST, before WP routes anything
#    to index.php. Covers BOTH URL forms, plain + URL-encoded.
# ------------------------------------------------------------------
<IfModule mod_rewrite.c>
  RewriteEngine On

  # Form 1: /wp-json/batch/v1  (also covers /wp-json/batch/v1/batch)
  RewriteCond %{REQUEST_URI} ^/?wp-json/batch/v1 [NC]
  RewriteRule .* - [F,L]

  # Form 2: /?rest_route=/batch/v1  (works even with permalinks OFF)
  RewriteCond %{QUERY_STRING} (^|&)rest_route=(/|%2f)batch(/|%2f)v1 [NC]
  RewriteRule .* - [F,L]

  # ----------------------------------------------------------------
  # 2. No script execution in writable dirs — uploaded webshells
  #    return 403 instead of running
  # ----------------------------------------------------------------
  RewriteCond %{REQUEST_URI} ^/?wp-content/(uploads|upgrade|cache)/.*\.(php[0-9]?|phtml|phar|phps|cgi|pl|py|sh)$ [NC]
  RewriteRule .* - [F,L]

  # ----------------------------------------------------------------
  # 3. Block ?author=N admin-username enumeration (attack recon)
  # ----------------------------------------------------------------
  RewriteCond %{QUERY_STRING} (^|&)author=[0-9]+ [NC]
  RewriteRule .* - [F,L]
</IfModule>

# ------------------------------------------------------------------
# 4. wp-config.php — never readable over the web
# ------------------------------------------------------------------
<Files wp-config.php>
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
</Files>

# ------------------------------------------------------------------
# 5. All dotfiles (.htaccess itself, .env, .git internals) — denied
# ------------------------------------------------------------------
<FilesMatch "^\.">
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
</FilesMatch>
RedirectMatch 404 /\.git(/.*)?$

# ------------------------------------------------------------------
# 6. xmlrpc.php — legacy brute-force/pingback amplifier.
#    Delete ONLY this block if you use Jetpack or the WP mobile app.
# ------------------------------------------------------------------
<Files xmlrpc.php>
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
</Files>

# ------------------------------------------------------------------
# 7. Default WordPress rules — untouched, between the markers
# ------------------------------------------------------------------
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress