AWS - WAF Enum
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
AWS WAF, web uygulamalarını veya API'leri çeşitli web istismarlarına karşı korumak için tasarlanmış bir web uygulama güvenlik duvarıdır. Kullanıcılara, SQL enjeksiyonu veya çapraz site betikleme gibi tipik saldırı vektörlerini azaltan güvenlik kuralları belirleyerek gelen trafiği kontrol etme imkanı sunar ve ayrıca özel filtreleme kuralları tanımlayarak bunu yapar.
Web ACL, web uygulamalarınıza veya API'lerinize uygulayabileceğiniz bir kural koleksiyonudur. Bir Web ACL'yi bir kaynakla ilişkilendirdiğinizde, AWS WAF, Web ACL'de tanımlanan kurallara göre gelen istekleri inceler ve belirtilen eylemleri gerçekleştirir.
Kural Grubu, birden fazla Web ACL'ye uygulayabileceğiniz yeniden kullanılabilir bir kural koleksiyonudur. Kural grupları, farklı web uygulamaları veya API'ler arasında tutarlı kural setlerini yönetmeye ve sürdürmeye yardımcı olur.
Her kural grubunun ilişkili bir kapasitesi vardır; bu, kurallarınızı, kural gruplarınızı ve web ACL'lerinizi çalıştırmak için kullanılan işletim kaynaklarını hesaplamaya ve kontrol etmeye yardımcı olur. Oluşturma sırasında değeri belirlendikten sonra, değiştirilmesi mümkün değildir.
Bir kural, AWS WAF'ın gelen web isteklerini incelemek için kullandığı bir dizi koşulu tanımlar. İki ana kural türü vardır:
Düzenli Kural: Bu kural türü, web isteklerini kabul etme, engelleme veya sayma kararını vermek için belirli koşulları kullanır.
Oran Tabanlı Kural: Belirli bir IP adresinden gelen istekleri beş dakikalık bir süre içinde sayar. Burada, kullanıcılar bir eşik tanımlar ve bir IP'den gelen istek sayısı bu sınırı beş dakika içinde aşarsa, o IP'den gelen sonraki istekler, istek oranı eşik altına düşene kadar engellenir. Oran tabanlı kurallar için minimum eşik 2000 istektir.
AWS WAF, AWS ve AWS Marketplace satıcıları tarafından yönetilen önceden yapılandırılmış kural setleri sunar. Bu kural setleri, yaygın tehditlere karşı koruma sağlar ve yeni güvenlik açıklarını ele almak için düzenli olarak güncellenir.
IP Seti, izin vermek veya engellemek istediğiniz IP adresleri veya IP adresi aralıklarının bir listesidir. IP setleri, IP tabanlı kuralları yönetme sürecini basitleştirir.
Regex Desen Seti, web isteklerinde aramak için desenleri tanımlayan bir veya daha fazla düzenli ifade (regex) içerir. Bu, belirli karakter dizilerini filtrelemek gibi daha karmaşık eşleştirme senaryoları için yararlıdır.
Kilit Tokeni, WAF kaynaklarını güncellerken eşzamanlılık kontrolü için kullanılır. Bu, değişikliklerin aynı kaynağı güncellemeye çalışan birden fazla kullanıcı veya işlem tarafından yanlışlıkla üzerine yazılmadığından emin olur.
AWS WAF'daki API Anahtarları, belirli API işlemlerine yapılan istekleri kimlik doğrulamak için kullanılır. Bu anahtarlar şifrelenir ve erişimi kontrol etmek ve yalnızca yetkili kullanıcıların WAF yapılandırmalarında değişiklik yapmasını sağlamak için güvenli bir şekilde yönetilir.
Örnek: CAPTCHA API'sinin entegrasyonu.
İzin Politikası, AWS WAF kaynakları üzerinde hangi eylemlerin gerçekleştirilebileceğini belirten bir IAM politikasını ifade eder. İzinleri tanımlayarak, WAF kaynaklarına erişimi kontrol edebilir ve yalnızca yetkili kullanıcıların yapılandırmaları oluşturmasını, güncellemesini veya silmesini sağlayabilirsiniz.
AWS WAF'daki kapsam parametresi, WAF kurallarının ve yapılandırmalarının bölgesel bir uygulamaya veya bir Amazon CloudFront dağıtımına uygulanıp uygulanmadığını belirtir.
BÖLGESEL: Uygulama Yük Dengeleyicileri (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, Amazon Cognito kullanıcı havuzu, AWS App Runner hizmeti ve AWS Doğrulanmış Erişim örneği gibi bölgesel hizmetlere uygulanır. Bu kaynakların bulunduğu AWS bölgesini belirtirsiniz.
CLOUDFRONT: Amazon CloudFront dağıtımlarına uygulanır, bu dağıtımlar küreseldir. CloudFront için WAF yapılandırmaları, içeriğin nerede sunulduğuna bakılmaksızın us-east-1
bölgesi üzerinden yönetilir.
Koşullar, AWS WAF'ın izlediği gelen HTTP/HTTPS isteklerinin unsurlarını belirtir; bunlar arasında XSS, coğrafi konum (GEO), IP adresleri, Boyut kısıtlamaları, SQL Enjeksiyonu ve desenler (dize ve regex eşleştirme) bulunur. Ülkeye dayalı olarak CloudFront seviyesinde kısıtlanan isteklerin WAF'a ulaşmayacağını belirtmek önemlidir.
Her AWS hesabı şunları yapılandırabilir:
Her tür için 100 koşul (Regex için yalnızca 10 koşul izin verilir, ancak bu sınır artırılabilir).
100 kural ve 50 Web ACL.
En fazla 5 oran tabanlı kural.
Uygulama yük dengeleyicisi ile WAF uygulandığında saniyede 10,000 istek throughput'u.
Eylemler, her kurala atanır ve seçenekler şunlardır:
İzin Ver: İstek, uygun CloudFront dağıtımına veya Uygulama Yük Dengeleyicisine iletilir.
Engelle: İstek hemen sonlandırılır.
Say: Kuralın koşullarını karşılayan istekleri sayar. Bu, kural testleri için yararlıdır, kuralın doğruluğunu onaylamak için İzin Ver veya Engelle olarak ayarlamadan önce.
CAPTCHA ve Zorluk: İsteğin bir bot tarafından gelmediği, CAPTCHA bulmacaları ve sessiz zorluklar kullanılarak doğrulanır.
Eğer bir istek Web ACL içindeki hiçbir kuralla eşleşmiyorsa, varsayılan eylem (İzin Ver veya Engelle) uygulanır. Bir Web ACL içinde tanımlanan kural yürütme sırası kritik öneme sahiptir ve genellikle şu sırayı takip eder:
Beyaz listeye alınmış IP'leri izin ver.
Kara listeye alınmış IP'leri engelle.
Zararlı imzalara uyan istekleri engelle.
AWS WAF, izleme için CloudWatch ile entegre olur ve AllowedRequests, BlockedRequests, CountedRequests ve PassedRequests gibi metrikler sunar. Bu metrikler varsayılan olarak her dakika raporlanır ve iki hafta boyunca saklanır.
CloudFront dağıtımlarıyla etkileşimde bulunmak için, US East (N. Virginia) Bölgesini belirtmelisiniz:
CLI - CloudFront kapsamını kullanırken US East Bölgesini belirtin: --scope CLOUDFRONT --region=us-east-1
.
API ve SDK'lar - Tüm çağrılar için, us-east-1 Bölge uç noktasını kullanın.
Bölgesel hizmetlerle etkileşimde bulunmak için, bölgeyi belirtmelisiniz:
Bölge Avrupa (İspanya) ile örnek: --scope REGIONAL --region=eu-south-2
Saldırganın perspektifinden, bu hizmet saldırgana WAF korumalarını ve diğer web sitelerini tehlikeye atmasına yardımcı olabilecek ağ açıklarını tanımlamasında yardımcı olabilir.
Ancak, bir saldırgan bu hizmeti kesintiye uğratmakla da ilgilenebilir, böylece web siteleri WAF tarafından korunmaz.
Silme ve Güncelleme işlemlerinin çoğunda lock token sağlamak gerekli olacaktır. Bu token, kaynaklar üzerinde eşzamanlılık kontrolü için kullanılır ve değişikliklerin birden fazla kullanıcı veya işlemin aynı kaynağı güncellemeye çalışırken kazara üzerine yazılmasını önler. Bu token'ı elde etmek için belirli kaynak üzerinde ilgili list veya get işlemlerini gerçekleştirebilirsiniz.
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
Bir saldırgan, etkilenen kaynağın güvenliğini tehlikeye atabilir:
Örneğin, meşru IP adreslerinden gelen meşru trafiği engelleyebilecek kural grupları oluşturarak, hizmet reddine neden olabilir.
Kural gruplarını güncelleyerek, örneğin Block'tan Allow'a eylemlerini değiştirebilir.
Kritik güvenlik önlemleri sağlayan kural gruplarını silerek.
Aşağıdaki örnekler, belirli IP adreslerinden gelen meşru trafiği engelleyecek bir kural grubunu göstermektedir:
rule.json dosyası şöyle görünecektir:
Potansiyel Etki: Yetkisiz erişim, veri ihlalleri ve potansiyel DoS saldırıları.
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
Bu izinlerle, bir saldırgan şunları yapabilir:
Yeni bir Web ACL oluşturmak, kötü niyetli trafiği geçiren veya meşru trafiği engelleyen kurallar ekleyerek WAF'ı etkisiz hale getirmek veya hizmet reddine neden olmak.
Mevcut Web ACL'leri güncellemek, daha önce engellenmiş SQL enjeksiyonu veya çapraz site betikleme gibi saldırılara izin verecek şekilde kuralları değiştirmek veya geçerli istekleri engelleyerek normal trafik akışını bozmak.
Bir Web ACL'yi silmek, etkilenen kaynakları tamamen korumasız bırakmak ve geniş bir web saldırısı yelpazesine maruz bırakmak.
Belirtilen WebACL'yi yalnızca ManagedByFirewallManager false ise silebilirsiniz.
Aşağıdaki örnekler, belirli bir IP kümesinden gelen meşru trafiği engellemek için bir Web ACL'sini nasıl güncelleyeceğinizi göstermektedir. Eğer kaynak IP bu IP'lerden hiçbiriyle eşleşmiyorsa, varsayılan eylem de onu engellemek olacaktır ve bu bir DoS'a neden olabilir.
Orijinal Web ACL:
Web ACL'yi güncellemek için komut:
rule.json dosyası şöyle görünecektir:
Potansiyel Etki: Yetkisiz erişim, veri ihlalleri ve potansiyel DoS saldırıları.
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
wafv2:AssociateWebACL
izni, bir saldırganın web ACL'lerini (Erişim Kontrol Listeleri) kaynaklarla ilişkilendirmesine izin vererek, güvenlik kontrollerini atlatmasına, yetkisiz trafiğin uygulamaya ulaşmasına olanak tanıyabilir; bu da SQL enjeksiyonu veya çapraz site betikleme (XSS) gibi istismarlarla sonuçlanabilir. Tersine, wafv2:DisassociateWebACL
izni ile saldırgan, güvenlik korumalarını geçici olarak devre dışı bırakabilir ve kaynakları tespit edilmeden zafiyetlere maruz bırakabilir.
Korunan kaynak türüne bağlı olarak ek izinler gerekecektir:
İlişkilendir
apigateway:SetWebACL
apprunner:AssociateWebAcl
appsync:SetWebACL
cognito-idp:AssociateWebACL
ec2:AssociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Ayrıştır
apigateway:SetWebACL
apprunner:DisassociateWebAcl
appsync:SetWebACL
cognito-idp:DisassociateWebACL
ec2:DisassociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Potansiyel Etki: Kompromize olmuş kaynak güvenliği, istismar riski artışı ve AWS WAF ile korunan AWS ortamlarında potansiyel hizmet kesintileri.
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
Bir saldırgan, AWS WAF tarafından yönetilen IP setlerini oluşturma, güncelleme ve silme yeteneğine sahip olacaktır. Bu tehlikeli olabilir çünkü kötü niyetli trafiğe izin vermek için yeni IP setleri oluşturabilir, meşru trafiği engellemek için IP setlerini değiştirebilir, mevcut IP setlerini kötü niyetli IP adreslerini içerecek şekilde güncelleyebilir, güvenilir IP adreslerini kaldırabilir veya kritik kaynakları korumak için tasarlanmış kritik IP setlerini silebilir.
Aşağıdaki örnek, istenen IP seti ile mevcut IP setini nasıl geçersiz kılacağınızı göstermektedir:
Potansiyel Etki: Yetkisiz erişim ve meşru trafiğin engellenmesi.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
Bu izinlere sahip bir saldırgan, belirli desenlere dayalı olarak gelen trafiği kontrol etmek ve filtrelemek için AWS WAF tarafından kullanılan düzenli ifade desen setlerini manipüle edebilir.
Yeni regex desenleri oluşturmak, bir saldırgana zararlı içeriği kabul ettirebilir
Mevcut desenleri güncelleyerek, bir saldırgan güvenlik kurallarını atlatabilir
Kötü niyetli faaliyetleri engellemek için tasarlanmış desenleri silmek, bir saldırgana zararlı yükler göndermesine ve güvenlik önlemlerini atlatmasına yol açabilir.
Olası Etki: Güvenlik kontrollerini aşmak, kötü niyetli içeriğe izin vermek ve potansiyel olarak hassas verileri açığa çıkarmak veya AWS WAF tarafından korunan hizmetleri ve kaynakları kesintiye uğratmak.
wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
wafv2:DeleteLoggingConfiguration
iznine sahip bir saldırgan, belirtilen Web ACL'den günlükleme yapılandırmasını kaldırabilir. Ardından, wavf2:PutLoggingConfiguration
ve iam:CreateServiceLinkedRole
izinleri ile bir saldırgan, günlükleme yapılandırmalarını oluşturabilir veya değiştirebilir (silindikten sonra) ya tamamen günlüklemeyi engellemek ya da günlükleri yetkisiz hedeflere, örneğin Amazon S3 bucket'larına, Amazon CloudWatch Logs günlük grubuna veya kontrol altındaki bir Amazon Kinesis Data Firehose'a yönlendirmek için.
Oluşturma süreci sırasında, hizmet, belirtilen günlükleme hedefine günlüklerin yazılmasına izin vermek için gerekli izinleri otomatik olarak ayarlar:
Amazon CloudWatch Logs: AWS WAF, belirlenen CloudWatch Logs günlük grubunda bir kaynak politikası oluşturur. Bu politika, AWS WAF'ın günlük grubuna günlük yazmak için gereken izinlere sahip olmasını sağlar.
Amazon S3 Bucket: AWS WAF, belirlenen S3 bucket'ında bir bucket politikası oluşturur. Bu politika, AWS WAF'a belirtilen bucket'a günlük yüklemek için gerekli izinleri verir.
Amazon Kinesis Data Firehose: AWS WAF, Kinesis Data Firehose ile etkileşimde bulunmak için özel olarak bir hizmet bağlantılı rol oluşturur. Bu rol, AWS WAF'ın yapılandırılmış Firehose akışına günlükleri iletmesine olanak tanır.
Her web ACL için yalnızca bir günlükleme hedefi tanımlamak mümkündür.
Potansiyel Etki: Güvenlik olaylarına dair belirsiz görünürlük, olay yanıt sürecini zorlaştırır ve AWS WAF ile korunan ortamlarda gizli kötü niyetli faaliyetleri kolaylaştırır.
wafv2:DeleteAPIKey
Bu izinlere sahip bir saldırgan, mevcut API anahtarlarını silebilir, bu da CAPTCHA'nın etkisiz hale gelmesine ve form gönderimleri ve erişim kontrolleri gibi buna bağlı işlevlerin kesintiye uğramasına neden olur. Bu CAPTCHA'nın uygulanmasına bağlı olarak, bu ya bir CAPTCHA atlatmasına ya da kaynakta hata yönetimi düzgün ayarlanmamışsa bir DoS'a yol açabilir.
Potansiyel Etki: CAPTCHA korumalarını devre dışı bırakma veya uygulama işlevselliğini bozma, güvenlik ihlallerine ve potansiyel veri hırsızlığına yol açabilir.
wafv2:TagResource
, wafv2:UntagResource
Bir saldırgan, AWS WAFv2 kaynaklarından, Web ACL'leri, kural grupları, IP setleri, regex desen setleri ve günlükleme yapılandırmaları gibi etiketler ekleyebilir, değiştirebilir veya kaldırabilir.
Potansiyel Etki: Kaynak manipülasyonu, bilgi sızıntısı, maliyet manipülasyonu ve operasyonel kesinti.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)