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