Root > Documents > Security > Web Güvenliği (Xss, Rfi, SQL inj.)
Cyber-Warrior.Org \ Doküman \ Security > Web Güvenliği (Xss, Rfi, SQL inj.)
Madde
  Yazar : CWSmacher
  Date : 06.05.2012 16:02:22
 
# Web Güvenliği (Xss, Rfi, SQL inj.)
 

Web Güvenligi

Bugün Türkiye’de önemli kurumlarin bilgi

güvenligi ile ilgili zayifliklari bulundugunu

görüyoruz. Bilginin güvensiz bir sekilde

internet ortaminda yayinlanmasinin çok agir

sonuçlari olabilir. Özlük bilgilerinin, banka

hesaplarinin, ögrenci notlarinin, ticari sirlarin,

e-postalarin güvenligi önemli ve oldukça

hassas bir konudur.


Zayiflik nedenlerini

siniflandiralim


1. Kullanici tarafli zaafiyetler

2. Ag yönetimi ile ilgili zaafiyetler

3. Uygulama ile ilgili zaafiyetler

4. Sistem Yönetimi ile ilgili zaafiyetler


Genel olarak yapilan hatalari bu sekilde siniflandirabiliriz.

Bu siniflandirmaya ekleme ve çikarmalar yapilabilir. Daha

çok uygulama ve sistem yönetimi ile ilgili hatalar üzerinde

duracagiz. Siraladigimiz tüm hatalar birbiri ile içiçedir.

Zaman kazanma ve bütünlük saglama açisindan uygulama

ve sistem yönetimi ile ilgili zayifliklari birarada ele

alacagiz.


Kullanici tarafli zaafiyetler


Kullanici tarafindan tercih edilen isletim sisteminin dogru

sekilde yönetilememesi sonucunda zararli yazilimlarla

sifre çalinmasi, oturum bilgilerinin çalinmasi (trojan,

keylogger, spy gibi...).

Belirlenen zayif sifreler (12345, admin, nimda, 11111,

19831983 gibi).

Ayni sifrenin heryerde kullanilmasi.

Phishing (Sahte formlar)..


Bugün oneway function yöntemi ile sifrelenmis geri

döndürülemeyecegi zannedilen hash’ler "rainbow table"

olarak isimlendirilen tablo yapisi üzerinde çalistirilan

çapraz sorgularla kirilabilmektedir. Bence bu noktada

yapilan en kritik hata, zayif parola seçimleridir.


Ag Yönetimi ile ilgili zaafiyetler


Ag trafiginin dinlenmesi, paketlerin analiz

edilmesi...

Arp spoofing, Man-in-the-middle yöntemi

gibi..

Bu yöntemlerle http, pop3 gibi protokoller

ile gönderilen paketler yakalanabilir...


Uygulama ve sistem yönetimi ile ilgili zaafiyetler


Web uygulamalarindan bahsedildiginde farkli

kategoride, kullanilan çok sayida programlama ve

veritabani alternatifi akla gelmektedir. Perl, Python,

Java, PHP, ASP, PostgreSQL, MSSQL, MySQL, Oracle

gibi.


Genel olarak benzer mantik hatalarinin yapildigini

görüyoruz. Örneklerde PHP programlama dilinden ve

MySQL iliskisel veritabani yazilimindan

faydalanilmistir. Web güvenligi gibi genis bir konuyu

siraladigimiz teknolojilerle sinirlandirmak elbette

mümkün degildir.


XSS Cross Site Scripting nedir?


Alinan girdilerin süzgeçten geçirilmeden

kullanilmasi sonucu, saldirgan zararli

içeriklerle programin çalisma seklini

istenmeyen etkiler doguracak sekilde

degistirebilir.

Örnek senaryo: e-posta web arabirimi gelen

e-posta’daki bilgileri süzgeçten getirmeden

ekrana basmaktadir.


Directory Traversal nedir?


Kisaca izin verilmeyen dizinlere erisim

saglanmasi olarak özetlenebilir. Örnegin;

apache - php konfigurasyonu yaparken

virtual hostlarinizda openbasedir

tanimlamasi yapmazsaniz istenmeyen

dizinlerdeki dosyalar için file inclusion

sorunu yasayabilirsiniz. Istenmeyen

dizinlerdeki dosyalariniz okunabilir,

dizinlerinize dosya yazilabilir.


show_source, include, require, system, shell_exec,

passthru, exec gibi fonksiyonlar ile directory traversal

zayifliklarindan faydalanabilirsiniz.


File Inclusion LFI - RFI


Local file inclusion ve remote file inclusion

olarak iki tarafli düsünülmelidir.


<?

include($_GET[“page”]);

?>

GET /?page=/etc/passwd


gibi uzaktaki veya yerel bir dosyanin

uygulamaya dahil edilmesi söz konusu

olabilir.


Arbitrary file upload


Dosya yüklemelerinde yapilan uzanti

kontrol hatalari akla gelmelidir. Sunucuya

çalistirilabilir, yorumlanabilir dosya

yüklenmesi sonucu, sunucunuza

saglanabilecek erisimler ile sisteminiz ele

geçirilebilir. CGI, PHP, ASP, PY gibi

yorumlanan, çalistirilabilir dosyalarin

yüklenmesi engellenmelidir.


Command Injection nedir?


Php programlama dili ile system,

shell_exec, passthru, exec gibi fonksiyonlar

kullanilarak sistem komutlari çalistirilabilir.

Yine asp ’ler için fso (File System Object) ve

diger programlama dillerinde de benzer

fonksiyon, methot veya siniflar mevcuttur.


SQL Injection nedir?


Veritabani destekli uygulamalarda girislerin

süzgeçten geçirilmemesi; sonrasinda, sql

komutlari kullanilarak tablolarin okunmasi,

yazilmasi, degistirilmesi... dosyalarin

okunup, dosyalarin yüklenmesi gibi sonuçlar

dogurabilecek zayifliklar akla gelmelidir.


Örnek kod 1 union sorgusu

Örnek kod 2 load_file fonksiyonu

Örnek kod 3 authentication bypass


Kernel intrusion


Isletim sisteminin çekirdegi kullanilarak

yapilan saldirilar akla gelmelidir. Linux

isletim sistemi için sistemi

root’layabileceginiz çok sayida local root

exploit i mevcuttur.


KERNEL 2.2.*

2.2.x Exploit : ptrace.

KERNEL 2.4.*

2.4.17 Exploits : ptrace, uselib24, ong_bak, mremap, newlocal, brk,

brk2.

2.4.18 Exploits : ptrace, uselib24, ong_bak, mremap, newlocal, brk,

brk2

2.4.19 Exploits : ptrace, uselib24, ong_bak, mremap, newlocal, brk,

brk2

2.4.20 Exploits : ptrace, uselib24, ong_bak, mremap, module_loader,

elflbl, brk, brk2

2.4.21 Exploits : ptrace, uselib24, ong_bak, mremap, brk, brk2, w00t

2.4.22 Exploits : ptrace, uselib24, ong_bak, mremap, hatorihanzo, brk,

brk2, w00t

2.4.23 Exploit : ptrace, uselib24, ong_bak, mremap

2.4.24 Exploit : ptrace, uselib24, ong_bak, mremap

2.4.25 Exploits : ptrace, uselib24, ong_bak, mremap

2.4.26 Exploits : ptrace, uselib24, ong_bak, mremap

2.4.27 Exploits : ptrace, uselib24, ong_bak, mremap

KERNEL 2.6.*

2.6.2 Exploit : mremap_ptea

2.6.3 Exploit : Krad

2.6.4 Exploit : Krad

2.6.5 Exploit : Krad

2.6.6 Exploit : Krad

2.6.7 Exploit : Krad

2.6.8 Exploit : Krad


Önlemler


*Linux sistem yönetimi ile ilgili tercihler

*Linux partition tablosu ile ilgili

yapilabilecek düzenlemeler ve nedenleri

*MySQL kullanicilari ile ilgili seçimler

*php.ini dosyasinin düzenlenmesi

*Apache virtualhost tanimlamalari


Linux sistem yönetimi ile ilgili tercihler


Sistem yöneticisi kesinlikle linux kernel’i için

güvenlik yamalari yapmalidir, dosya dizinler

ile ilgili izinler gözden geçirilmelidir.


Linux partition tablosu ile ilgili yapilabilecek düzenlemeler ve nedenleri


Bildiginiz gibi tmp dizini izinleri herkes

tarafindan okunabilir ve yazilabilir sekilde

düzenlenmistir. /tmp ’i ayri bir partition

olarak tanimlamak fstab dosyasinda noexec,

no-suid olarak baglamak mantikli

olacaktir. Aksi durumda saldirganin dosya

atabilecegi bir dizin olarak düsünürülürse

dosyalarin çalistirilmasi kesinlikle sorun

yaratacaktir.


MySQL kullanicilari ile ilgili seçimler


Global yetkileri olan mysql kullanicisi ile

kesinlikle web uygulamlari kullanmamanizi

öneriyorum. load_file fonksiyonu genel

kullanicilar tarafindan kullanilan bir

fonksiyondur. Dolayisiyla eger genel

kullanici ile web uygulamasi gelistiriyorsaniz

bunun sonuçlarina katlanmak zorunda

kalabilirsiniz.


php.ini dosyasinin düzenlenmesi


php.ini dosyasinda allow_url_fopen off

yapmalisiniz. Disable_functions bölümüne

asagida fonksiyonlari eklemelisiniz:

disable_functions = show_source, system,

shell_exec, passthru, exec, phpinfo, po

pen, proc_open


Apache virtualhost tanimlamalari


Örnek virtual host tanimlamasi:


<VirtualHost 212.174.115.20:80>

ServerName muhendisyazilim.com:80

ServerAlias www.muhendisyazilim.com

ServerAdmin "[email protected]"

DocumentRoot /home/CWSmacher/domains2/muhendisyazilim.com/httpdocs

Alias /webmail /var/www/data/webmail

DirectoryIndex index.php index.html

Options -Indexes

php_admin_value open_basedir "/home/CWSmacher/domains2/muhendisyazilim.com/httpd

ocs:/var/tmp:/usr/local/www/data/webmail"

CBandLimit 4000M

CBandExceededURL http://www.izmirx.com/hata/bandwidth_exceeded.html

CBandScoreboard /home/CWSmacher/domains2/muhendisyazilim.com/httpdocs/scoreboard

CBandPeriod 4W

<Location /cband-status>

SetHandler cband-status

</Location>

<Location /cband-status-me>

SetHandler cband-status-me

</Location>

<Directory /home/CWSmacher/domains2/muhendisyazilim.com/httpdocs>

order allow,deny

allow from all

</Directory>

</VirtualHost>


[email protected] || MuhendisYazilim.Com

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©