Site Hackleme Rehberi #4

Pytang

Katılımcı Üye
18 Eki 2014
317
327
subdomain
GyUig8.gif


Merhaba arkadaşlar forumda çok fazla “Site nasıl hacklenir” Tarzında konular açılıyor sizlere rehber olmak adına bu konuyu hazırlıyoruz, bu konumuzda sizlere RCE (Remote Code Execution) yani uzaktan kod çalıştırmayı anlatacağız.

#Remote Code Execution Nedir?

Uzaktan kod yürütme (RCE), bir saldırganın başka bir cihazda uzaktan komut çalıştırabildiği bir siber saldırıdır.

RCE'ler genellikle ana bilgisayar tarafından indirilen kötü amaçlı kötü amaçlı yazılımlar nedeniyle oluşur ve cihazın coğrafi konumundan bağımsız olarak gerçekleşebilir.

Uzaktan kod yürütme çeşitli biçimlerde olabilir ancak temel düzeyde RCE, bir aracının hedeflenen bir makine veya sistemde rastgele kod çalıştırmak için bir güvenlik açığından yararlanabileceği süreci ifade eder.

87r659m.png



RCE bazen hiç beklenmeyen yerlerde çıkabilmektedir. Çok geniş bir açıktır.

- LFI zafiyeti bazı durumlarda RCE zafiyetine,
- SQL injection zafiyeti bazı durumlarda RCE zafiyetine dönüşebilir.
- OOB zafiyeti bazı durumlarda RCE zafiyetine dönüşebilir.




rgux5g4.png

#RCE Önekleri

Bu açığı birde farklı örnekler üzerinden anlamaya çalışalım.

#1. Örnek

Her kullanıcı için dinamik olarak değişken isimlerinin oluşturulmasını isteyebilir ve kullanıcılara ait kayıt tarihlerini depoluyor olabilirsiniz. PHP’de bunu aşağıdaki kodla yapmak mümkün:

eval("\$$user = '$regdate');

Kullanıcı adı, genel olarak kullanıcılar tarafından kontrol edilen bir girdi olduğundan, saldırgan aşağıdaki gibi yeni bir isim üretebilir:

x = 'y';phpinfo();//

Sonuç olarak PHP kodu şu hali alır:

$x = 'y';phpinfo();// = '2016';


Görüldüğü üzere değişken x olarak çağırıldı ve y değerini aldı. Saldırgan bu değeri değişkene atayabildikten sonra noktalı virgül ";" kullanarak yeni bir komut başlatabilir hale geldi. Böylelikle string’in geri kalanını derleme dışında bırakabilir ve bunun sonucunda herhangi bir söz dizimi hatası da almaz. Kodu çalıştırdığındaysa sayfada phpinfo çıktısı gösterilir. Bunun sadece PHP’de değil girdiyi evaluate eden fonksiyonların bulunduğu tüm dillerde meydana gelebileceğini unutmamak gerekir.

#2. Örnek (Stored RCE)

?language=de

Yukarıdaki girdi daha sonra konfigürasyon dosyasına $lan = ‘de’; şeklinde yansıtılır. Bir saldırgan dil parametresini şu şekilde değiştirirse:

de';phpinfo()//

Yukarıdaki kod dosyada şu hali alır:

$lan = 'de';phpinfo()//';

Son olarak konfigürasyon dosyası web uygulamasına eklendiğinde yukarıdaki kod yürütülecektir. Bu da saldırganlara istedikleri komutu çalıştırma imkanı sunar.

#3. Örnek

Şimdi göstereceğim örnek TryHackMe'de bulunan DogCat adlı bir CTF'e aittir. Göstereceğim örnekte LFI açığı üzerinden ulaşılan bir RCE yi anlatıyor.

Yaptığımız araştırmalarn sonunda sitenin bize "
ext" değişkeni iletmemize izin verdiğini anlıyoruz, nasıl bu bilgiye ulaştığımızı detaylı anlamak istiyorsanız DogCat WriteUp konusuna göz atabilirsiniz. Günlüğün, Mozilla Firefox kullandığımızıda kaydettiğini görüyoruz.

Bu nedenle, ana php dosyasıyla birlikte çalıştırılacak olan User-Agent başlığımıza bir php kodu enjekte edip edemeyeceğimizi kontrol ediyoruz. Bunu tekrar tekrar test etmek için BurpSuite Repeater kullanabiliriz. TurkHackTeam yazarak deniyorum ve işe yaradı.


mpxvk4b.PNG


Şimdi cmd değişkeninde bir komut iletilecek ve onu çalıştıracak web shell benzeri bir yaklaşım deneyeceğiz.

system($_GET['cmd']);

lqmtgs6.png


Sistemde cmd üzerinde "ls" komutunu çalıştırdık ve bulunduğumuz dizindeki dosyaların neler olduğunu görüntüleyebildik, bundan sonra yapacaklarınız size kalmış isterseniz bir reverse shell açarak makineye girebilir ve dosyalara erişebilirsiniz.

rgux5g4.png


#RCE Saldırıları Nasıl Önlenir?

RCE saldırıları çok karmaşıktır ve ağ güvenlik açıkları sıklıkla gelişmiştir ve bu alandaki son gelişmelerin sağladığı gibi yeni istismar fırsatları yaratılmıştır. Bununla birlikte, kuruluşlar tarafından ağlarını saldırılara karşı korumak için önleyici adımlar atılabilir.

- İşletim sistemleri ve üçüncü taraf yazılımların her zaman güncellenmesi gerekir.
- Siber Tehdit İstihbaratı platformu, RCE saldırılarını daha gerçekleşmeden önlemek için bir zorunluluktur.
- Özel karakterleri veya işlev adlarını kara listeye almayı deneyin.
- Güvenli dosya yüklemeleri için güvenli uygulamaları kullanın.
- Kullandığınız yazılımda komut çalıştırma fonksiyonlarını (shell_exec, exec gibi) kullanmayınız.
- php.ini düzenlenmesi yaparak komut çalıştırma fonksiyonlarını kapatın.
- WAF kullanın.


rgux5g4.png

#Yardımcı Olabilecek Videolar

RCE'yi daha kapsamlı bir şekilde öğrenmek isterseniz aşağıda bulunan videoları izleyebilirsiniz. Umarım size birşeyler katabilmişizdir okuduğunuz için teşekkürler.



rgux5g4.png


#Hazırlayanlar
@TaoLao
@Pytang
@The Serum
 

GECEGEZEN

Saldırı Timleri Danışmanı
13 Şub 2016
2,519
1,339
Elinize sağlık. Rce kritik bir zaafiyet. Kesinlikle üzerinde durulmalı.
 
30 Kas 2021
122
56
root@wortex
GyUig8.gif


Merhaba arkadaşlar forumda çok fazla “Site nasıl hacklenir” Tarzında konular açılıyor sizlere rehber olmak adına bu konuyu hazırlıyoruz, bu konumuzda sizlere RCE (Remote Code Execution) yani uzaktan kod çalıştırmayı anlatacağız.

#Remote Code Execution Nedir?

Uzaktan kod yürütme (RCE), bir saldırganın başka bir cihazda uzaktan komut çalıştırabildiği bir siber saldırıdır.

RCE'ler genellikle ana bilgisayar tarafından indirilen kötü amaçlı kötü amaçlı yazılımlar nedeniyle oluşur ve cihazın coğrafi konumundan bağımsız olarak gerçekleşebilir.

Uzaktan kod yürütme çeşitli biçimlerde olabilir ancak temel düzeyde RCE, bir aracının hedeflenen bir makine veya sistemde rastgele kod çalıştırmak için bir güvenlik açığından yararlanabileceği süreci ifade eder.

87r659m.png



RCE bazen hiç beklenmeyen yerlerde çıkabilmektedir. Çok geniş bir açıktır.

- LFI zafiyeti bazı durumlarda RCE zafiyetine,
- SQL injection zafiyeti bazı durumlarda RCE zafiyetine dönüşebilir.
- OOB zafiyeti bazı durumlarda RCE zafiyetine dönüşebilir.




rgux5g4.png

#RCE Önekleri

Bu açığı birde farklı örnekler üzerinden anlamaya çalışalım.

#1. Örnek

Her kullanıcı için dinamik olarak değişken isimlerinin oluşturulmasını isteyebilir ve kullanıcılara ait kayıt tarihlerini depoluyor olabilirsiniz. PHP’de bunu aşağıdaki kodla yapmak mümkün:

eval("\$$user = '$regdate');

Kullanıcı adı, genel olarak kullanıcılar tarafından kontrol edilen bir girdi olduğundan, saldırgan aşağıdaki gibi yeni bir isim üretebilir:

x = 'y';phpinfo();//

Sonuç olarak PHP kodu şu hali alır:

$x = 'y';phpinfo();// = '2016';


Görüldüğü üzere değişken x olarak çağırıldı ve y değerini aldı. Saldırgan bu değeri değişkene atayabildikten sonra noktalı virgül ";" kullanarak yeni bir komut başlatabilir hale geldi. Böylelikle string’in geri kalanını derleme dışında bırakabilir ve bunun sonucunda herhangi bir söz dizimi hatası da almaz. Kodu çalıştırdığındaysa sayfada phpinfo çıktısı gösterilir. Bunun sadece PHP’de değil girdiyi evaluate eden fonksiyonların bulunduğu tüm dillerde meydana gelebileceğini unutmamak gerekir.

#2. Örnek (Stored RCE)

?language=de

Yukarıdaki girdi daha sonra konfigürasyon dosyasına $lan = ‘de’; şeklinde yansıtılır. Bir saldırgan dil parametresini şu şekilde değiştirirse:

de';phpinfo()//

Yukarıdaki kod dosyada şu hali alır:

$lan = 'de';phpinfo()//';

Son olarak konfigürasyon dosyası web uygulamasına eklendiğinde yukarıdaki kod yürütülecektir. Bu da saldırganlara istedikleri komutu çalıştırma imkanı sunar.

#3. Örnek

Şimdi göstereceğim örnek TryHackMe'de bulunan DogCat adlı bir CTF'e aittir. Göstereceğim örnekte LFI açığı üzerinden ulaşılan bir RCE yi anlatıyor.

Yaptığımız araştırmalarn sonunda sitenin bize "
ext" değişkeni iletmemize izin verdiğini anlıyoruz, nasıl bu bilgiye ulaştığımızı detaylı anlamak istiyorsanız DogCat WriteUp konusuna göz atabilirsiniz. Günlüğün, Mozilla Firefox kullandığımızıda kaydettiğini görüyoruz.

Bu nedenle, ana php dosyasıyla birlikte çalıştırılacak olan User-Agent başlığımıza bir php kodu enjekte edip edemeyeceğimizi kontrol ediyoruz. Bunu tekrar tekrar test etmek için BurpSuite Repeater kullanabiliriz. TurkHackTeam yazarak deniyorum ve işe yaradı.


mpxvk4b.PNG


Şimdi cmd değişkeninde bir komut iletilecek ve onu çalıştıracak web shell benzeri bir yaklaşım deneyeceğiz.

system($_GET['cmd']);

lqmtgs6.png


Sistemde cmd üzerinde "ls" komutunu çalıştırdık ve bulunduğumuz dizindeki dosyaların neler olduğunu görüntüleyebildik, bundan sonra yapacaklarınız size kalmış isterseniz bir reverse shell açarak makineye girebilir ve dosyalara erişebilirsiniz.

rgux5g4.png


#RCE Saldırıları Nasıl Önlenir?

RCE saldırıları çok karmaşıktır ve ağ güvenlik açıkları sıklıkla gelişmiştir ve bu alandaki son gelişmelerin sağladığı gibi yeni istismar fırsatları yaratılmıştır. Bununla birlikte, kuruluşlar tarafından ağlarını saldırılara karşı korumak için önleyici adımlar atılabilir.

- İşletim sistemleri ve üçüncü taraf yazılımların her zaman güncellenmesi gerekir.
- Siber Tehdit İstihbaratı platformu, RCE saldırılarını daha gerçekleşmeden önlemek için bir zorunluluktur.
- Özel karakterleri veya işlev adlarını kara listeye almayı deneyin.
- Güvenli dosya yüklemeleri için güvenli uygulamaları kullanın.
- Kullandığınız yazılımda komut çalıştırma fonksiyonlarını (shell_exec, exec gibi) kullanmayınız.
- php.ini düzenlenmesi yaparak komut çalıştırma fonksiyonlarını kapatın.
- WAF kullanın.


rgux5g4.png

#Yardımcı Olabilecek Videolar

RCE'yi daha kapsamlı bir şekilde öğrenmek isterseniz aşağıda bulunan videoları izleyebilirsiniz. Umarım size birşeyler katabilmişizdir okuduğunuz için teşekkürler.



rgux5g4.png


#Hazırlayanlar
@TaoLao
@Pytang
@The Serum
elinize sağlık hocam <3
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.