Misconfigured security settings

Topics covered

  • Misconfigured security settings

  • Insecure default settings

Misconfigured security settings

Misconfigured security settings occur when systems, applications, or networks are set up insecurely, leaving them vulnerable to attacks. Unlike simple default settings issues, misconfigurations can arise from human error, lack of security awareness, or poor maintenance.

Common Examples of Security Misconfigurations

1. Exposed Admin Interfaces

  • Web-based admin dashboards (e.g., /admin, /wp-admin, /manager) left publicly accessible.

  • Real-world example:

    • Jenkins servers exposed online without authentication, allowing attackers to execute arbitrary code.

    • Router admin panels (e.g., 192.168.1.1) exposed to the internet, leading to credential brute-forcing.

2. Unprotected Cloud Storage (S3 Buckets, Blob Storage)

  • AWS S3 buckets or Azure Blob Storage set to public instead of private.

  • Example:

    • Verizon (2017) – Misconfigured S3 bucket exposed 6 million customer records.

    • Facebook (2019) – Publicly accessible databases leaked 540 million user records.

3. Verbose Error Messages

  • Applications revealing stack traces, database errors, or server details in production.

  • Example:

    • SQL errors exposing table names, helping attackers refine SQL injection attacks.

4. Unsecured APIs

  • APIs with no authentication, excessive data exposure, or deprecated versions left running.

  • Example:

    • Peloton (2021) – API leaked user data due to lack of authentication checks.

5. Directory Listing Enabled

  • Web servers (Apache, Nginx) allow browsing of directories, exposing sensitive files.

  • Example:

    • A misconfigured backup directory might expose .bak or .sql files containing credentials.

6. Unnecessary HTTP Methods (PUT, DELETE, TRACE)

  • Web servers allowing dangerous methods (e.g., PUT for file uploads, DELETE for wiping data).

  • Example:

    • Attackers exploit HTTP PUT to upload malicious scripts (e.g., web shells).

7. Default or Sample Files Left Installed

  • Web servers with default pages (e.g., phpinfo.php, test.cgi) that leak system info.

  • Example:

    • Oracle WebLogic had default samples vulnerable to remote code execution (CVE-2020-14882).

8. Improper CORS (Cross-Origin Resource Sharing) Policies

  • Misconfigured CORS allows any domain to access APIs, leading to data theft.

  • Example:

    • A banking site allowing Access-Control-Allow-Origin: * could leak sensitive data via malicious scripts.

9. Missing Security Headers

  • Lack of HTTP Security Headers (e.g., X-Content-Type-Options, Content-Security-Policy).

  • Example:

    • Clickjacking attacks succeed when X-Frame-Options is missing.

10. Unrestricted File Uploads

  • Web apps allowing executable files (.php, .jsp) to be uploaded without validation.

  • Example:

    • Attackers upload a .php shell to gain remote control (e.g., Alibaba Cloud (2020)).

How to Prevent Security Misconfigurations?

Disable admin interfaces from public access (use VPNs or IP whitelisting). ✅ Follow the principle of least privilege (restrict permissions). ✅ Automate security checks (use tools like AWS Config, Nessus, OpenVAS). ✅ Disable directory listing & unnecessary HTTP methods. ✅ Remove default/sample files and disable debug modes in production. ✅ Implement proper CORS & security headers. ✅ Regularly audit configurations (using OWASP ZAP, Burp Suite).


Insecure default settings

Misconfigurations occur when systems, applications, or networks are improperly set up, often due to reliance on default settings that prioritize ease of deployment over security. Here are common examples:

1. Default Credentials

  • Many devices (routers, IoT devices, servers) ship with default usernames and passwords (e.g., admin:admin).

  • Example: Attackers scan for devices with unchanged default logins (e.g., Mirai botnet exploited default IoT credentials).

2. Open or Unrestricted Ports & Services

  • Unnecessary services (e.g., Telnet, FTP, SMB) left enabled by default.

  • Example: EternalBlue exploited open SMB ports in Windows systems.

3. Excessive Permissions

  • Default configurations granting unnecessary privileges (e.g., "Everyone: Full Control" in file shares).

  • Example: AWS S3 buckets set to public by default, leading to data leaks.

4. Debug Mode Enabled in Production

  • Web applications/frameworks (e.g., Django, Flask) sometimes run in debug mode by default, exposing sensitive data.

5. Directory Listing Enabled

  • Web servers (e.g., Apache, Nginx) may allow directory traversal, exposing files unintentionally.

6. Unpatched or Outdated Default Software

  • Some systems ship with old, vulnerable software versions (e.g., outdated PHP, WordPress plugins).

7. Default Cryptographic Keys/Certificates

  • Devices (e.g., routers, IoT) sometimes use hardcoded encryption keys, making decryption easy for attackers.

8. Cloud Misconfigurations

  • Example:

    • Publicly accessible Kubernetes dashboards.

    • Overprivileged IAM roles in AWS/Azure.

    • Unencrypted storage (e.g., databases/blobs set to public).

9. Unsecured APIs

  • APIs with no authentication, exposed admin endpoints, or excessive data exposure by default.

10. Lack of Logging/Monitoring

  • Many systems do not log security events by default, allowing attackers to operate undetected.

Real-World Exploits Due to Misconfigurations

  • MongoDB ransomware attacks (databases left exposed without authentication).

  • Citrix ADC (CVE-2019-19781) – Default settings allowed remote code execution.

  • Elasticsearch data leaks – No authentication enabled by default.

How to Prevent Misconfiguration Vulnerabilities?

Change default credentials immediately. ✔ Disable unnecessary services/ports. ✔ Follow least-privilege principles (restrict permissions). ✔ Enable security features (encryption, logging, WAFs). ✔ Regularly audit configurations (using tools like Nessus, OpenVAS, AWS Config).

Last updated