Docker Güvenliği
Reading time: 16 minutes
tip
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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Temel Docker Motoru Güvenliği
Docker motoru, konteynerleri izole etmek için Linux çekirdeğinin Namespaces ve Cgroups özelliklerini kullanarak temel bir güvenlik katmanı sunar. Ek koruma, Capabilities dropping, Seccomp ve SELinux/AppArmor ile sağlanarak konteyner izolasyonunu artırır. Bir auth plugin kullanıcı eylemlerini daha da kısıtlayabilir.
Docker Motoruna Güvenli Erişim
Docker motoruna, yerel olarak bir Unix soketi üzerinden veya uzaktan HTTP kullanarak erişilebilir. Uzaktan erişim için, gizliliği, bütünlüğü ve kimlik doğrulamayı sağlamak amacıyla HTTPS ve TLS kullanmak önemlidir.
Docker motoru, varsayılan olarak unix:///var/run/docker.sock
adresindeki Unix soketinde dinler. Ubuntu sistemlerinde, Docker'ın başlangıç seçenekleri /etc/default/docker
dosyasında tanımlanmıştır. Docker API'sine ve istemcisine uzaktan erişimi etkinleştirmek için, Docker daemon'unu bir HTTP soketi üzerinden açmak amacıyla aşağıdaki ayarları ekleyin:
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart
Ancak, Docker daemon'ını HTTP üzerinden açmak güvenlik endişeleri nedeniyle önerilmez. Bağlantıları HTTPS kullanarak güvence altına almak tavsiye edilir. Bağlantıyı güvence altına almanın iki ana yaklaşımı vardır:
- İstemci, sunucunun kimliğini doğrular.
- Hem istemci hem de sunucu, birbirlerinin kimliğini karşılıklı olarak doğrular.
Sunucunun kimliğini doğrulamak için sertifikalar kullanılır. Her iki yöntem için ayrıntılı örnekler için bu kılavuza bakın.
Konteyner Görsellerinin Güvenliği
Konteyner görselleri özel veya genel depolarda saklanabilir. Docker, konteyner görselleri için birkaç depolama seçeneği sunar:
- Docker Hub: Docker'dan bir genel kayıt hizmeti.
- Docker Registry: Kullanıcıların kendi kayıtlarını barındırmalarına olanak tanıyan açık kaynaklı bir proje.
- Docker Trusted Registry: Rol tabanlı kullanıcı kimlik doğrulaması ve LDAP dizin hizmetleri ile entegrasyon sunan Docker'ın ticari kayıt teklifi.
Görsel Tarama
Konteynerler, ya temel görsel nedeniyle ya da temel görselin üzerine yüklenen yazılım nedeniyle güvenlik açıklarına sahip olabilir. Docker, konteynerlerin güvenlik taramasını yapan ve açıkları listeleyen Nautilus adlı bir proje üzerinde çalışmaktadır. Nautilus, her konteyner görsel katmanını güvenlik açıkları deposu ile karşılaştırarak güvenlik açıklarını tanımlar.
Daha fazla bilgi için bunu okuyun.
docker scan
docker scan
komutu, mevcut Docker görsellerini görsel adı veya kimliği kullanarak taramanıza olanak tanır. Örneğin, hello-world görselini taramak için aşağıdaki komutu çalıştırın:
docker scan hello-world
Testing hello-world...
Organization: docker-desktop-test
Package manager: linux
Project name: docker-image|hello-world
Docker image: hello-world
Licenses: enabled
✓ Tested 0 dependencies for known issues, no vulnerable paths found.
Note that we do not currently have vulnerability data for your image.
trivy -q -f json <container_name>:<tag>
snyk container test <image> --json-file-output=<output file> --severity-threshold=high
clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
Docker Image Signing
Docker imaj imzalama, konteynerlerde kullanılan imajların güvenliğini ve bütünlüğünü sağlar. İşte kısaca bir açıklama:
- Docker Content Trust, imaj imzalamayı yönetmek için The Update Framework (TUF) tabanlı Notary projesini kullanır. Daha fazla bilgi için Notary ve TUF sayfalarına bakın.
- Docker içerik güvenini etkinleştirmek için
export DOCKER_CONTENT_TRUST=1
ayarını yapın. Bu özellik, Docker sürüm 1.10 ve sonrasında varsayılan olarak kapalıdır. - Bu özellik etkinleştirildiğinde, yalnızca imzalı imajlar indirilebilir. İlk imaj yüklemesi, kök ve etiketleme anahtarları için şifre belirlemeyi gerektirir; Docker ayrıca artırılmış güvenlik için Yubikey'i destekler. Daha fazla ayrıntı burada bulunabilir.
- İçerik güveni etkinken imzasız bir imaj çekmeye çalışmak, "No trust data for latest" hatasına yol açar.
- İlk imaj yüklemesinden sonraki imaj yüklemeleri için, Docker imajı imzalamak üzere depo anahtarının şifresini ister.
Özel anahtarlarınızı yedeklemek için şu komutu kullanın:
tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private
Docker ana bilgisayarlarını değiştirirken, işlemleri sürdürmek için kök ve depo anahtarlarını taşımak gereklidir.
Konteyner Güvenlik Özellikleri
Konteyner Güvenlik Özelliklerinin Özeti
Ana Süreç İzolasyon Özellikleri
Konteynerleştirilmiş ortamlarda, projeleri ve bunların süreçlerini izole etmek güvenlik ve kaynak yönetimi için çok önemlidir. İşte ana kavramların basitleştirilmiş bir açıklaması:
Ad Alanları
- Amaç: Süreçler, ağ ve dosya sistemleri gibi kaynakların izolasyonunu sağlamak. Özellikle Docker'da, ad alanları bir konteynerin süreçlerini ana bilgisayardan ve diğer konteynerlerden ayrı tutar.
unshare
Kullanımı: Yeni ad alanları oluşturmak içinunshare
komutu (veya temel sistem çağrısı) kullanılır, bu da ek bir izolasyon katmanı sağlar. Ancak, Kubernetes bunu doğrudan engellemese de, Docker engeller.- Sınırlama: Yeni ad alanları oluşturmak, bir sürecin ana bilgisayarın varsayılan ad alanlarına geri dönmesine izin vermez. Ana bilgisayar ad alanlarına girmek için genellikle ana bilgisayarın
/proc
dizinine erişim gereklidir ve giriş içinnsenter
kullanılır.
Kontrol Grupları (CGroups)
- Fonksiyon: Öncelikle süreçler arasında kaynak tahsis etmek için kullanılır.
- Güvenlik Boyutu: CGruplar kendileri izolasyon güvenliği sunmaz, yalnızca yanlış yapılandırıldığında yetkisiz erişim için istismar edilebilecek
release_agent
özelliği vardır.
Yetenek Düşürme
- Önemi: Süreç izolasyonu için kritik bir güvenlik özelliğidir.
- Fonksiyonalite: Belirli yetenekleri düşürerek bir kök sürecin gerçekleştirebileceği eylemleri kısıtlar. Bir süreç kök ayrıcalıklarıyla çalışsa bile, gerekli yeteneklere sahip olmaması, ayrıcalıklı eylemleri gerçekleştirmesini engeller, çünkü sistem çağrıları yetersiz izinler nedeniyle başarısız olur.
Bunlar, süreç diğerlerini düşürdükten sonra kalan yeteneklerdir:
Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep
Seccomp
Docker'da varsayılan olarak etkinleştirilmiştir. Bu, süreçlerin çağırabileceği syscalls'ı daha da sınırlamaya yardımcı olur.
Varsayılan Docker Seccomp profili https://github.com/moby/moby/blob/master/profiles/seccomp/default.json adresinde bulunabilir.
AppArmor
Docker'ı etkinleştirebileceğiniz bir şablon vardır: https://github.com/moby/moby/tree/master/profiles/apparmor
Bu, yetenekleri, syscalls'ı, dosyalara ve klasörlere erişimi azaltmanıza olanak tanır...
Namespaces
Namespaces, çekirdek kaynaklarını bölümlere ayıran Linux çekirdek özelliğidir; böylece bir süreç seti bir kaynak setini görürken, diğer bir süreç seti farklı bir kaynak setini görür. Bu özellik, bir kaynak ve süreç seti için aynı namespace'e sahip olarak çalışır, ancak bu namespace'ler farklı kaynaklara atıfta bulunur. Kaynaklar birden fazla alanda var olabilir.
Docker, konteyner izolasyonu sağlamak için aşağıdaki Linux çekirdek Namespaces'ını kullanır:
- pid namespace
- mount namespace
- network namespace
- ipc namespace
- UTS namespace
Namespaces hakkında daha fazla bilgi için aşağıdaki sayfayı kontrol edin:
cgroups
Linux çekirdek özelliği cgroups, bir dizi süreç arasında cpu, bellek, io, ağ bant genişliği gibi kaynakları kısıtlama yeteneği sağlar. Docker, belirli bir Konteyner için kaynak kontrolü sağlayan cgroup özelliğini kullanarak Konteynerler oluşturmanıza olanak tanır.
Aşağıda, kullanıcı alanı belleği 500m ile sınırlı, çekirdek belleği 50m ile sınırlı, cpu payı 512, blkioweight 400 olan bir Konteyner oluşturulmuştur. CPU payı, Konteyner’in CPU kullanımını kontrol eden bir orandır. Varsayılan değeri 1024'tür ve 0 ile 1024 arasında bir aralığı vardır. Üç Konteyner 1024 CPU payına sahipse, her Konteyner CPU kaynak rekabeti durumunda %33'e kadar CPU alabilir. blkio-weight, Konteyner’in IO'sunu kontrol eden bir orandır. Varsayılan değeri 500'dür ve 10 ile 1000 arasında bir aralığı vardır.
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
Bir konteynerin cgroup'unu almak için şunları yapabilirsiniz:
docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian container
ps -ef | grep 1234 #Get info about the sleep process
ls -l /proc/<PID>/ns #Get the Group and the namespaces (some may be uniq to the hosts and some may be shred with it)
Daha fazla bilgi için kontrol edin:
Yetenekler
Yetenekler, root kullanıcısı için izin verilebilecek yetenekler üzerinde daha ince bir kontrol sağlar. Docker, bir konteyner içinde yapılabilecek işlemleri sınırlamak için Linux çekirdek yetenek özelliğini kullanır, kullanıcı türünden bağımsız olarak.
Bir docker konteyneri çalıştırıldığında, işlem, izolasyondan kaçmak için kullanabileceği hassas yetenekleri bırakır. Bu, işlemin hassas eylemleri gerçekleştiremeyeceğini ve kaçamayacağını sağlamaya çalışır:
Docker'da Seccomp
Bu, Docker'ın konteyner içinde kullanılabilecek sistem çağrılarını sınırlamasına olanak tanıyan bir güvenlik özelliğidir:
Docker'da AppArmor
AppArmor, konteynerleri sınırlı bir kaynak setine per-program profilleri ile hapsetmek için bir çekirdek geliştirmesidir.:
Docker'da SELinux
- Etiketleme Sistemi: SELinux, her işleme ve dosya sistemi nesnesine benzersiz bir etiket atar.
- Politika Uygulaması: Bir işlem etiketinin sistem içindeki diğer etiketler üzerinde hangi eylemleri gerçekleştirebileceğini tanımlayan güvenlik politikalarını uygular.
- Konteyner İşlem Etiketleri: Konteyner motorları konteyner işlemlerini başlattığında, genellikle sınırlı bir SELinux etiketi, yaygın olarak
container_t
atanır. - Konteyner İçindeki Dosya Etiketleme: Konteyner içindeki dosyalar genellikle
container_file_t
olarak etiketlenir. - Politika Kuralları: SELinux politikası esasen
container_t
etiketine sahip işlemlerin yalnızcacontainer_file_t
olarak etiketlenmiş dosyalarla etkileşimde bulunmasını sağlar.
Bu mekanizma, bir konteyner içindeki bir işlem tehlikeye girse bile, yalnızca karşılık gelen etiketlere sahip nesnelerle etkileşimde bulunmakla sınırlı kalmasını sağlar ve bu tür tehlikelerin potansiyel zararını önemli ölçüde sınırlar.
AuthZ & AuthN
Docker'da, bir yetkilendirme eklentisi, Docker daemon'una yapılan istekleri kabul etme veya engelleme kararında kritik bir rol oynar. Bu karar, iki ana bağlamı inceleyerek verilir:
- Kimlik Doğrulama Bağlamı: Bu, kullanıcının kim olduğu ve kendini nasıl kimlik doğruladığı gibi kapsamlı bilgileri içerir.
- Komut Bağlamı: Bu, yapılan istekle ilgili tüm ilgili verileri içerir.
Bu bağlamlar, yalnızca kimlik doğrulaması yapılmış kullanıcıların meşru isteklerinin işlenmesini sağlamaya yardımcı olur ve Docker işlemlerinin güvenliğini artırır.
AuthZ& AuthN - Docker Access Authorization Plugin
Bir konteynerden DoS
Eğer bir konteynerin kullanabileceği kaynakları düzgün bir şekilde sınırlamıyorsanız, tehlikeye giren bir konteyner, çalıştığı ana makineyi DoS yapabilir.
- CPU DoS
# stress-ng
sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t 5m
# While loop
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
- Bant Genişliği DoS
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
İlginç Docker Bayrakları
--privileged bayrağı
Aşağıdaki sayfada --privileged
bayrağının ne anlama geldiğini öğrenebilirsiniz:
--security-opt
no-new-privileges
Eğer bir saldırganın düşük ayrıcalıklı bir kullanıcı olarak erişim sağladığı bir konteyner çalıştırıyorsanız. Eğer yanlış yapılandırılmış bir suid ikili dosyanız varsa, saldırgan bunu kötüye kullanabilir ve konteyner içinde ayrıcalıkları artırabilir. Bu, onun oradan kaçmasına izin verebilir.
Konteyneri no-new-privileges
seçeneği etkinleştirilmiş olarak çalıştırmak, bu tür ayrıcalık artışını önleyecektir.
docker run -it --security-opt=no-new-privileges:true nonewpriv
Diğer
#You can manually add/drop capabilities with
--cap-add
--cap-drop
# You can manually disable seccomp in docker with
--security-opt seccomp=unconfined
# You can manually disable seccomp in docker with
--security-opt apparmor=unconfined
# You can manually disable selinux in docker with
--security-opt label:disable
Daha fazla --security-opt
seçeneği için kontrol edin: https://docs.docker.com/engine/reference/run/#security-configuration
Diğer Güvenlik Dikkate Alınması Gerekenler
Gizli Bilgilerin Yönetimi: En İyi Uygulamalar
Gizli bilgileri doğrudan Docker imajlarına gömmekten veya ortam değişkenleri kullanmaktan kaçınmak çok önemlidir, çünkü bu yöntemler hassas bilgilerinizi docker inspect
veya exec
gibi komutlar aracılığıyla konteynıra erişimi olan herkesin erişimine açar.
Docker hacimleri, hassas bilgilere erişim için önerilen daha güvenli bir alternatiftir. Bunlar, docker inspect
ve günlükleme ile ilişkili riskleri azaltarak, bellek içinde geçici bir dosya sistemi olarak kullanılabilir. Ancak, kök kullanıcılar ve konteynıra exec
erişimi olanlar yine de gizli bilgilere erişebilir.
Docker gizli bilgileri, hassas bilgileri yönetmek için daha güvenli bir yöntem sunar. İmaj oluşturma aşamasında gizli bilgilere ihtiyaç duyan örnekler için, BuildKit yapı zamanı gizli bilgileri destekleyen verimli bir çözüm sunarak, yapı hızını artırır ve ek özellikler sağlar.
BuildKit'i kullanmak için üç şekilde etkinleştirilebilir:
- Bir ortam değişkeni aracılığıyla:
export DOCKER_BUILDKIT=1
- Komutları önekleyerek:
DOCKER_BUILDKIT=1 docker build .
- Docker yapılandırmasında varsayılan olarak etkinleştirerek:
{ "features": { "buildkit": true } }
, ardından Docker'ı yeniden başlatarak.
BuildKit, --secret
seçeneği ile yapı zamanı gizli bilgilerin kullanılmasına olanak tanır ve bu gizli bilgilerin imaj oluşturma önbelleğine veya nihai imaja dahil edilmemesini sağlar, şu komutla:
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
Çalışan bir konteynerde gereken gizli bilgiler için, Docker Compose ve Kubernetes sağlam çözümler sunar. Docker Compose, gizli dosyaları belirtmek için hizmet tanımında bir secrets
anahtarı kullanır; bu, bir docker-compose.yml
örneğinde gösterilmiştir:
version: "3.7"
services:
my_service:
image: centos:7
entrypoint: "cat /run/secrets/my_secret"
secrets:
- my_secret
secrets:
my_secret:
file: ./my_secret_file.txt
Bu yapılandırma, Docker Compose ile hizmetleri başlatırken gizli bilgilerin kullanılmasına olanak tanır.
Kubernetes ortamlarında, gizli bilgiler yerel olarak desteklenir ve Helm-Secrets gibi araçlarla daha fazla yönetilebilir. Kubernetes'in Rol Tabanlı Erişim Kontrolleri (RBAC), gizli bilgi yönetimi güvenliğini artırır, Docker Enterprise'a benzer şekilde.
gVisor
gVisor, Go dilinde yazılmış bir uygulama çekirdeğidir ve Linux sistem yüzeyinin önemli bir kısmını uygular. Uygulama ile ana makine çekirdeği arasında izolasyon sınırı sağlayan runsc
adlı bir Open Container Initiative (OCI) çalışma zamanı içerir. runsc
çalışma zamanı, Docker ve Kubernetes ile entegre olup, kumanda altındaki konteynerleri çalıştırmayı basit hale getirir.
GitHub - google/gvisor: Application Kernel for Containers
Kata Containers
Kata Containers, hafif sanal makinelerle güvenli bir konteyner çalışma zamanı oluşturmak için çalışan açık kaynak topluluğudur. Bu sanal makineler, konteynerler gibi hissettiren ve performans gösteren, ancak donanım sanallaştırması teknolojisini ikinci bir savunma katmanı olarak kullanarak daha güçlü iş yükü izolasyonu sağlayan bir yapıdır.
Kata Containers - Open Source Container Runtime Software | Kata Containers
Özet İpuçları
--privileged
bayrağını kullanmayın veya Docker soketini konteyner içinde monte etmeyin. Docker soketi, konteynerlerin başlatılmasına izin verir, bu nedenle ana makinenin tam kontrolünü ele geçirmenin kolay bir yoludur; örneğin,--privileged
bayrağı ile başka bir konteyner çalıştırarak.- Konteyner içinde root olarak çalışmayın. Farklı bir kullanıcı kullanın ve kullanıcı ad alanları. Konteynerdeki root, kullanıcı ad alanları ile yeniden haritalanmadıkça ana makinedeki ile aynıdır. Sadece, esasen, Linux ad alanları, yetenekler ve cgroups tarafından hafifçe kısıtlanmıştır.
- Tüm yetenekleri kaldırın (
--cap-drop=all
) ve yalnızca gerekli olanları etkinleştirin (--cap-add=...
). Birçok iş yükü herhangi bir yetenek gerektirmez ve bunları eklemek, potansiyel bir saldırının kapsamını artırır. - “no-new-privileges” güvenlik seçeneğini kullanın sürecin daha fazla yetki kazanmasını önlemek için, örneğin suid ikili dosyaları aracılığıyla.
- Konteynere sunulan kaynakları sınırlayın. Kaynak sınırları, makineyi hizmet reddi saldırılarından koruyabilir.
- Kısıtlamaları en aza indirmek için seccomp, AppArmor (veya SELinux) profillerini ayarlayın.
- Resmi docker imajlarını kullanın ve imza gerektirin veya bunlara dayanarak kendi imajınızı oluşturun. Arka kapılı imajları miras almayın veya kullanmayın. Ayrıca, root anahtarlarını ve şifreleri güvenli bir yerde saklayın. Docker, anahtarları UCP ile yönetmeyi planlıyor.
- Düzenli olarak imajlarınızı yeniden oluşturun güvenlik yamalarını ana makineye ve imajlara uygulamak için.
- Gizli bilgilerinizi akıllıca yönetin böylece saldırganların bunlara erişmesi zor olur.
- Eğer docker daemon'ı açığa çıkarıyorsanız HTTPS kullanın istemci ve sunucu kimlik doğrulaması ile.
- Dockerfile'ınızda, ADD yerine COPY'yi tercih edin. ADD, otomatik olarak sıkıştırılmış dosyaları çıkarır ve URL'lerden dosya kopyalayabilir. COPY bu yeteneklere sahip değildir. Mümkün olduğunda, uzaktan URL'ler ve Zip dosyaları aracılığıyla saldırılara maruz kalmamak için ADD kullanmaktan kaçının.
- Her mikro hizmet için ayrı konteynerler oluşturun.
- Konteyner içinde ssh bulundurmayın, "docker exec" kullanılarak konteynere ssh yapılabilir.
- Daha küçük konteyner imajlarına sahip olun.
Docker Breakout / Yetki Yükseltme
Eğer bir docker konteynerinin içindeyseniz veya docker grubunda bir kullanıcıya erişiminiz varsa, kaçmayı ve yetkileri yükseltmeyi deneyebilirsiniz:
Docker Breakout / Privilege Escalation
Docker Kimlik Doğrulama Eklentisi Atlatma
Eğer docker soketine erişiminiz varsa veya docker grubunda bir kullanıcıya erişiminiz varsa ancak eylemleriniz bir docker kimlik doğrulama eklentisi tarafından kısıtlanıyorsa, bunu atlatıp atlatamayacağınıza bakın:
AuthZ& AuthN - Docker Access Authorization Plugin
Docker'ı Güçlendirme
- docker-bench-security aracı, üretimde Docker konteynerlerini dağıtma ile ilgili birçok yaygın en iyi uygulamayı kontrol eden bir betiktir. Testler tamamen otomatik olup, CIS Docker Benchmark v1.3.1 temel alınarak yapılmaktadır.
Aracı, docker'ı çalıştıran ana makineden veya yeterli yetkiye sahip bir konteynerden çalıştırmalısınız. README'de nasıl çalıştırılacağını öğrenin: https://github.com/docker/docker-bench-security.
Referanslar
- https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/
- https://twitter.com/_fel1x/status/1151487051986087936
- https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html
- https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/
- https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/
- https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/
- https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/
- https://en.wikipedia.org/wiki/Linux_namespaces
- https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57
- https://www.redhat.com/sysadmin/privileged-flag-container-engines
- https://docs.docker.com/engine/extend/plugins_authorization
- https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57
- https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/
tip
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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.