Bypass FS protections: read-only / no-exec / Distroless
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)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-e70bceed6fa35760d025f037a78106ab025a68cd%252Fimage%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=2b0cf76f&sv=1)
Eğer hacking kariyeri ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Lehçe yazılı ve sözlü gereklidir).
Videolar
Aşağıdaki videolarda bu sayfada bahsedilen teknikleri daha derinlemesine bulabilirsiniz:
yalnızca okunur / çalıştırma yok senaryosu
Yalnızca okunur (ro) dosya sistemi koruması ile monte edilmiş linux makineleri bulmak giderek daha yaygın hale geliyor, özellikle konteynerlerde. Bunun nedeni, ro dosya sistemi ile bir konteyner çalıştırmanın readOnlyRootFilesystem: true
ayarını securitycontext
içinde ayarlamak kadar kolay olmasıdır:
Ancak, dosya sistemi ro olarak monte edilmiş olsa bile, /dev/shm
hala yazılabilir olacak, bu yüzden diske hiçbir şey yazamayacağımız yalan. Ancak, bu klasör çalıştırma yok koruması ile monte edilecektir, bu nedenle burada bir ikili dosya indirirseniz onu çalıştıramayacaksınız.
Kırmızı takım perspektifinden, bu, sistemde zaten olmayan ikili dosyaları indirmeyi ve çalıştırmayı zorlaştırıyor (örneğin arka kapılar veya kubectl
gibi sayıcılar).
En Kolay Aşma: Scriptler
İkili dosyalardan bahsettiğimi unutmayın, eğer yorumlayıcı makine içinde mevcutsa, herhangi bir scripti çalıştırabilirsiniz, örneğin sh
mevcutsa bir shell scripti veya python
yüklüyse bir python scripti.
Ancak, bu yalnızca ikili arka kapınızı veya çalıştırmanız gereken diğer ikili araçları çalıştırmak için yeterli değildir.
Bellek Aşmaları
Bir ikili dosyayı çalıştırmak istiyorsanız ancak dosya sistemi buna izin vermiyorsa, bunu bellekten çalıştırarak yapmak en iyi yoldur, çünkü korumalar burada geçerli değildir.
FD + exec syscall aşması
Makine içinde bazı güçlü script motorlarına sahipseniz, örneğin Python, Perl veya Ruby, ikili dosyayı belleğe indirmek, bir bellek dosya tanımlayıcısında (create_memfd
syscall) saklamak, bu korumalardan etkilenmeyecek ve ardından exec
syscall çağrısı yaparak çalıştırılacak dosya olarak fd'yi belirtmek mümkündür.
Bunun için fileless-elf-exec projesini kolayca kullanabilirsiniz. Bir ikili dosya geçirebilir ve belirtilen dilde, ikili dosya sıkıştırılmış ve b64 kodlanmış olarak, decode ve decompress talimatları ile birlikte bir fd oluşturacak şekilde bir script üretecektir.
Bu, PHP veya Node gibi diğer script dillerinde çalışmaz çünkü bunların scriptten ham syscall'leri çağırmanın herhangi bir varsayılan yolu yoktur, bu nedenle ikili dosyayı saklamak için bellek fd oluşturmak için create_memfd
çağrısı yapmak mümkün değildir.
Ayrıca, /dev/shm
içinde bir dosya ile normal bir fd oluşturmak işe yaramaz, çünkü çalıştırma yok koruması uygulanacağı için bunu çalıştırmanıza izin verilmeyecektir.
DDexec / EverythingExec
DDexec / EverythingExec tekniği, kendi sürecinizin belleğini /proc/self/mem
üzerinden yazma ile değiştirmenizi sağlar.
Bu nedenle, sürecin yürüttüğü assembly kodunu kontrol ederek, bir shellcode yazabilir ve süreci "mutasyona uğratarak" herhangi bir keyfi kodu çalıştırabilirsiniz.
DDexec / EverythingExec, kendi shellcode veya herhangi bir ikili dosyayı bellekten yükleyip çalıştırmanıza olanak tanır.
For more information about this technique check the Github or:
DDexec / EverythingExecMemExec
Memexec DDexec'in doğal bir sonraki adımıdır. Farklı bir ikili dosya çalıştırmak istediğinizde DDexec'i yeniden başlatmanıza gerek yoktur, sadece memexec shellcode'u DDexec tekniği aracılığıyla çalıştırabilir ve ardından yeni ikili dosyaları yüklemek ve çalıştırmak için bu demon ile iletişim kurabilirsiniz.
Memexec'i bir PHP ters shell'den ikili dosyaları çalıştırmak için nasıl kullanacağınızla ilgili bir örneği https://github.com/arget13/memexec/blob/main/a.php adresinde bulabilirsiniz.
Memdlopen
DDexec ile benzer bir amaca sahip olan memdlopen tekniği, ikili dosyaları hafızaya yüklemenin daha kolay bir yolunu sağlar. Hatta bağımlılıkları olan ikili dosyaları yüklemeye bile izin verebilir.
Distroless Bypass
Distroless nedir
Distroless konteynerler yalnızca belirli bir uygulama veya hizmeti çalıştırmak için gerekli olan en az bileşenleri içerir, örneğin kütüphaneler ve çalışma zamanı bağımlılıkları, ancak paket yöneticisi, shell veya sistem yardımcı programları gibi daha büyük bileşenleri hariç tutar.
Distroless konteynerlerin amacı, gereksiz bileşenleri ortadan kaldırarak konteynerlerin saldırı yüzeyini azaltmak ve istismar edilebilecek zafiyet sayısını en aza indirmektir.
Ters Shell
Bir distroless konteynerde normal bir shell almak için sh
veya bash
bile bulamayabilirsiniz. Ayrıca ls
, whoami
, id
gibi ikili dosyaları da bulamayacaksınız... genellikle bir sistemde çalıştırdığınız her şey.
Bu nedenle, ters shell almanız veya sistemi listelemeniz mümkün olmayacak.
Ancak, eğer ele geçirilmiş konteyner örneğin bir flask web çalıştırıyorsa, o zaman python yüklüdür ve bu nedenle bir Python ters shell alabilirsiniz. Eğer node çalıştırıyorsa, bir Node rev shell alabilirsiniz ve çoğu betik dili için aynı durum geçerlidir.
Betik dilini kullanarak sistemi listeleyebilirsiniz.
Eğer read-only/no-exec
korumaları yoksa, ters shell'inizi kullanarak dosya sistemine ikili dosyalarınızı yazabilir ve çalıştırabilirsiniz.
Ancak, bu tür konteynerlerde bu korumalar genellikle mevcut olacaktır, ancak önceki bellek yürütme tekniklerini kullanarak bunları aşabilirsiniz.
Bazı RCE zafiyetlerini istismar ederek betik dillerinden ters shell'ler almak ve hafızadan ikili dosyaları çalıştırmak için nasıl yapılacağına dair örnekleri https://github.com/carlospolop/DistrolessRCE adresinde bulabilirsiniz.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2815339644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FKXYG6TIGtXXE4WZnfup9%252Fuploads%252Fgit-blob-e70bceed6fa35760d025f037a78106ab025a68cd%252Fimage%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=2b0cf76f&sv=1)
Eğer hack kariyeri ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı lehçe yazılı ve sözlü gereklidir).
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)
Last updated