Konu
:
Insecure Deserialization Zafiyeti
20-12-2020, 23:21:11
#0
Quantaism
Açık Profil bilgileri
Özel Mesaj Gönder
Quantaism tarafından gönderilen tüm mesajları bul
Quantaism'ı arkadaş olarak ekle
Selamlar herkese, sizlere web aplikasyonlarında oluşabilecek kritik bir zafiyet olan
insecure deserialization
'dan bahsedeceğim. Nasıl çalıştığını anlatmadan önce ne olduğu ile başlayalım. Insecure deserialization zafiyeti, bir web aplikasyonunda bulunan herhangi bir objenin manipüle edilip varolan context'lere enjekte edilmesi ile gerçekleştirilen bir saldırı çeşitidir. Bu web aplikasyonunda manipüle edilmiş objenin serileştirilip çalıştırılması durumunda
SQL injection
,
DoS
(
Denial of Service
),
RCI
(
Remote Code Execution
) gibi kötü sonuçlar oluşabilmektedir. Ek olarak bu zafiyet
OWASP 10 zafiyetleri
listesinde uzun bir süre yer almıştır.
Yukarıda da gördünüz bu
serialization / deserialization
mevzusundan bahsedeyim sizlere. Bir object yani nesnenin saklanacak veya gönderileceği türe dönüştürülmesine serialization denir. Deserialization'u da bu işlemin ters hali diye düşünebilirsiniz. Genellikle bu veriler
xml, json, yaml
gibi türlere dönüştürülür serialization işlemlerinde. Aslında bu işlemler çok masum ve sorun çıkarmayacak gibi gözükse de içinde bir şeytan yattığını bu konu ile görmüş olacağız.
Örnek olarak bu zafiyetten faydalanarak aşağıda bulunan python komutunu girdiğimizde bulunduğumuz dizindeki dosyaları görebiliriz. Tabiki bu bir
RCI
oluyor.
Kod:
!!python/object/apply.os.system
args:['ls']
Konuyu görselleştirilmiş bir şekilde daha da iyi anlayabilmek açısından portswigger'deki abilerin paylaşmış olduğu görseli inceleyebilirsiniz;
Nasıl tespit edeceğiz bunu bana onu söyle kardeşim dediğinizi düşünüyorum. Hemen onu da anlatayım sizlere.
Deserialization işlemlerinin kontrollerini gerçekleştirerek
Monitoring
programları aracılığıyla bu işlemleri inceleyerek
En önemlisi ise belirli periyodlarla olması gerektiği gibi güvenlik testleri gerçekleştirerek
Zafiyeti en basit düzeyde anladığımızı var sayıyorum. Peki kardeşim biz bu zafiyetin oluşmasını nasıl önleyebiliriz? Maddelere ayırmak gerekirse aşağıdaki gibidir;
Güvenilmeyen kaynaklardan herhangi bir serialized objeleri kabul etmeyerek
Güvenlik sorunları oluşturmaması açısından bu objelerin, nesnelerin
checksum
(dijital imza) değerlerini kontrol ederek
Verilen kod parçacığı yani script'i fazla yetkisi(
privilege
) bulunmayan ortamlarda izole edip çalıştırarak
Yukarıda bulunan maddeyi baz alarak herhangi bir privilege esclation durumunun yaşanmaması için kullanılan servislerin sürümlerini kontrol ederek
Gerçekleştirilen işlemlerin log kayıtlarını tutarak
Network monitoring
işlemlerinin yanında kısıtlamalar getirerek
Tabiki
firewall
kullanarak
Senaryo Örneği
Bir forumumuz olduğunu düşünelim.
İstihbarat ekibi benden şüphelenecek mi acep?
Bu forumda kullanıcı bilgilerini tutabilmek ve cookie olarak kaydedebilmek için php object serialization gerçekleştirildiğini farz edelim. Bu cookie'ler aşağıdaki gibi değiştirildiği taktirde saldırgan arkadaş admin yetkilerine sahip olabilmektedir.
Öncesi
Kod:
a:4:{i:0;i:132;i:1;s:7:"x4807";i:2;s:4:"user";
i:3;s:32:"p9a0b3bea89ke0n05622f1f3c68ac460";}
Sonrası
Kod:
a:4:{i:0;i:1;i:1;s:5:"Arsenik";i:2;s:5:"admin";i
:3;s:32:"p9a0b3bea89ke0n05622f1f3c68ac460";}
Örnek amaçlıdır inşallah alınmaz kendisi .) Ek olarak cookie gerçek değil boşuna denemeyin.
Örnek bir senaryo verdiğimize göre sıra geçmişe dönmekte.2017 yılında gerçekleştirilen Equifax saldırısı... Milyonlarca kişinin kişisel verisi bu saldırı ile sızdırılmıştı. Saldırının Apache'de bulunan Struts zafiyeti nedeniyle olduğu düşünülmekte. Bu zafiyetin de insecure deserialization tabanlı olduğu görülmüştür.
CVE-2017-5638
Birkaç HackerOne Insecure Desiralization Rapor Örneği
Aşağıda bulunan h1 raporlarını incelemeniz de konuyu anlamanız açısından önem taşımaktadır.
1)
https://hackerone.com/reports/350401
2)
https://hackerone.com/reports/838196
3)
https://hackerone.com/reports/350418
4)
https://hackerone.com/reports/562335
Son olarak ek bilgiler vermem gerekir ise şunları söyleyebilirim;
OWASP 10 listesinde bulunan
expliotibility
puanlaması 1 olan tek zafiyettir yani en zorudur.
Saldırganlar için tespiti zordur
İleri seviye bir zafiyettir
İlgi ve alakanız için teşekkürler, iyi forumlar dilerim