Siber Güvenlik | Web Reverse Shell Nedir ?

'pump

Uzman üye
9 Ara 2022
1,452
3,205
Ağ Kablolarında Geziyor
Merhabalar herkese bu gün ' Siber Güvenliğin ' ' Web SHELL ' konusunu ele alıcam , konuyu hem teorik hem uygulamalı olarak anlatıcam, shell nedir yenir mi nasıl kullanılır nasıl yazılır diye soranların hepsine hem teorik bilgi , hem de uygulamalı bilgi vermek üzere 2 şekilde ilerliyeceğiz ama öncelikle şunu bilin ki , Siber Güvenlikde bazı birkaç konular vardır, sadece onu öğrenerek bir şeyler yaparsın, ama bu konu öyle değil , bu konuyu çorap söküğü sözüne benzetebilirim , çünkü elimizde bir shell var ise bunu upload etmek için , belli bir web zafiyetlerine hakim olmak gerekiyor. Ama bu konuda sadece yaptıklarımı adım adım yaparak , enazından fikir sahibi olucaksınız. Ve bu konuda sadece "Shell " konusunu öğrenmiceksiniz ekstra linuxda bazı araçların kullanımını da öğreniceksiniz , haydi öyleyse fazla konuşmadan hemen konuya geçelim.

Arkadaşlar aranızda yaptıklarımı yapmak isteyen kişiler / kitle vardır diye düşünerek onlardan ricam konunun en başından , şimdiden "
METASPLOİT TABLE2" makinesini indirmeniz. Bunu sonradan söylemek istemedim teorik olarak konuyu bitirinceye kadar. bilgisayarınıza kurabilirsiniz.
NOT: Username : msfadmin passwd: msfadmin xd

Herneyse arkadaşlar öncelikle ilk başlığımız bu shell nedir yenir mi diyerek girelim...



f8l1281.png



SHELL Nedir
Shell, bildiğim kadarıyla Linux ve Unix işletim sistemi kullanıcılarının komut satırı arayüzlerini kontrol etmelerini sağlayan bir bilgisayar programıdır aslında, Zaten aranızda Linux kullanan var ise bazılarımızda terminal , bazılarımızda shell olarak yazar, kimimizde ise kabuk, bu noktaya takılmanıza gerek yok özünde 3 ü de aynı şeyden bahsediyor.
8e922746146a91d153b10f72a4a3b1488ada13a2.jpeg


Shell, kullanıcıların işletim sistemleriyle verimli ve doğrudan iletişim kurmasını sağlar. Bu nedenle de son derece önemlidir , ve zaten Linux gibi çekirdek sistemi dağıtımlarda shell kullanmak o İşletim Sistemini kullanmanın %70'dir diyebilirim, Shell kullanmayı bilmiyorsak Kullanıdığımız işletim sistemini tam verimli şekilde kullanamayız. Bu yüzden komut satırını öğrenmek gerekiyor , ve arkadaşlar, tüm Linux dağıtımları Linux Çekirdek sistemini kullanıyor diye hepsi aynı komutlar ile çalışıcak diye bir şey yok aşşağı yukarı benzeye bilir ama kimisi debian tabanlı olup dpkg paket yükleyici sistemini kullanırken kimisi pkg paket yükleme sistemini kullanır. Zaten hepsine aşina olmanıza gerek yok, bu konuda ben Debian Tabanlı Kali Linux İşletim sistemimi kullanıcam.


1.png


Remote Shell Nedir

Değerli THT üyeleri isminden de anlaşılacağı gibi " uzaktan kabuk" anlamını taşır peki sizlere soruyorum , uzaktan komut yürüttüğünüzü düşünün neler yaparsınız ? Ben söyliyim sisteme hangi kullanıcı yetkisi ile girdiğinize bağlı olarak, basic kullanıcı ile girdiğinizde , yetki yükseltme methodlarını denemeniz gerekmektedir, Yetki yükselttikden sonra artık özgürsünüz çünkü sistemde artık admin yetkisinde her komutu çalıştırıp sistemden tüm bilgileri çekebilirsiniz. Benim sizlere göstereceğim local/nat ağında " Remote Shell ".
Peki sevgili @'pump nat ağı ne ben anlamam o network terimlerinden. hemenn onuda konuya dahil edelim, dediğim gibi bu konuda 1 şey öğrenmiceksiniz 1 çok şey öğreniceksiniz.


1*_bGimUdJABH1EZwhmhGkhA.png


Nat Ağı (Network Adress Translation)

Bir cihazın internet üzerinde diğer cihazlarla iletişim kurabilmesi için public IP adresine sahip olması gereklidir fakat bildiğiniz üzere IPv4'te adresler (yaklaşık 3.3 milyar) sınırlı sayıdadır. IP adresleri kıt bir kaynak olduğu için, ev ve iş yerlerimizden internete bağlanmamızı sağlayan internet hizmet sağlayıcılar (Superonline, TTNET, vb) abonelerine tek bir public IP sağlarlar.

Evetttt... Nat / Local Ağını'da kaba taslak öğrendikten sonra ufak ufak sizleri sıkmadan uygulamaya geçelim uygulama yaparken bir yandan anlatayım.


Arkadaşlar ben konuşana kadar metasploit table2 'yi indirip kurduğunuzu varsayıyorum , eğer ki halen indirmediyseniz aceleye gerek yok , konunun bir yere kaçtığı yok ,anlayarak ilerliyelim.
Arkadaşlar kusurum varsa affedin , reverse shell konularını araştırdığınıza göre , sizin belli bir seviyede olduğunuzu düşünüyorum , işletim sistemi kurma yapılandırma gibi konuları anlatmicam siz yaparsınız güveniyorum :)

rdL-ES10Tewz.png

Evet arkadaşlar sanal makinemizi açalım , username ve password = " msfadmin " ekranda da yazıyor zaten.
ifconfig yaparak ip adresimize bakalım. Yüksek ihtimalle ip adresiniz yukarıda kalıp ekrana sığmayıp görmiceksinizdir bunun için " ifconfig | more " yaparsanız görüceksinizdir.

Veya Kali Linux'da kendi ip aralığınızı tariyabilirsiniz. Bunun için Netdiscover veya nbtscan kullanabilirsiniz.

NOT: Siz benim gibi 192.168.111.0/24 gibi aratmayın ben yapılandırma yaptığım için ip adresimlerim son ip oktedinde sıralanıyor.

r2RFGhbga1e.png


Arkadaşlar benim metasploiti'in ip adresii 192.168.111.10 , bu url'e gidelim " Kali Linux " 'dan.


f8l1281.png

uA9glHsqW.png

Böyle bir ekranın bizi karşılaması gerekiyor. Biz buradan "DVWA" seçicez.

Damn Vulnerable Web Application (DVWA) Nedir?

( L*net Korunmasız Web Uygulaması )

Web uygulama güvenliği alanında kendini geliştirmek isteyen pentesterlar ve güvenlik ile uğraşan kimseler için PHP ile oluşturulmuş içinde belli web zafiyetlerini barındıran bir eğitim sistemidir.


Barındırdığı Zafiyetler :

– Brute Force
– Command Execution
– CSRF

File Inclusion
– SQL Injection
– Upload
– XSS Reflected
– XSS Stored


Arkdaşlar şimdi elimizde bir shell.php var diyelim bizim bunu upload etmek için bir zafiyetten yararlanmamız gerekiyor ben burada. "
File İnclusion " web zafiyetinden anlatmak istiyorum.
Şimdi bu açık 2 şekilde ayırabiliriz (
LFİ ) ( RFİ ) arkadaşlar farkları şu; LFİ : Local File İnclusion , local ağdan dosya yürütmek anlamında , RFİ ise tam zıttı olarak Remote File İnclusion.
Biz gördüğünüz gibi localden yapıyoruz. Bunun sebebi konuyu daha temelden ve daha iyi anlamak için ilk önce en basic düzey seviyede göstermeye çalışıyorum , aynı şekil yazıcağımız shell payload'ı da aynı şekil. Her neyse
DWVA tıklayıp sekmeye gidelim.

3m1-kd.png

Arkadaşlar sizlere iki şifre vericem biri olması gerekiyor %100 şifre = |
qwerty | ha olmazsa password deneyin olucaktır.

giriş yaptığımıza göre..

kmtj_9T1vN.png


Arkadaşlar "
DVWA Security" alanına gelip zorluğu ayarlamamız gerekiyor, sisteme her girdiğinizde "high" olarak giricektir dikkatinize.
Bu ayarı şimdilik "
LOW" 'a alıp basit düzeyde alıştırma yapalım.

kmtj_9T1vN.png


Ve daha sonra sol tarafada web zafiyetlerinden
File İnclusion'a gidelim.

0DlxudXUw.png

Evet dostlar File Inclusion makinemize geldik , bu zafiyet hakkında hem OWASP hemde Wikipedia dan makale kaynak bırakmışlar , okuyabilirsiniz.

Şimdi arkadaşlar bu zafiyeti exploit etmenin yolu , url'den geçiyor. Gördüğünüz gibi ?page= yazısını görüyorsunuzdur. ? = $_GET parametresine eşittir yani sitelerde geçişlerde yaygınca kullanılır ve orada ki page= kısmı ise gideceğimiz adresi belirtiyor.
Peki buna ilginç neler deniyebiliriz gelin bakalım ?

1JIpD.png
şu kısmı silelim arkdaşlar lütfen. Ve enter'e basalım bakalım hata mesaji ile alıcak mıyız yoksa siteyi kodlayan arkadaş anasayfaya veya bulunduğumuz sayfaya tekrar yönlendirme mi eklemiş.

rBx1Su.png


Evet uzaktan eğitim ile web devolper'ı olan arkadaşımız bunu yapmamış , peki bu hata nelere yol açabilir gelin biraz daha eğlenceli şeyler deniyelim.

Dostlar bu url kısmına /../etc/paswd gibi payloadımızı girelim aslında bu bir linuxda komut, .. bizi bir geri dizine atar, burada amaç
/../../../../../../../ garanti olsun diye kök dizine ulaşmak. Çünkü bulunduğumuz web dizini ile etc dizini arasında çok dizin olabilir.
etc dizini altında ki passwd dosyası içinde işletim sistemimizde bulunan kullanıcıların listesi bulunur.
YOnbqkWVtfE.png

evet gördüğün gibi url'de komut yürütebiliyorum.

şimdi arkadaşlar ?page= kısmı ne demekti bizi başka sayfaya gönderiyor dedik doğru mu ? peki test edelim hadi herkes gitmek istediği bir siteyi yazsın oraya.



Kh1INw8Pl.png
Evettt googleye gitmek istediğimi belirttim ve hedef siteye ulaştık. Peki daha farklı neler yapabiliyoruz eğer başka sitelere gidiyorsak ?
Kendi ağımda http servisimi açsam peki ? Hadi yapalım.


f8l1281.png


Arkadaşlar http servisini açmak için python -m http.server 80 yazmamız yeterli ama şunu söyliyeyim , ben malesef konuyu 2 güne sığdırmak zorunda kaldım , görselde fark ederseniz ev dizinimde açıyorum serveri , bu dalgınlığa sakın düşmeyin çünkü public olarak ev dizinizi kullanıcılara açabilirsiniz. Bunu düzelteceğim ama uygulamalı olarak görün diyerek sonra düzelticem.

B6Ll3U-.png


LenSkNyZhTM.png

evet arkadaşlar page kısmına http ile sitemize gittik ve bizi kök dizinimiz karşıladı. Yukarıda ev dizinimde açmıştım daha kötü örnek olsun diye root dizinimde açtım serveri. :) Ve şimdi nerde açmalıyız gelin anlatayım. Ben " TMP " dizini altında genelde dosyalarımı açarım, tmp klasörü Linux'da arkadaşlar geçici dosyaların saklandığı bölümdür. Buraya veya home dizini altında yeni bir dizin açmanız gerekiyor, asla ana default dizinleriniz ile aynı sekment içinde olmasın.

Evet arkadaşlar tekrar kali linux terminalimze gelelim ve serveri açtığımız terminali sayfasını kapatmiyalim yeni sayfa açalım ve bir .txt dosyası oluşturalım

DUSxEmZVvc.png

Arkadaşlar touch komutu ile sonrasında nano ile dosyaya girip o tarz düzenlemeler yapıp zahmete girmenize gerek yok, ama onlarada alışmanız gerekiyor hemen kolaya kaçmanızı tavisye etmem , herneyse txt dosyamıza içerik yazdıktan sonra CTRL + C yaparak kaydedip çıkıyoruz. Ve sitemize gidelim arkadaşlar.

enjA9Hy.png

evet arkadaşlar gördüğün gibi txt dosyamız geldi url den txt dosyamıza gidelim


6Ms_nuvj9hm.png

not: arkadaşlar dosya adını türkhackteam den geri turkhackteam'e çevirdim , galiba Türkçe karekterden ötürü dosyayı bulamıyordu. Eğer hata alırsanız ingilzice klavye ile yazın.

Herneyse arkadaşlar şimdi ben bu siteye txt upload edip yazı çıktı çıkardığıma göre shell atabilir miyiz ?
hemen deniyelim. Basit bir remote shell yazalım php ile.

bam80dsLu4.png

evet arkadaşlar shelli açınca bizlere id komutunu sitemize çıkarması gerekiyor , deniyelim.

GoMBJtqXj-dn.png

Evet arkadaşlar www-data kullanıcısındayız ve muhtemelen root yetkimiz var id grup numaramız = 33 numaralı.

Arkdaşlar şimdi düşündüğünüzde bu komut yürütmek çok zahmetli iş , işte pump ben her komut çalıştırmak için bu tarz shell mi deniyecğim ? hayır dostum istersek kendi shell kabuğumuzu web siteye bağlıyabiliriz bunun için php kodumuzda ufak düzenleme yapmamız gerekiyor ve ntcat ile bağlanıcaz ama öncelikle sırasıyla hareket edelim.

zgqVNU.png

arkadaşlar sitede shellimizi yükledikten sonra $_GET parametresi yani shelimizden sonra ? koyup sonra cmd komut satırını açabiliriz ve daha sonra = işaretini koyarak dilediğimizi yazabiliriz.
Url kısmını komut satırı gibi kullanabilirsiniz ama benim daha iyi bir fikrim var hadi gelin yapalım.

zgqKCS.png


nc aracı ile 1234 nolu -lvp parametreleri ile dinlemeye alıyorum.

zgqtHB.png

burayı da yorumluyalım shell.php?den sonra cmd mizi açıp = koyuyoruz ve nc ile açtığımız porta istek atıp bağlanmaya çalışıyoruz /bin/bash dememim sebebi , arkadaşlar birden fazla komut satırı var ve en yetkilisi bash dizini root dizini diye de söyliyebilirler, ve şunu da unutmayın Kali Linux'da ki shell den shell'e komutlar hepsinde aynı olmaya bilir, örnek vereyim , bash de history çalışırken sh kabuğunda çalışmayabilir.


zg5z3q.png


VE gördüğünüz gibi arkdaşlar artık komut satırından komutlarımızı çalıştırabiliriz şuan root yetkisindeyiz bunu kontrol etmek için en başta zaten shadow veya passwd gibi dosyaları okumaya çalışmakla deniyebilirsiniz , ben sizi rahat bırakıp makineyi kurcalamayı sizlere bırakıyorum, umarım shell nedir ne için vardır gibi konuları anlatabilmişimdir.
Okuduğunuz için teşekkür ederim.


f8l1281.png


 

teux

Katılımcı Üye
23 Ocak 2023
967
1,382
Merhabalar herkese bu gün ' Siber Güvenliğin ' ' Web SHELL ' konusunu ele alıcam , konuyu hem teorik hem uygulamalı olarak anlatıcam, shell nedir yenir mi nasıl kullanılır nasıl yazılır diye soranların hepsine hem teorik bilgi , hem de uygulamalı bilgi vermek üzere 2 şekilde ilerliyeceğiz ama öncelikle şunu bilin ki , Siber Güvenlikde bazı birkaç konular vardır, sadece onu öğrenerek bir şeyler yaparsın, ama bu konu öyle değil , bu konuyu çorap söküğü sözüne benzetebilirim , çünkü elimizde bir shell var ise bunu upload etmek için , belli bir web zafiyetlerine hakim olmak gerekiyor. Ama bu konuda sadece yaptıklarımı adım adım yaparak , enazından fikir sahibi olucaksınız. Ve bu konuda sadece "Shell " konusunu öğrenmiceksiniz ekstra linuxda bazı araçların kullanımını da öğreniceksiniz , haydi öyleyse fazla konuşmadan hemen konuya geçelim.

Arkadaşlar aranızda yaptıklarımı yapmak isteyen kişiler / kitle vardır diye düşünerek onlardan ricam konunun en başından , şimdiden "
METASPLOİT TABLE2" makinesini indirmeniz. Bunu sonradan söylemek istemedim teorik olarak konuyu bitirinceye kadar. bilgisayarınıza kurabilirsiniz.
NOT: Username : msfadmin passwd: msfadmin xd

Herneyse arkadaşlar öncelikle ilk başlığımız bu shell nedir yenir mi diyerek girelim...



f8l1281.png



SHELL Nedir
Shell, bildiğim kadarıyla Linux ve Unix işletim sistemi kullanıcılarının komut satırı arayüzlerini kontrol etmelerini sağlayan bir bilgisayar programıdır aslında, Zaten aranızda Linux kullanan var ise bazılarımızda terminal , bazılarımızda shell olarak yazar, kimimizde ise kabuk, bu noktaya takılmanıza gerek yok özünde 3 ü de aynı şeyden bahsediyor.
8e922746146a91d153b10f72a4a3b1488ada13a2.jpeg


Shell, kullanıcıların işletim sistemleriyle verimli ve doğrudan iletişim kurmasını sağlar. Bu nedenle de son derece önemlidir , ve zaten Linux gibi çekirdek sistemi dağıtımlarda shell kullanmak o İşletim Sistemini kullanmanın %70'dir diyebilirim, Shell kullanmayı bilmiyorsak Kullanıdığımız işletim sistemini tam verimli şekilde kullanamayız. Bu yüzden komut satırını öğrenmek gerekiyor , ve arkadaşlar, tüm Linux dağıtımları Linux Çekirdek sistemini kullanıyor diye hepsi aynı komutlar ile çalışıcak diye bir şey yok aşşağı yukarı benzeye bilir ama kimisi debian tabanlı olup dpkg paket yükleyici sistemini kullanırken kimisi pkg paket yükleme sistemini kullanır. Zaten hepsine aşina olmanıza gerek yok, bu konuda ben Debian Tabanlı Kali Linux İşletim sistemimi kullanıcam.

1.png


Remote Shell Nedir
Değerli THT üyeleri isminden de anlaşılacağı gibi " uzaktan kabuk" anlamını taşır peki sizlere soruyorum , uzaktan komut yürüttüğünüzü düşünün neler yaparsınız ? Ben söyliyim sisteme hangi kullanıcı yetkisi ile girdiğinize bağlı olarak, basic kullanıcı ile girdiğinizde , yetki yükseltme methodlarını denemeniz gerekmektedir, Yetki yükselttikden sonra artık özgürsünüz çünkü sistemde artık admin yetkisinde her komutu çalıştırıp sistemden tüm bilgileri çekebilirsiniz. Benim sizlere göstereceğim local/nat ağında " Remote Shell ".
Peki sevgili @'pump nat ağı ne ben anlamam o network terimlerinden. hemenn onuda konuya dahil edelim, dediğim gibi bu konuda 1 şey öğrenmiceksiniz 1 çok şey öğreniceksiniz.



1*_bGimUdJABH1EZwhmhGkhA.png


Nat Ağı (Network Adress Translation)

Bir cihazın internet üzerinde diğer cihazlarla iletişim kurabilmesi için public IP adresine sahip olması gereklidir fakat bildiğiniz üzere IPv4'te adresler (yaklaşık 3.3 milyar) sınırlı sayıdadır. IP adresleri kıt bir kaynak olduğu için, ev ve iş yerlerimizden internete bağlanmamızı sağlayan internet hizmet sağlayıcılar (Superonline, TTNET, vb) abonelerine tek bir public IP sağlarlar.

Evetttt... Nat / Local Ağını'da kaba taslak öğrendikten sonra ufak ufak sizleri sıkmadan uygulamaya geçelim uygulama yaparken bir yandan anlatayım.


Arkadaşlar ben konuşana kadar metasploit table2 'yi indirip kurduğunuzu varsayıyorum , eğer ki halen indirmediyseniz aceleye gerek yok , konunun bir yere kaçtığı yok ,anlayarak ilerliyelim.
Arkadaşlar kusurum varsa affedin , reverse shell konularını araştırdığınıza göre , sizin belli bir seviyede olduğunuzu düşünüyorum , işletim sistemi kurma yapılandırma gibi konuları anlatmicam siz yaparsınız güveniyorum :)


rdL-ES10Tewz.png

Evet arkadaşlar sanal makinemizi açalım , username ve password = " msfadmin " ekranda da yazıyor zaten.
ifconfig yaparak ip adresimize bakalım. Yüksek ihtimalle ip adresiniz yukarıda kalıp ekrana sığmayıp görmiceksinizdir bunun için " ifconfig | more " yaparsanız görüceksinizdir.

Veya Kali Linux'da kendi ip aralığınızı tariyabilirsiniz. Bunun için Netdiscover veya nbtscan kullanabilirsiniz.

NOT: Siz benim gibi 192.168.111.0/24 gibi aratmayın ben yapılandırma yaptığım için ip adresimlerim son ip oktedinde sıralanıyor.

r2RFGhbga1e.png


Arkadaşlar benim metasploiti'in ip adresii 192.168.111.10 , bu url'e gidelim " Kali Linux " 'dan.


f8l1281.png


uA9glHsqW.png

Böyle bir ekranın bizi karşılaması gerekiyor. Biz buradan "DVWA" seçicez.
Damn Vulnerable Web Application (DVWA) Nedir?

( L*net Korunmasız Web Uygulaması )

Web uygulama güvenliği alanında kendini geliştirmek isteyen pentesterlar ve güvenlik ile uğraşan kimseler için PHP ile oluşturulmuş içinde belli web zafiyetlerini barındıran bir eğitim sistemidir.

Barındırdığı Zafiyetler :

– Brute Force
– Command Execution
– CSRF

File Inclusion
– SQL Injection
– Upload
– XSS Reflected
– XSS Stored


Arkdaşlar şimdi elimizde bir shell.php var diyelim bizim bunu upload etmek için bir zafiyetten yararlanmamız gerekiyor ben burada. " File İnclusion " web zafiyetinden anlatmak istiyorum.
Şimdi bu açık 2 şekilde ayırabiliriz (
LFİ ) ( RFİ ) arkadaşlar farkları şu; LFİ : Local File İnclusion , local ağdan dosya yürütmek anlamında , RFİ ise tam zıttı olarak Remote File İnclusion.
Biz gördüğünüz gibi localden yapıyoruz. Bunun sebebi konuyu daha temelden ve daha iyi anlamak için ilk önce en basic düzey seviyede göstermeye çalışıyorum , aynı şekil yazıcağımız shell payload'ı da aynı şekil. Her neyse
DWVA tıklayıp sekmeye gidelim.

3m1-kd.png

Arkadaşlar sizlere iki şifre vericem biri olması gerekiyor %100 şifre = |
qwerty | ha olmazsa password deneyin olucaktır.

giriş yaptığımıza göre..

kmtj_9T1vN.png


Arkadaşlar "
DVWA Security" alanına gelip zorluğu ayarlamamız gerekiyor, sisteme her girdiğinizde "high" olarak giricektir dikkatinize.
Bu ayarı şimdilik "
LOW" 'a alıp basit düzeyde alıştırma yapalım.

kmtj_9T1vN.png


Ve daha sonra sol tarafada web zafiyetlerinden
File İnclusion'a gidelim.

0DlxudXUw.png

Evet dostlar File Inclusion makinemize geldik , bu zafiyet hakkında hem OWASP hemde Wikipedia dan makale kaynak bırakmışlar , okuyabilirsiniz.

Şimdi arkadaşlar bu zafiyeti exploit etmenin yolu , url'den geçiyor. Gördüğünüz gibi ?page= yazısını görüyorsunuzdur. ? = $_GET parametresine eşittir yani sitelerde geçişlerde yaygınca kullanılır ve orada ki page= kısmı ise gideceğimiz adresi belirtiyor.
Peki buna ilginç neler deniyebiliriz gelin bakalım ?


1JIpD.png
şu kısmı silelim arkdaşlar lütfen. Ve enter'e basalım bakalım hata mesaji ile alıcak mıyız yoksa siteyi kodlayan arkadaş anasayfaya veya bulunduğumuz sayfaya tekrar yönlendirme mi eklemiş.

rBx1Su.png


Evet uzaktan eğitim ile web devolper'ı olan arkadaşımız bunu yapmamış , peki bu hata nelere yol açabilir gelin biraz daha eğlenceli şeyler deniyelim.

Dostlar bu url kısmına /../etc/paswd gibi payloadımızı girelim aslında bu bir linuxda komut, .. bizi bir geri dizine atar, burada amaç
/../../../../../../../ garanti olsun diye kök dizine ulaşmak. Çünkü bulunduğumuz web dizini ile etc dizini arasında çok dizin olabilir.
etc dizini altında ki passwd dosyası içinde işletim sistemimizde bulunan kullanıcıların listesi bulunur.
YOnbqkWVtfE.png

evet gördüğün gibi url'de komut yürütebiliyorum.

şimdi arkadaşlar ?page= kısmı ne demekti bizi başka sayfaya gönderiyor dedik doğru mu ? peki test edelim hadi herkes gitmek istediği bir siteyi yazsın oraya.




Kh1INw8Pl.png
Evettt googleye gitmek istediğimi belirttim ve hedef siteye ulaştık. Peki daha farklı neler yapabiliyoruz eğer başka sitelere gidiyorsak ?
Kendi ağımda http servisimi açsam peki ? Hadi yapalım.


f8l1281.png


Arkadaşlar http servisini açmak için python -m http.server 80 yazmamız yeterli ama şunu söyliyeyim , ben malesef konuyu 2 güne sığdırmak zorunda kaldım , görselde fark ederseniz ev dizinimde açıyorum serveri , bu dalgınlığa sakın düşmeyin çünkü public olarak ev dizinizi kullanıcılara açabilirsiniz. Bunu düzelteceğim ama uygulamalı olarak görün diyerek sonra düzelticem.

B6Ll3U-.png


LenSkNyZhTM.png

evet arkadaşlar page kısmına http ile sitemize gittik ve bizi kök dizinimiz karşıladı. Yukarıda ev dizinimde açmıştım daha kötü örnek olsun diye root dizinimde açtım serveri. :) Ve şimdi nerde açmalıyız gelin anlatayım. Ben " TMP " dizini altında genelde dosyalarımı açarım, tmp klasörü Linux'da arkadaşlar geçici dosyaların saklandığı bölümdür. Buraya veya home dizini altında yeni bir dizin açmanız gerekiyor, asla ana default dizinleriniz ile aynı sekment içinde olmasın.

Evet arkadaşlar tekrar kali linux terminalimze gelelim ve serveri açtığımız terminali sayfasını kapatmiyalim yeni sayfa açalım ve bir .txt dosyası oluşturalım

DUSxEmZVvc.png

Arkadaşlar touch komutu ile sonrasında nano ile dosyaya girip o tarz düzenlemeler yapıp zahmete girmenize gerek yok, ama onlarada alışmanız gerekiyor hemen kolaya kaçmanızı tavisye etmem , herneyse txt dosyamıza içerik yazdıktan sonra CTRL + C yaparak kaydedip çıkıyoruz. Ve sitemize gidelim arkadaşlar.

enjA9Hy.png

evet arkadaşlar gördüğün gibi txt dosyamız geldi url den txt dosyamıza gidelim


6Ms_nuvj9hm.png

not: arkadaşlar dosya adını türkhackteam den geri turkhackteam'e çevirdim , galiba Türkçe karekterden ötürü dosyayı bulamıyordu. Eğer hata alırsanız ingilzice klavye ile yazın.

Herneyse arkadaşlar şimdi ben bu siteye txt upload edip yazı çıktı çıkardığıma göre shell atabilir miyiz ?
hemen deniyelim. Basit bir remote shell yazalım php ile.

bam80dsLu4.png

evet arkadaşlar shelli açınca bizlere id komutunu sitemize çıkarması gerekiyor , deniyelim.

GoMBJtqXj-dn.png

Evet arkadaşlar www-data kullanıcısındayız ve muhtemelen root yetkimiz var id grup numaramız = 33 numaralı.

Arkdaşlar şimdi düşündüğünüzde bu komut yürütmek çok zahmetli iş , işte pump ben her komut çalıştırmak için bu tarz shell mi deniyecğim ? hayır dostum istersek kendi shell kabuğumuzu web siteye bağlıyabiliriz bunun için php kodumuzda ufak düzenleme yapmamız gerekiyor ve ntcat ile bağlanıcaz ama öncelikle sırasıyla hareket edelim.


zgqVNU.png

arkadaşlar sitede shellimizi yükledikten sonra $_GET parametresi yani shelimizden sonra ? koyup sonra cmd komut satırını açabiliriz ve daha sonra = işaretini koyarak dilediğimizi yazabiliriz.
Url kısmını komut satırı gibi kullanabilirsiniz ama benim daha iyi bir fikrim var hadi gelin yapalım.

zgqKCS.png


nc aracı ile 1234 nolu -lvp parametreleri ile dinlemeye alıyorum.

zgqtHB.png

burayı da yorumluyalım shell.php?den sonra cmd mizi açıp = koyuyoruz ve nc ile açtığımız porta istek atıp bağlanmaya çalışıyoruz /bin/bash dememim sebebi , arkadaşlar birden fazla komut satırı var ve en yetkilisi bash dizini root dizini diye de söyliyebilirler, ve şunu da unutmayın Kali Linux'da ki shell den shell'e komutlar hepsinde aynı olmaya bilir, örnek vereyim , bash de history çalışırken sh kabuğunda çalışmayabilir.


zg5z3q.png


VE gördüğünüz gibi arkdaşlar artık komut satırından komutlarımızı çalıştırabiliriz şuan root yetkisindeyiz bunu kontrol etmek için en başta zaten shadow veya passwd gibi dosyaları okumaya çalışmakla deniyebilirsiniz , ben sizi rahat bırakıp makineyi kurcalamayı sizlere bırakıyorum, umarım shell nedir ne için vardır gibi konuları anlatabilmişimdir.
Okuduğunuz için teşekkür ederim.


f8l1281.png


Yine kaliteli konu eline sağlık canım <3
 

kst132

Basın&Medya Ekibi Asistanı
12 Haz 2023
976
618
Merhabalar herkese bu gün ' Siber Güvenliğin ' ' Web SHELL ' konusunu ele alıcam , konuyu hem teorik hem uygulamalı olarak anlatıcam, shell nedir yenir mi nasıl kullanılır nasıl yazılır diye soranların hepsine hem teorik bilgi , hem de uygulamalı bilgi vermek üzere 2 şekilde ilerliyeceğiz ama öncelikle şunu bilin ki , Siber Güvenlikde bazı birkaç konular vardır, sadece onu öğrenerek bir şeyler yaparsın, ama bu konu öyle değil , bu konuyu çorap söküğü sözüne benzetebilirim , çünkü elimizde bir shell var ise bunu upload etmek için , belli bir web zafiyetlerine hakim olmak gerekiyor. Ama bu konuda sadece yaptıklarımı adım adım yaparak , enazından fikir sahibi olucaksınız. Ve bu konuda sadece "Shell " konusunu öğrenmiceksiniz ekstra linuxda bazı araçların kullanımını da öğreniceksiniz , haydi öyleyse fazla konuşmadan hemen konuya geçelim.

Arkadaşlar aranızda yaptıklarımı yapmak isteyen kişiler / kitle vardır diye düşünerek onlardan ricam konunun en başından , şimdiden "
METASPLOİT TABLE2" makinesini indirmeniz. Bunu sonradan söylemek istemedim teorik olarak konuyu bitirinceye kadar. bilgisayarınıza kurabilirsiniz.
NOT: Username : msfadmin passwd: msfadmin xd

Herneyse arkadaşlar öncelikle ilk başlığımız bu shell nedir yenir mi diyerek girelim...



f8l1281.png



SHELL Nedir
Shell, bildiğim kadarıyla Linux ve Unix işletim sistemi kullanıcılarının komut satırı arayüzlerini kontrol etmelerini sağlayan bir bilgisayar programıdır aslında, Zaten aranızda Linux kullanan var ise bazılarımızda terminal , bazılarımızda shell olarak yazar, kimimizde ise kabuk, bu noktaya takılmanıza gerek yok özünde 3 ü de aynı şeyden bahsediyor.
8e922746146a91d153b10f72a4a3b1488ada13a2.jpeg


Shell, kullanıcıların işletim sistemleriyle verimli ve doğrudan iletişim kurmasını sağlar. Bu nedenle de son derece önemlidir , ve zaten Linux gibi çekirdek sistemi dağıtımlarda shell kullanmak o İşletim Sistemini kullanmanın %70'dir diyebilirim, Shell kullanmayı bilmiyorsak Kullanıdığımız işletim sistemini tam verimli şekilde kullanamayız. Bu yüzden komut satırını öğrenmek gerekiyor , ve arkadaşlar, tüm Linux dağıtımları Linux Çekirdek sistemini kullanıyor diye hepsi aynı komutlar ile çalışıcak diye bir şey yok aşşağı yukarı benzeye bilir ama kimisi debian tabanlı olup dpkg paket yükleyici sistemini kullanırken kimisi pkg paket yükleme sistemini kullanır. Zaten hepsine aşina olmanıza gerek yok, bu konuda ben Debian Tabanlı Kali Linux İşletim sistemimi kullanıcam.

1.png


Remote Shell Nedir
Değerli THT üyeleri isminden de anlaşılacağı gibi " uzaktan kabuk" anlamını taşır peki sizlere soruyorum , uzaktan komut yürüttüğünüzü düşünün neler yaparsınız ? Ben söyliyim sisteme hangi kullanıcı yetkisi ile girdiğinize bağlı olarak, basic kullanıcı ile girdiğinizde , yetki yükseltme methodlarını denemeniz gerekmektedir, Yetki yükselttikden sonra artık özgürsünüz çünkü sistemde artık admin yetkisinde her komutu çalıştırıp sistemden tüm bilgileri çekebilirsiniz. Benim sizlere göstereceğim local/nat ağında " Remote Shell ".
Peki sevgili @'pump nat ağı ne ben anlamam o network terimlerinden. hemenn onuda konuya dahil edelim, dediğim gibi bu konuda 1 şey öğrenmiceksiniz 1 çok şey öğreniceksiniz.



1*_bGimUdJABH1EZwhmhGkhA.png


Nat Ağı (Network Adress Translation)

Bir cihazın internet üzerinde diğer cihazlarla iletişim kurabilmesi için public IP adresine sahip olması gereklidir fakat bildiğiniz üzere IPv4'te adresler (yaklaşık 3.3 milyar) sınırlı sayıdadır. IP adresleri kıt bir kaynak olduğu için, ev ve iş yerlerimizden internete bağlanmamızı sağlayan internet hizmet sağlayıcılar (Superonline, TTNET, vb) abonelerine tek bir public IP sağlarlar.

Evetttt... Nat / Local Ağını'da kaba taslak öğrendikten sonra ufak ufak sizleri sıkmadan uygulamaya geçelim uygulama yaparken bir yandan anlatayım.


Arkadaşlar ben konuşana kadar metasploit table2 'yi indirip kurduğunuzu varsayıyorum , eğer ki halen indirmediyseniz aceleye gerek yok , konunun bir yere kaçtığı yok ,anlayarak ilerliyelim.
Arkadaşlar kusurum varsa affedin , reverse shell konularını araştırdığınıza göre , sizin belli bir seviyede olduğunuzu düşünüyorum , işletim sistemi kurma yapılandırma gibi konuları anlatmicam siz yaparsınız güveniyorum :)


rdL-ES10Tewz.png

Evet arkadaşlar sanal makinemizi açalım , username ve password = " msfadmin " ekranda da yazıyor zaten.
ifconfig yaparak ip adresimize bakalım. Yüksek ihtimalle ip adresiniz yukarıda kalıp ekrana sığmayıp görmiceksinizdir bunun için " ifconfig | more " yaparsanız görüceksinizdir.

Veya Kali Linux'da kendi ip aralığınızı tariyabilirsiniz. Bunun için Netdiscover veya nbtscan kullanabilirsiniz.

NOT: Siz benim gibi 192.168.111.0/24 gibi aratmayın ben yapılandırma yaptığım için ip adresimlerim son ip oktedinde sıralanıyor.

r2RFGhbga1e.png


Arkadaşlar benim metasploiti'in ip adresii 192.168.111.10 , bu url'e gidelim " Kali Linux " 'dan.


f8l1281.png


uA9glHsqW.png

Böyle bir ekranın bizi karşılaması gerekiyor. Biz buradan "DVWA" seçicez.
Damn Vulnerable Web Application (DVWA) Nedir?

( L*net Korunmasız Web Uygulaması )

Web uygulama güvenliği alanında kendini geliştirmek isteyen pentesterlar ve güvenlik ile uğraşan kimseler için PHP ile oluşturulmuş içinde belli web zafiyetlerini barındıran bir eğitim sistemidir.

Barındırdığı Zafiyetler :

– Brute Force
– Command Execution
– CSRF

File Inclusion
– SQL Injection
– Upload
– XSS Reflected
– XSS Stored


Arkdaşlar şimdi elimizde bir shell.php var diyelim bizim bunu upload etmek için bir zafiyetten yararlanmamız gerekiyor ben burada. " File İnclusion " web zafiyetinden anlatmak istiyorum.
Şimdi bu açık 2 şekilde ayırabiliriz (
LFİ ) ( RFİ ) arkadaşlar farkları şu; LFİ : Local File İnclusion , local ağdan dosya yürütmek anlamında , RFİ ise tam zıttı olarak Remote File İnclusion.
Biz gördüğünüz gibi localden yapıyoruz. Bunun sebebi konuyu daha temelden ve daha iyi anlamak için ilk önce en basic düzey seviyede göstermeye çalışıyorum , aynı şekil yazıcağımız shell payload'ı da aynı şekil. Her neyse
DWVA tıklayıp sekmeye gidelim.

3m1-kd.png

Arkadaşlar sizlere iki şifre vericem biri olması gerekiyor %100 şifre = |
qwerty | ha olmazsa password deneyin olucaktır.

giriş yaptığımıza göre..

kmtj_9T1vN.png


Arkadaşlar "
DVWA Security" alanına gelip zorluğu ayarlamamız gerekiyor, sisteme her girdiğinizde "high" olarak giricektir dikkatinize.
Bu ayarı şimdilik "
LOW" 'a alıp basit düzeyde alıştırma yapalım.

kmtj_9T1vN.png


Ve daha sonra sol tarafada web zafiyetlerinden
File İnclusion'a gidelim.

0DlxudXUw.png

Evet dostlar File Inclusion makinemize geldik , bu zafiyet hakkında hem OWASP hemde Wikipedia dan makale kaynak bırakmışlar , okuyabilirsiniz.

Şimdi arkadaşlar bu zafiyeti exploit etmenin yolu , url'den geçiyor. Gördüğünüz gibi ?page= yazısını görüyorsunuzdur. ? = $_GET parametresine eşittir yani sitelerde geçişlerde yaygınca kullanılır ve orada ki page= kısmı ise gideceğimiz adresi belirtiyor.
Peki buna ilginç neler deniyebiliriz gelin bakalım ?


1JIpD.png
şu kısmı silelim arkdaşlar lütfen. Ve enter'e basalım bakalım hata mesaji ile alıcak mıyız yoksa siteyi kodlayan arkadaş anasayfaya veya bulunduğumuz sayfaya tekrar yönlendirme mi eklemiş.

rBx1Su.png


Evet uzaktan eğitim ile web devolper'ı olan arkadaşımız bunu yapmamış , peki bu hata nelere yol açabilir gelin biraz daha eğlenceli şeyler deniyelim.

Dostlar bu url kısmına /../etc/paswd gibi payloadımızı girelim aslında bu bir linuxda komut, .. bizi bir geri dizine atar, burada amaç
/../../../../../../../ garanti olsun diye kök dizine ulaşmak. Çünkü bulunduğumuz web dizini ile etc dizini arasında çok dizin olabilir.
etc dizini altında ki passwd dosyası içinde işletim sistemimizde bulunan kullanıcıların listesi bulunur.
YOnbqkWVtfE.png

evet gördüğün gibi url'de komut yürütebiliyorum.

şimdi arkadaşlar ?page= kısmı ne demekti bizi başka sayfaya gönderiyor dedik doğru mu ? peki test edelim hadi herkes gitmek istediği bir siteyi yazsın oraya.




Kh1INw8Pl.png
Evettt googleye gitmek istediğimi belirttim ve hedef siteye ulaştık. Peki daha farklı neler yapabiliyoruz eğer başka sitelere gidiyorsak ?
Kendi ağımda http servisimi açsam peki ? Hadi yapalım.


f8l1281.png


Arkadaşlar http servisini açmak için python -m http.server 80 yazmamız yeterli ama şunu söyliyeyim , ben malesef konuyu 2 güne sığdırmak zorunda kaldım , görselde fark ederseniz ev dizinimde açıyorum serveri , bu dalgınlığa sakın düşmeyin çünkü public olarak ev dizinizi kullanıcılara açabilirsiniz. Bunu düzelteceğim ama uygulamalı olarak görün diyerek sonra düzelticem.

B6Ll3U-.png


LenSkNyZhTM.png

evet arkadaşlar page kısmına http ile sitemize gittik ve bizi kök dizinimiz karşıladı. Yukarıda ev dizinimde açmıştım daha kötü örnek olsun diye root dizinimde açtım serveri. :) Ve şimdi nerde açmalıyız gelin anlatayım. Ben " TMP " dizini altında genelde dosyalarımı açarım, tmp klasörü Linux'da arkadaşlar geçici dosyaların saklandığı bölümdür. Buraya veya home dizini altında yeni bir dizin açmanız gerekiyor, asla ana default dizinleriniz ile aynı sekment içinde olmasın.

Evet arkadaşlar tekrar kali linux terminalimze gelelim ve serveri açtığımız terminali sayfasını kapatmiyalim yeni sayfa açalım ve bir .txt dosyası oluşturalım

DUSxEmZVvc.png

Arkadaşlar touch komutu ile sonrasında nano ile dosyaya girip o tarz düzenlemeler yapıp zahmete girmenize gerek yok, ama onlarada alışmanız gerekiyor hemen kolaya kaçmanızı tavisye etmem , herneyse txt dosyamıza içerik yazdıktan sonra CTRL + C yaparak kaydedip çıkıyoruz. Ve sitemize gidelim arkadaşlar.

enjA9Hy.png

evet arkadaşlar gördüğün gibi txt dosyamız geldi url den txt dosyamıza gidelim


6Ms_nuvj9hm.png

not: arkadaşlar dosya adını türkhackteam den geri turkhackteam'e çevirdim , galiba Türkçe karekterden ötürü dosyayı bulamıyordu. Eğer hata alırsanız ingilzice klavye ile yazın.

Herneyse arkadaşlar şimdi ben bu siteye txt upload edip yazı çıktı çıkardığıma göre shell atabilir miyiz ?
hemen deniyelim. Basit bir remote shell yazalım php ile.

bam80dsLu4.png

evet arkadaşlar shelli açınca bizlere id komutunu sitemize çıkarması gerekiyor , deniyelim.

GoMBJtqXj-dn.png

Evet arkadaşlar www-data kullanıcısındayız ve muhtemelen root yetkimiz var id grup numaramız = 33 numaralı.

Arkdaşlar şimdi düşündüğünüzde bu komut yürütmek çok zahmetli iş , işte pump ben her komut çalıştırmak için bu tarz shell mi deniyecğim ? hayır dostum istersek kendi shell kabuğumuzu web siteye bağlıyabiliriz bunun için php kodumuzda ufak düzenleme yapmamız gerekiyor ve ntcat ile bağlanıcaz ama öncelikle sırasıyla hareket edelim.


zgqVNU.png

arkadaşlar sitede shellimizi yükledikten sonra $_GET parametresi yani shelimizden sonra ? koyup sonra cmd komut satırını açabiliriz ve daha sonra = işaretini koyarak dilediğimizi yazabiliriz.
Url kısmını komut satırı gibi kullanabilirsiniz ama benim daha iyi bir fikrim var hadi gelin yapalım.

zgqKCS.png


nc aracı ile 1234 nolu -lvp parametreleri ile dinlemeye alıyorum.

zgqtHB.png

burayı da yorumluyalım shell.php?den sonra cmd mizi açıp = koyuyoruz ve nc ile açtığımız porta istek atıp bağlanmaya çalışıyoruz /bin/bash dememim sebebi , arkadaşlar birden fazla komut satırı var ve en yetkilisi bash dizini root dizini diye de söyliyebilirler, ve şunu da unutmayın Kali Linux'da ki shell den shell'e komutlar hepsinde aynı olmaya bilir, örnek vereyim , bash de history çalışırken sh kabuğunda çalışmayabilir.


zg5z3q.png


VE gördüğünüz gibi arkdaşlar artık komut satırından komutlarımızı çalıştırabiliriz şuan root yetkisindeyiz bunu kontrol etmek için en başta zaten shadow veya passwd gibi dosyaları okumaya çalışmakla deniyebilirsiniz , ben sizi rahat bırakıp makineyi kurcalamayı sizlere bırakıyorum, umarım shell nedir ne için vardır gibi konuları anlatabilmişimdir.
Okuduğunuz için teşekkür ederim.


f8l1281.png


Eline sağlık abi :)
 

'pump

Uzman üye
9 Ara 2022
1,452
3,205
Ağ Kablolarında Geziyor
Eline sağlık güzel konu
Eline emeğine sağlık güzel anlatım
eline sağlık teşekkürler.

Teşekkür ederim, rica ederim.

Eline sağlık abi :)
teşekkür ederim asistan modum :)
Yine kaliteli konu eline sağlık canım <3
teşekkür ederim:)
 

'pump

Uzman üye
9 Ara 2022
1,452
3,205
Ağ Kablolarında Geziyor
Hocam gerçek sitelerde reverse shell atarken LHOST kısmına ne yazmamız lazım?
Orda ki L'nin anlamı Local den gelmektedir, kendi local ip'ni girmen gerekiyor , tek değiştireceğin kısım RHost remote uzakdan bağlanacağın makine'nin ip adresi yani.

LHOST "Öğrenmek için kendi komut satırına "ifconfig" yazabilirsin.
RHOST: Bunun için bazen url ister bazen ip adresi , hedef sitenin ip adresini öğrenmek için en basitinden ping atarak görebilirsin.

örnek : ping www.site.com
 

Mamilate

Üye
12 Kas 2023
192
78
Orda ki L'nin anlamı Local den gelmektedir, kendi local ip'ni girmen gerekiyor , tek değiştireceğin kısım RHost remote uzakdan bağlanacağın makine'nin ip adresi yani.

LHOST "Öğrenmek için kendi komut satırına "ifconfig" yazabilirsin.
RHOST: Bunun için bazen url ister bazen ip adresi , hedef sitenin ip adresini öğrenmek için en basitinden ping atarak görebilirsin.

örnek : ping www.site.com
Kendi natnetwork de çalışan makineler için böyle yapabiliriz fakat sorum direkt gerçek dünyada kullanılan siteler için shell atmak istersek ip yerine ne yazıcağımız? Public ip mi?
 

ACE Veen

Uzman üye
4 Şub 2023
1,138
574
Belirsiz
Merhabalar herkese bu gün ' Siber Güvenliğin ' ' Web SHELL ' konusunu ele alıcam , konuyu hem teorik hem uygulamalı olarak anlatıcam, shell nedir yenir mi nasıl kullanılır nasıl yazılır diye soranların hepsine hem teorik bilgi , hem de uygulamalı bilgi vermek üzere 2 şekilde ilerliyeceğiz ama öncelikle şunu bilin ki , Siber Güvenlikde bazı birkaç konular vardır, sadece onu öğrenerek bir şeyler yaparsın, ama bu konu öyle değil , bu konuyu çorap söküğü sözüne benzetebilirim , çünkü elimizde bir shell var ise bunu upload etmek için , belli bir web zafiyetlerine hakim olmak gerekiyor. Ama bu konuda sadece yaptıklarımı adım adım yaparak , enazından fikir sahibi olucaksınız. Ve bu konuda sadece "Shell " konusunu öğrenmiceksiniz ekstra linuxda bazı araçların kullanımını da öğreniceksiniz , haydi öyleyse fazla konuşmadan hemen konuya geçelim.

Arkadaşlar aranızda yaptıklarımı yapmak isteyen kişiler / kitle vardır diye düşünerek onlardan ricam konunun en başından , şimdiden "
METASPLOİT TABLE2" makinesini indirmeniz. Bunu sonradan söylemek istemedim teorik olarak konuyu bitirinceye kadar. bilgisayarınıza kurabilirsiniz.
NOT: Username : msfadmin passwd: msfadmin xd

Herneyse arkadaşlar öncelikle ilk başlığımız bu shell nedir yenir mi diyerek girelim...



f8l1281.png



SHELL Nedir
Shell, bildiğim kadarıyla Linux ve Unix işletim sistemi kullanıcılarının komut satırı arayüzlerini kontrol etmelerini sağlayan bir bilgisayar programıdır aslında, Zaten aranızda Linux kullanan var ise bazılarımızda terminal , bazılarımızda shell olarak yazar, kimimizde ise kabuk, bu noktaya takılmanıza gerek yok özünde 3 ü de aynı şeyden bahsediyor.
8e922746146a91d153b10f72a4a3b1488ada13a2.jpeg


Shell, kullanıcıların işletim sistemleriyle verimli ve doğrudan iletişim kurmasını sağlar. Bu nedenle de son derece önemlidir , ve zaten Linux gibi çekirdek sistemi dağıtımlarda shell kullanmak o İşletim Sistemini kullanmanın %70'dir diyebilirim, Shell kullanmayı bilmiyorsak Kullanıdığımız işletim sistemini tam verimli şekilde kullanamayız. Bu yüzden komut satırını öğrenmek gerekiyor , ve arkadaşlar, tüm Linux dağıtımları Linux Çekirdek sistemini kullanıyor diye hepsi aynı komutlar ile çalışıcak diye bir şey yok aşşağı yukarı benzeye bilir ama kimisi debian tabanlı olup dpkg paket yükleyici sistemini kullanırken kimisi pkg paket yükleme sistemini kullanır. Zaten hepsine aşina olmanıza gerek yok, bu konuda ben Debian Tabanlı Kali Linux İşletim sistemimi kullanıcam.

1.png


Remote Shell Nedir
Değerli THT üyeleri isminden de anlaşılacağı gibi " uzaktan kabuk" anlamını taşır peki sizlere soruyorum , uzaktan komut yürüttüğünüzü düşünün neler yaparsınız ? Ben söyliyim sisteme hangi kullanıcı yetkisi ile girdiğinize bağlı olarak, basic kullanıcı ile girdiğinizde , yetki yükseltme methodlarını denemeniz gerekmektedir, Yetki yükselttikden sonra artık özgürsünüz çünkü sistemde artık admin yetkisinde her komutu çalıştırıp sistemden tüm bilgileri çekebilirsiniz. Benim sizlere göstereceğim local/nat ağında " Remote Shell ".
Peki sevgili @'pump nat ağı ne ben anlamam o network terimlerinden. hemenn onuda konuya dahil edelim, dediğim gibi bu konuda 1 şey öğrenmiceksiniz 1 çok şey öğreniceksiniz.



1*_bGimUdJABH1EZwhmhGkhA.png


Nat Ağı (Network Adress Translation)

Bir cihazın internet üzerinde diğer cihazlarla iletişim kurabilmesi için public IP adresine sahip olması gereklidir fakat bildiğiniz üzere IPv4'te adresler (yaklaşık 3.3 milyar) sınırlı sayıdadır. IP adresleri kıt bir kaynak olduğu için, ev ve iş yerlerimizden internete bağlanmamızı sağlayan internet hizmet sağlayıcılar (Superonline, TTNET, vb) abonelerine tek bir public IP sağlarlar.

Evetttt... Nat / Local Ağını'da kaba taslak öğrendikten sonra ufak ufak sizleri sıkmadan uygulamaya geçelim uygulama yaparken bir yandan anlatayım.


Arkadaşlar ben konuşana kadar metasploit table2 'yi indirip kurduğunuzu varsayıyorum , eğer ki halen indirmediyseniz aceleye gerek yok , konunun bir yere kaçtığı yok ,anlayarak ilerliyelim.
Arkadaşlar kusurum varsa affedin , reverse shell konularını araştırdığınıza göre , sizin belli bir seviyede olduğunuzu düşünüyorum , işletim sistemi kurma yapılandırma gibi konuları anlatmicam siz yaparsınız güveniyorum :)


rdL-ES10Tewz.png

Evet arkadaşlar sanal makinemizi açalım , username ve password = " msfadmin " ekranda da yazıyor zaten.
ifconfig yaparak ip adresimize bakalım. Yüksek ihtimalle ip adresiniz yukarıda kalıp ekrana sığmayıp görmiceksinizdir bunun için " ifconfig | more " yaparsanız görüceksinizdir.

Veya Kali Linux'da kendi ip aralığınızı tariyabilirsiniz. Bunun için Netdiscover veya nbtscan kullanabilirsiniz.

NOT: Siz benim gibi 192.168.111.0/24 gibi aratmayın ben yapılandırma yaptığım için ip adresimlerim son ip oktedinde sıralanıyor.

r2RFGhbga1e.png


Arkadaşlar benim metasploiti'in ip adresii 192.168.111.10 , bu url'e gidelim " Kali Linux " 'dan.


f8l1281.png


uA9glHsqW.png

Böyle bir ekranın bizi karşılaması gerekiyor. Biz buradan "DVWA" seçicez.
Damn Vulnerable Web Application (DVWA) Nedir?

( L*net Korunmasız Web Uygulaması )

Web uygulama güvenliği alanında kendini geliştirmek isteyen pentesterlar ve güvenlik ile uğraşan kimseler için PHP ile oluşturulmuş içinde belli web zafiyetlerini barındıran bir eğitim sistemidir.

Barındırdığı Zafiyetler :

– Brute Force
– Command Execution
– CSRF

File Inclusion
– SQL Injection
– Upload
– XSS Reflected
– XSS Stored


Arkdaşlar şimdi elimizde bir shell.php var diyelim bizim bunu upload etmek için bir zafiyetten yararlanmamız gerekiyor ben burada. " File İnclusion " web zafiyetinden anlatmak istiyorum.
Şimdi bu açık 2 şekilde ayırabiliriz (
LFİ ) ( RFİ ) arkadaşlar farkları şu; LFİ : Local File İnclusion , local ağdan dosya yürütmek anlamında , RFİ ise tam zıttı olarak Remote File İnclusion.
Biz gördüğünüz gibi localden yapıyoruz. Bunun sebebi konuyu daha temelden ve daha iyi anlamak için ilk önce en basic düzey seviyede göstermeye çalışıyorum , aynı şekil yazıcağımız shell payload'ı da aynı şekil. Her neyse
DWVA tıklayıp sekmeye gidelim.

3m1-kd.png

Arkadaşlar sizlere iki şifre vericem biri olması gerekiyor %100 şifre = |
qwerty | ha olmazsa password deneyin olucaktır.

giriş yaptığımıza göre..

kmtj_9T1vN.png


Arkadaşlar "
DVWA Security" alanına gelip zorluğu ayarlamamız gerekiyor, sisteme her girdiğinizde "high" olarak giricektir dikkatinize.
Bu ayarı şimdilik "
LOW" 'a alıp basit düzeyde alıştırma yapalım.

kmtj_9T1vN.png


Ve daha sonra sol tarafada web zafiyetlerinden
File İnclusion'a gidelim.

0DlxudXUw.png

Evet dostlar File Inclusion makinemize geldik , bu zafiyet hakkında hem OWASP hemde Wikipedia dan makale kaynak bırakmışlar , okuyabilirsiniz.

Şimdi arkadaşlar bu zafiyeti exploit etmenin yolu , url'den geçiyor. Gördüğünüz gibi ?page= yazısını görüyorsunuzdur. ? = $_GET parametresine eşittir yani sitelerde geçişlerde yaygınca kullanılır ve orada ki page= kısmı ise gideceğimiz adresi belirtiyor.
Peki buna ilginç neler deniyebiliriz gelin bakalım ?


1JIpD.png
şu kısmı silelim arkdaşlar lütfen. Ve enter'e basalım bakalım hata mesaji ile alıcak mıyız yoksa siteyi kodlayan arkadaş anasayfaya veya bulunduğumuz sayfaya tekrar yönlendirme mi eklemiş.

rBx1Su.png


Evet uzaktan eğitim ile web devolper'ı olan arkadaşımız bunu yapmamış , peki bu hata nelere yol açabilir gelin biraz daha eğlenceli şeyler deniyelim.

Dostlar bu url kısmına /../etc/paswd gibi payloadımızı girelim aslında bu bir linuxda komut, .. bizi bir geri dizine atar, burada amaç
/../../../../../../../ garanti olsun diye kök dizine ulaşmak. Çünkü bulunduğumuz web dizini ile etc dizini arasında çok dizin olabilir.
etc dizini altında ki passwd dosyası içinde işletim sistemimizde bulunan kullanıcıların listesi bulunur.
YOnbqkWVtfE.png

evet gördüğün gibi url'de komut yürütebiliyorum.

şimdi arkadaşlar ?page= kısmı ne demekti bizi başka sayfaya gönderiyor dedik doğru mu ? peki test edelim hadi herkes gitmek istediği bir siteyi yazsın oraya.




Kh1INw8Pl.png
Evettt googleye gitmek istediğimi belirttim ve hedef siteye ulaştık. Peki daha farklı neler yapabiliyoruz eğer başka sitelere gidiyorsak ?
Kendi ağımda http servisimi açsam peki ? Hadi yapalım.


f8l1281.png


Arkadaşlar http servisini açmak için python -m http.server 80 yazmamız yeterli ama şunu söyliyeyim , ben malesef konuyu 2 güne sığdırmak zorunda kaldım , görselde fark ederseniz ev dizinimde açıyorum serveri , bu dalgınlığa sakın düşmeyin çünkü public olarak ev dizinizi kullanıcılara açabilirsiniz. Bunu düzelteceğim ama uygulamalı olarak görün diyerek sonra düzelticem.

B6Ll3U-.png


LenSkNyZhTM.png

evet arkadaşlar page kısmına http ile sitemize gittik ve bizi kök dizinimiz karşıladı. Yukarıda ev dizinimde açmıştım daha kötü örnek olsun diye root dizinimde açtım serveri. :) Ve şimdi nerde açmalıyız gelin anlatayım. Ben " TMP " dizini altında genelde dosyalarımı açarım, tmp klasörü Linux'da arkadaşlar geçici dosyaların saklandığı bölümdür. Buraya veya home dizini altında yeni bir dizin açmanız gerekiyor, asla ana default dizinleriniz ile aynı sekment içinde olmasın.

Evet arkadaşlar tekrar kali linux terminalimze gelelim ve serveri açtığımız terminali sayfasını kapatmiyalim yeni sayfa açalım ve bir .txt dosyası oluşturalım

DUSxEmZVvc.png

Arkadaşlar touch komutu ile sonrasında nano ile dosyaya girip o tarz düzenlemeler yapıp zahmete girmenize gerek yok, ama onlarada alışmanız gerekiyor hemen kolaya kaçmanızı tavisye etmem , herneyse txt dosyamıza içerik yazdıktan sonra CTRL + C yaparak kaydedip çıkıyoruz. Ve sitemize gidelim arkadaşlar.

enjA9Hy.png

evet arkadaşlar gördüğün gibi txt dosyamız geldi url den txt dosyamıza gidelim


6Ms_nuvj9hm.png

not: arkadaşlar dosya adını türkhackteam den geri turkhackteam'e çevirdim , galiba Türkçe karekterden ötürü dosyayı bulamıyordu. Eğer hata alırsanız ingilzice klavye ile yazın.

Herneyse arkadaşlar şimdi ben bu siteye txt upload edip yazı çıktı çıkardığıma göre shell atabilir miyiz ?
hemen deniyelim. Basit bir remote shell yazalım php ile.

bam80dsLu4.png

evet arkadaşlar shelli açınca bizlere id komutunu sitemize çıkarması gerekiyor , deniyelim.

GoMBJtqXj-dn.png

Evet arkadaşlar www-data kullanıcısındayız ve muhtemelen root yetkimiz var id grup numaramız = 33 numaralı.

Arkdaşlar şimdi düşündüğünüzde bu komut yürütmek çok zahmetli iş , işte pump ben her komut çalıştırmak için bu tarz shell mi deniyecğim ? hayır dostum istersek kendi shell kabuğumuzu web siteye bağlıyabiliriz bunun için php kodumuzda ufak düzenleme yapmamız gerekiyor ve ntcat ile bağlanıcaz ama öncelikle sırasıyla hareket edelim.


zgqVNU.png

arkadaşlar sitede shellimizi yükledikten sonra $_GET parametresi yani shelimizden sonra ? koyup sonra cmd komut satırını açabiliriz ve daha sonra = işaretini koyarak dilediğimizi yazabiliriz.
Url kısmını komut satırı gibi kullanabilirsiniz ama benim daha iyi bir fikrim var hadi gelin yapalım.

zgqKCS.png


nc aracı ile 1234 nolu -lvp parametreleri ile dinlemeye alıyorum.

zgqtHB.png

burayı da yorumluyalım shell.php?den sonra cmd mizi açıp = koyuyoruz ve nc ile açtığımız porta istek atıp bağlanmaya çalışıyoruz /bin/bash dememim sebebi , arkadaşlar birden fazla komut satırı var ve en yetkilisi bash dizini root dizini diye de söyliyebilirler, ve şunu da unutmayın Kali Linux'da ki shell den shell'e komutlar hepsinde aynı olmaya bilir, örnek vereyim , bash de history çalışırken sh kabuğunda çalışmayabilir.


zg5z3q.png


VE gördüğünüz gibi arkdaşlar artık komut satırından komutlarımızı çalıştırabiliriz şuan root yetkisindeyiz bunu kontrol etmek için en başta zaten shadow veya passwd gibi dosyaları okumaya çalışmakla deniyebilirsiniz , ben sizi rahat bırakıp makineyi kurcalamayı sizlere bırakıyorum, umarım shell nedir ne için vardır gibi konuları anlatabilmişimdir.
Okuduğunuz için teşekkür ederim.


f8l1281.png


elinize sağlık hocam yararlı konu
 

'pump

Uzman üye
9 Ara 2022
1,452
3,205
Ağ Kablolarında Geziyor
Kendi natnetwork de çalışan makineler için böyle yapabiliriz fakat sorum direkt gerçek dünyada kullanılan siteler için shell atmak istersek ip yerine ne yazıcağımız? Public ip mi?
yani evet ve dahası olarak modem'den port açman gerekiyor yönlendirme filan ama daha basit yöntemini söyliyeyim, weevely3 aracını githubdan indirebilirsin kullanımını basittir. Port açma gibi vesayre konularına girmene gerek kalmaz.
elinize sağlık hocam yararlı konu
teşekkür ederim.
 
Ü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.