eCPPTv3-PTP-Notes
HomeGitHubPortfolioTwitter/XMediumCont@ct
  • 📝eCPPT / PTP - Notes
    • eCPPTv3
      • 1️⃣1 - Resource Development & Initial Access
        • 1.1 - PowerShell for Pentesters
        • 1.2 - Client-Side Attacks
          • 1.2.1 - System/Host Based Attacks
            • 1.2.1.1 Windows Vulnerabilities
          • 1.2.2 - The Metasploit Framework (MSF)
            • 1.2.2.1 MSF Introduction
            • 1.2.2.2 Information Gathering & Enumeration
            • 1.2.2.3 Vulnerability Scanning
            • 1.2.2.4 Client-Side Attacks
            • 1.2.2.5 Post Exploitation
            • 1.2.2.6 Armitage
          • 1.2.3 Exploitation
          • 1.2.4 Social Engineering
      • 2️⃣2 - Web Application Penetration Testing
        • 2.1 - Web App Concepts
          • 2.1.1 HTTP/S Protocol
          • 2.1.2 Encoding
          • 2.1.3 Same Origin
          • 2.1.4 Cookies
          • 2.1.5 Session
          • 2.1.6 Web App Proxies
        • 2.2 - Information Gathering
          • 2.2.1 Gathering Information on Your Targets
          • 2.2.2 Infrastructure
          • 2.2.3 Fingerprinting Frameworks and Applications
          • 2.2.4 Fingerprinting Custom Applications
          • 2.2.5 Enumerating Resources
          • 2.2.6 Information Disclosure Through Misconfiguration
          • 2.2.7 Google Hacking
          • 2.2.8 Shodan HQ
        • 2.3 - Cross Site Scripting
          • 2.3.1 XSS Anatomy
          • 2.3.2 Reflected XSS
          • 2.3.3 Stored XSS
          • 2.3.4 DOM-Based XSS
          • 2.3.5 Identifying & Exploiting XSS with XSSer
        • 2.4 - SQL Injection
          • 2.4.1 Introduction to SQL Injection
          • 2.4.2 Finding SQL Injection
          • 2.4.3 Exploiting In-Band SQL Injection
          • 2.4.4 Exploiting Error-Based SQL Injection
          • 2.4.5 Exploiting Blind SQL Injection
          • 2.4.6 SQLMap
          • 2.4.7 Mitigation Strategies
          • 2.4.8 From SQLi to Server Takeover
        • 2.5 - Other Common Web Attacks
          • 2.5.1 Session Attacks
          • 2.5.2 CSRF
          • 2.5.3 File and Resource Attacks
      • 3️⃣3 - Network Security
        • 3.1 Network Based Attacks
        • 3.2 Linux Vulnerabilities
        • 3.3 - Exploitation
          • 3.3.1 Linux Exploitation
      • 4️⃣4 - Exploit Development
        • 4.1 Architecture Foundamentals
        • 4.2 Assemblers and Tools
        • 4.3 Buffer Overflow
        • 4.4 Cryptography
        • 4.5 Malware
        • 4.6 Shellcoding
      • 5️⃣5 - Post-Exploitation
        • 5.1 Linux Post-Exploitation
        • 5.2 - Linux Privilege Escalation
          • 5.2.1 Kernel Exploitation
          • 5.2.2 SUID Exploitation
          • 5.2.3 CronJobs
        • 5.3 - Post Expolitation / Pivoting
          • 5.3.1 Pivoting Guidelines
          • 5.3.2 Pivoting Example (3 Targets)
      • 6️⃣6 - ​Red Teaming
        • 6.1 - Active Directory Penetration Testing
          • 6.1.1 Introduction to Active Directory (AD)
            • 6.1.1.1 Users, Groups & Computers
            • 6.1.1.2 Organizational Units (OUs)
            • 6.1.1.3 Trees, Forest & Trust
          • 6.1.2 AD Authentication
          • 6.1.3 AD Penetration Testing Methodology
        • 6.1.4 AD Enumeration
        • 6.1.5 AD Privilege Escalation
        • 6.1.6 AD Lateral Movement
        • 6.1.7 AD Persistence
        • 6.2 - Command & Control (C2/C&C)
    • eCPPTv2
      • 1️⃣1 - ​System Security
        • 1.1 Architecture Foundamentals
        • 1.2 Assemblers and Tools
        • 1.3 Buffer Overflow
        • 1.4 Cryptography
        • 1.5 Malware
        • 1.6 Shellcoding
      • 2️⃣2 - Network Security
        • 2.1 System/Host Based Attacks
          • 2.1.1 Windows Vulnerabilities
        • 2.2 Network Based Attacks
        • 2.3 The Metasploit Framework (MSF)
          • MSF Introduction
          • Information Gathering & Enumeration
          • Vulnerability Scanning
          • Client-Side Attacks
          • Post Exploitation
          • Armitage
        • 2.4 Exploitation
        • 2.5 - Post Expolitation / Pivoting
          • 2.5.1 Pivoting Guidelines
          • 2.5.2 Pivoting Example (3 Targets)
        • 2.6 Social Engineering
      • 3️⃣3 - PowerShell for PT
        • 3.1 PowerShell
      • 4️⃣4 - Linux Exploitation
        • 4.1 Linux Vulnerabilities
        • 4.2 Linux Exploitation
        • 4.3 Linux Post-Exploitation
        • 4.4 Linux Privilege Escalation
          • 4.4.1 Kernel Exploitation
          • 4.4.2 SUID Exploitation
          • 4.4.3 CronJobs
      • 5️⃣5 - Web App Security
        • 5.1 - Web App Concepts
          • 5.1.1 HTTP/S Protocol
          • 5.1.2 Encoding
          • 5.1.3 Same Origin
          • 5.1.4 Cookies
          • 5.1.5 Session
          • 5.1.6 Web App Proxies
        • 5.2 - Information Gathering
          • 5.2.1 Gathering Information on Your Targets
          • 5.2.2 Infrastructure
          • 5.2.3 Fingerprinting Frameworks and Applications
          • 5.2.4 Fingerprinting Custom Applications
          • 5.2.5 Enumerating Resources
          • 5.2.6 Information Disclosure Through Misconfiguration
          • 5.2.7 Google Hacking
          • 5.2.8 Shodan HQ
        • 5.3 - Cross Site Scripting
          • 5.3.1 XSS Anatomy
          • 5.3.2 Reflected XSS
          • 5.3.3 Stored XSS
          • 5.3.4 DOM-Based XSS
          • 5.3.5 Identifying & Exploiting XSS with XSSer
        • 5.4 - SQL Injection
          • 5.4.1 Introduction to SQL Injection
          • 5.4.2 Finding SQL Injection
          • 5.4.3 Exploiting In-Band SQL Injection
          • 5.4.4 Exploiting Error-Based SQL Injection
          • 5.4.5 Exploiting Blind SQL Injection
          • 5.4.6 SQLMap
          • 5.4.7 Mitigation Strategies
          • 5.4.8 From SQLi to Server Takeover
        • 5.5 - Other Common Web Attacks
          • 5.5.1 Session Attacks
          • 5.5.2 CSRF
      • 6️⃣6 - ​Wi-Fi Security
        • 6.1 Traffic Analysis
      • 7️⃣7 - ​Metasploit & Ruby
        • 7.1 Metasploit
      • 📄Report
        • How to write a PT Report
  • 🛣️RoadMap & My Experience
  • 📔eCPPT Cheat Sheet
Powered by GitBook
On this page
  • Same Origin Policy (SOP)
  • Origin Definition
  • What Does SOP Protect From?
  • How SOP Works
  • Exceptions
  1. eCPPT / PTP - Notes
  2. eCPPTv3
  3. 2 - Web Application Penetration Testing
  4. 2.1 - Web App Concepts

2.1.3 Same Origin

Same Origin Policy (SOP)

One of the most crucial aspects of web application security is the Same Origin Policy (SOP), which prevents a script or document from accessing or modifying properties of another document from a different origin. Notably, CSS stylesheets, images, and scripts are exceptions, as browsers load them without consulting the SOP.

Origin Definition

The SOP considers three components when defining an origin:

  • Protocol (e.g., http)

  • Host (e.g., www.elsptp.site with the Top Level Domain as site, Second Level Domain as elsptp, and Third Level Domain as www)

  • Port (e.g., 80)

Examples illustrating SOP compliance:

  • http://els.ptp.site/admin/index.php → ✓ (Same protocol, host, and port)

  • https://els.ptp.site/index.php → ✗ (Different protocol)

  • http://els.ptp.site/index.php:8080 → ✗ (Different port)

  • http://www.els.ptp.site/index.php → ✗ (Different host)

Noteworthy: Internet Explorer deviates slightly from other browsers, not considering the port in SOP and exempting highly trusted zone domains from SOP application.

What Does SOP Protect From?

SOP safeguards against cross-origin requests initiated by client-side scripts, preventing potential security threats, such as capturing personal information.

How SOP Works

The SOP rule is simple: "A document can access the properties of another document through JavaScript only if they have the same origin." Browsers execute requests but return responses to the user only if SOP is respected. Images, stylesheets, and JavaScript files are exceptions, always accessible regardless of origin.

Examples

Example 1:

  • Document on domain a.elsptp.site attempts to access a page on domain b.elsptp.site via an Ajax request.

  • Result: Access denied due to different origins.

Example 2:

  • Two documents, main document (index.html) and iframe document (iframe.html), both on http://www.elsptp.site.

  • JavaScript interactions are successful due to the same origin.

  • If the iframe points to http://www.mybank.bank, JavaScript fails due to different origins.

These examples highlight how SOP sets boundaries for many client-side attacks.

Exceptions

Several exceptions exist to SOP restrictions:

  1. Window.location: Documents can write the location property of another document.

  2. Document.domain: Describes the domain part of the origin and can be changed within certain constraints.

  3. Cross-window messaging: Allows communication between different documents.

  4. Cross-Origin Resource Sharing (CORS): Permits access to resources by bypassing SOP, using custom HTTP headers.

Window.location

  • Documents can write the location property of another document, allowing for redirection.

  • Examples demonstrate how documents with relationships (e.g., iframes, window.open) can change each other's location.

Document.domain

  • The document.domain property describes the domain part of the origin and can be changed within certain constraints.

  • Example: Changing document.domain to a higher level in the domain hierarchy allows documents to have the same origin.

Cross Window Messaging

  • HTML5 introduces Cross Window Messaging, enabling communication between different documents.

Cross Origin Resource Sharing (CORS)

  • CORS allows browsers to access resources across different origins, bypassing SOP.

  • Detailed coverage of CORS is reserved for the HTML5 module.

Previous2.1.2 EncodingNext2.1.4 Cookies
📝
2️⃣