diff --git a/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/libwordpress.sh b/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/libwordpress.sh
index 3db0be8c1dc2..370bdf81ee32 100644
--- a/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/libwordpress.sh
+++ b/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/libwordpress.sh
@@ -92,6 +92,7 @@ wordpress_validate() {
check_yes_no_value "WORDPRESS_SKIP_BOOTSTRAP"
check_multi_value "WORDPRESS_AUTO_UPDATE_LEVEL" "major minor none"
check_yes_no_value "WORDPRESS_ENABLE_REVERSE_PROXY"
+ check_yes_no_value "WORDPRESS_ENABLE_XML_RPC"
# Multisite validations
check_yes_no_value "WORDPRESS_ENABLE_MULTISITE"
@@ -726,6 +727,12 @@ wordpress_generate_web_server_configuration() {
error "Unknown WordPress Multisite network mode"
return 1
fi
+
+ if ! is_boolean_yes "$WORDPRESS_ENABLE_XML_RPC"; then
+ apache_config+=$'\n'"$(render-template "${template_dir}/apache-wordpress-disable-xml-rpc.tpl")"
+ nginx_config+=$'\n'"$(render-template "${template_dir}/nginx-wordpress-disable-xml-rpc.tpl")"
+ fi
+
web_server_config_create_flags+=("--apache-extra-directory-configuration" "$apache_config" "--nginx-additional-configuration" "$nginx_config")
[[ -n "$nginx_external_config" ]] && web_server_config_create_flags+=("--nginx-external-configuration" "$nginx_external_config")
ensure_web_server_app_configuration_exists "wordpress" --type "php" "${web_server_config_create_flags[@]}"
diff --git a/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress-env.sh b/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress-env.sh
index 9126f28812cf..ae52d2dee5fb 100644
--- a/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress-env.sh
+++ b/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress-env.sh
@@ -47,6 +47,7 @@ wordpress_env_vars=(
WORDPRESS_LOGGED_IN_SALT
WORDPRESS_NONCE_SALT
WORDPRESS_ENABLE_REVERSE_PROXY
+ WORDPRESS_ENABLE_XML_RPC
WORDPRESS_USERNAME
WORDPRESS_PASSWORD
WORDPRESS_EMAIL
@@ -144,6 +145,7 @@ export WORDPRESS_SECURE_AUTH_SALT="${WORDPRESS_SECURE_AUTH_SALT:-}"
export WORDPRESS_LOGGED_IN_SALT="${WORDPRESS_LOGGED_IN_SALT:-}"
export WORDPRESS_NONCE_SALT="${WORDPRESS_NONCE_SALT:-}"
export WORDPRESS_ENABLE_REVERSE_PROXY="${WORDPRESS_ENABLE_REVERSE_PROXY:-no}" # only used during the first initialization
+export WORDPRESS_ENABLE_XML_RPC="${WORDPRESS_ENABLE_XML_RPC:-no}"
# WordPress credentials
export WORDPRESS_USERNAME="${WORDPRESS_USERNAME:-user}" # only used during the first initialization
diff --git a/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/apache-wordpress-disable-xml-rpc.tpl b/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/apache-wordpress-disable-xml-rpc.tpl
new file mode 100644
index 000000000000..e74f36415dcb
--- /dev/null
+++ b/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/apache-wordpress-disable-xml-rpc.tpl
@@ -0,0 +1,8 @@
+# BEGIN Disable WordPress XML-RPC endpoint
+# Disable the outdated WordPress XML-RPC endpoint to prevent security vulnerabilities.
+# https://github.com/bitnami/containers/pull/51077
+
+Order Allow,Deny
+Deny from all
+
+# END Disable WordPress XML-RPC endpoint
diff --git a/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/nginx-wordpress-disable-xml-rpc.tpl b/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/nginx-wordpress-disable-xml-rpc.tpl
new file mode 100644
index 000000000000..134489d2f4ff
--- /dev/null
+++ b/bitnami/wordpress-nginx/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/nginx-wordpress-disable-xml-rpc.tpl
@@ -0,0 +1,7 @@
+# BEGIN Disable WordPress XML-RPC endpoint
+# Disable the outdated WordPress XML-RPC endpoint to prevent security vulnerabilities.
+# https://github.com/bitnami/containers/pull/51077
+location = /xmlrpc.php {
+ deny all;
+}
+# END Disable WordPress XML-RPC endpoint
diff --git a/bitnami/wordpress-nginx/README.md b/bitnami/wordpress-nginx/README.md
index 401c04f5028a..2c6a8b679699 100644
--- a/bitnami/wordpress-nginx/README.md
+++ b/bitnami/wordpress-nginx/README.md
@@ -240,6 +240,7 @@ Available environment variables:
- `WORDPRESS_SKIP_BOOTSTRAP`: Skip the WordPress installation wizard. This is necessary when providing a database with existing WordPress data. Default: **no**
- `WORDPRESS_AUTO_UPDATE_LEVEL`: Level of auto-updates to allow for the WordPress core installation. Valid values: `major`, `minor`, `none`. Default: **none**
- `WORDPRESS_ENABLE_REVERSE_PROXY`: Enable WordPress support for reverse proxy headers. Default: **no**
+- `WORDPRESS_ENABLE_XML_RPC`: Enable the WordPress XML-RPC endpoint. Default: **no**
#### Multisite configuration
diff --git a/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/libwordpress.sh b/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/libwordpress.sh
index 3db0be8c1dc2..370bdf81ee32 100644
--- a/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/libwordpress.sh
+++ b/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/libwordpress.sh
@@ -92,6 +92,7 @@ wordpress_validate() {
check_yes_no_value "WORDPRESS_SKIP_BOOTSTRAP"
check_multi_value "WORDPRESS_AUTO_UPDATE_LEVEL" "major minor none"
check_yes_no_value "WORDPRESS_ENABLE_REVERSE_PROXY"
+ check_yes_no_value "WORDPRESS_ENABLE_XML_RPC"
# Multisite validations
check_yes_no_value "WORDPRESS_ENABLE_MULTISITE"
@@ -726,6 +727,12 @@ wordpress_generate_web_server_configuration() {
error "Unknown WordPress Multisite network mode"
return 1
fi
+
+ if ! is_boolean_yes "$WORDPRESS_ENABLE_XML_RPC"; then
+ apache_config+=$'\n'"$(render-template "${template_dir}/apache-wordpress-disable-xml-rpc.tpl")"
+ nginx_config+=$'\n'"$(render-template "${template_dir}/nginx-wordpress-disable-xml-rpc.tpl")"
+ fi
+
web_server_config_create_flags+=("--apache-extra-directory-configuration" "$apache_config" "--nginx-additional-configuration" "$nginx_config")
[[ -n "$nginx_external_config" ]] && web_server_config_create_flags+=("--nginx-external-configuration" "$nginx_external_config")
ensure_web_server_app_configuration_exists "wordpress" --type "php" "${web_server_config_create_flags[@]}"
diff --git a/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress-env.sh b/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress-env.sh
index 9126f28812cf..ae52d2dee5fb 100644
--- a/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress-env.sh
+++ b/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress-env.sh
@@ -47,6 +47,7 @@ wordpress_env_vars=(
WORDPRESS_LOGGED_IN_SALT
WORDPRESS_NONCE_SALT
WORDPRESS_ENABLE_REVERSE_PROXY
+ WORDPRESS_ENABLE_XML_RPC
WORDPRESS_USERNAME
WORDPRESS_PASSWORD
WORDPRESS_EMAIL
@@ -144,6 +145,7 @@ export WORDPRESS_SECURE_AUTH_SALT="${WORDPRESS_SECURE_AUTH_SALT:-}"
export WORDPRESS_LOGGED_IN_SALT="${WORDPRESS_LOGGED_IN_SALT:-}"
export WORDPRESS_NONCE_SALT="${WORDPRESS_NONCE_SALT:-}"
export WORDPRESS_ENABLE_REVERSE_PROXY="${WORDPRESS_ENABLE_REVERSE_PROXY:-no}" # only used during the first initialization
+export WORDPRESS_ENABLE_XML_RPC="${WORDPRESS_ENABLE_XML_RPC:-no}"
# WordPress credentials
export WORDPRESS_USERNAME="${WORDPRESS_USERNAME:-user}" # only used during the first initialization
diff --git a/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/apache-wordpress-disable-xml-rpc.tpl b/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/apache-wordpress-disable-xml-rpc.tpl
new file mode 100644
index 000000000000..e74f36415dcb
--- /dev/null
+++ b/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/apache-wordpress-disable-xml-rpc.tpl
@@ -0,0 +1,8 @@
+# BEGIN Disable WordPress XML-RPC endpoint
+# Disable the outdated WordPress XML-RPC endpoint to prevent security vulnerabilities.
+# https://github.com/bitnami/containers/pull/51077
+
+Order Allow,Deny
+Deny from all
+
+# END Disable WordPress XML-RPC endpoint
diff --git a/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/nginx-wordpress-disable-xml-rpc.tpl b/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/nginx-wordpress-disable-xml-rpc.tpl
new file mode 100644
index 000000000000..134489d2f4ff
--- /dev/null
+++ b/bitnami/wordpress/6/debian-11/rootfs/opt/bitnami/scripts/wordpress/bitnami-templates/nginx-wordpress-disable-xml-rpc.tpl
@@ -0,0 +1,7 @@
+# BEGIN Disable WordPress XML-RPC endpoint
+# Disable the outdated WordPress XML-RPC endpoint to prevent security vulnerabilities.
+# https://github.com/bitnami/containers/pull/51077
+location = /xmlrpc.php {
+ deny all;
+}
+# END Disable WordPress XML-RPC endpoint
diff --git a/bitnami/wordpress/README.md b/bitnami/wordpress/README.md
index 095176a1c09f..6484998b6ac4 100644
--- a/bitnami/wordpress/README.md
+++ b/bitnami/wordpress/README.md
@@ -246,6 +246,7 @@ Available environment variables:
- `WORDPRESS_SKIP_BOOTSTRAP`: Skip the WordPress installation wizard. This is necessary when providing a database with existing WordPress data. Default: **no**
- `WORDPRESS_AUTO_UPDATE_LEVEL`: Level of auto-updates to allow for the WordPress core installation. Valid values: `major`, `minor`, `none`. Default: **none**
- `WORDPRESS_ENABLE_REVERSE_PROXY`: Enable WordPress support for reverse proxy headers. Default: **no**
+- `WORDPRESS_ENABLE_XML_RPC`: Enable the WordPress XML-RPC endpoint. Default: **no**
#### Salt and keys configuration