Forum Zero - Türkiyenin En İyi Online Oyun Forumu

   


Go Back   Forum Zero - Türkiyenin En İyi Online Oyun Forumu > Online Oyunlar > Metin2 > Metin2 Private Server Kurulumu > Metin2 PvP Panel - Web


Site Üzerinden Hacklenmeye Son

Metin2 PvP Panel - Web


Cevapla
 
LinkBack Seçenekler Arama Stil
Alt 05 Ocak 2013   #1
Jairia - ait Kullanıcı Resmi (Avatar)
Üye Profil Bilgileri
Üyelik tarihi: 04 Ocak 2013
Bulunduğu yer: ForumZero
Alter: 21
Mesajlar: 636
Konular: 493
Rep Puanı: 3193
Rep Gücü: 641
Rep Derecesi : Jairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond reputeJairia has a reputation beyond repute
Aldığı Teşekkürler: 265
Ettiği Teşekkürler: 2
Jairia - İCQ üzeri Mesaj gönder Jairia - AİM üzeri Mesaj gönder Jairia - MSN üzeri Mesaj gönder Jairia - YAHOO üzeri Mesaj gönder Jairia isimli Üyeye Skype üzeri Mesaj gönder
Standart Site Üzerinden Hacklenmeye Son



Olası Hacklenme Nedenler :

Forum Gibi Dosyaların İçindeki Açıklar.
Market Gibi Dosyaların İçindeki Açıklar.
Ticket Sistemi Gibi Dosyaların İçindeki Açıklar.
Site Panellerinin İçine Koyulan Açıklar.




Server Değil Host Hacklenir!

Host Hacklendiğinde sizin site bilgilerinize ulaşılabilir. Burdanda Config Dosyaları Açılır ve navicat hacklendir.


Site Üzerinden Putty Hacklenmez.

Evet Siteniz hacklendiğinde bi bakmışsınız putty duruyor. Çünkü Config dosyalarınızda sadece navicat var.


Sitem Sürekli Hackleniyor Ne Yapmalıyım ?

Siteniz Hackleniyorsa. Market - Forum ve Ticket'ı silin. Hala hackleniyorsa yeni bir panel bulun.

Herşeyi Yaptım %100 oyunumu koruyacak bişey yok mu ?

İşte Konunumn en mükemmel yerine geldik. Config dosyanizi görünmez kodlamak Onun için BU SİTE'yi kullanıcağız.

Config Dosyanızı içindekileri Burdaki alana yapıştırın. Ve Encode diyin. Böylece Config Dosyası Kodlanmış oldu. Hostunuz hacklense bile config i açınca saçma kodlar görücekler ve oyununuza dokunamayacaklar.


Css / Xss Açıkları Nasıl Kapatılır Alınacak Yöntemler Nelerdir ?

Söz edeceğimiz açık 2000 senesinden beri bilinen ama nedense hala web programcıları tarafından göz ardı edilen bir açıktır.



XSS Kullanıcının girdi sağlayacağı sayfalarda kullanıcı tarafından girdiye script’ler gömülerek yapılan saldırılardır. Bu bazen direkt kullanıcının (lamer) kendisi tarafından ya da onu başka bir isteye yönlendirmek isteyen bir lamer tarafından yapılıyor olabilir.


“Genelde cross site scripting açıkları saldırganın sistemi deneme-yanılma yaparak bulması ile ortaya çıkar. Açığın bulunması ile saldırgan başka bir domainden açığın bulunduğu domain ve sayfanın bilgilerini session bilgilerini ve diğer obje değerlerini çalmasına olağan sağlar.

"Cross-site scripting (XSS) güvenlik açıkları e-posta listelerinde en çok rastlanan güvenlik açıkları arasında yer almaktadır. Bunun başlıca nedeni ise bu açığa bir çok web uygulamasında rastlanması ve ücretsiz güvenlik açığı tarama yazılımları ile kolayca keşfedilmesidir..."

Çözüm:


Aslında çözüm yazılan kodlamanın düzeltilmesindedir.

Programın kullanıcıdan aldığı girdiler her zaman kontrolden geçirilmelidir. Bu aynı zamanda "Sql injection" "Buffer Overflow" gibi saldırıları da engelleyecektir.


Eğer belirli bir tür veri (numerik alfanümerik) bekleniyorsa ve belirli bir boyutta ( 8 karakter maksimum 20 karakter gibi) olması bekleniyorsa girilen verinin bu şartlara uyduğunun sağlanması gerekmektedir. Girdilerden metakarakter’ler mutlaka filtrelenmelidir. Bu birçok saldırıyı engelleyecektir. Örneğin ...
< > " ’ % ; ) ( & + -

karakterleri kullanıcı girdisinden temizlenmelidir. Aslında ne tür verinin beklendiği belirtildiği durumlarda bu tür filtreleme de otomatikman gerçekleşecektir.Bu tür karakterlerin gerektiği ortamlarda girilen verinin encode edilmesi gerekebilir.Bu önlemler birçok XSS saldırısını engelleyecektir.Web üzerinden yazılım geliştirenlerin Cert’in referansında yazılı olanlara dikkat etmesi ve kodlamalarında dökümanda belirtilen kurallara uyması gerekmektedir.

Ağda kurulacak bir sistemle bu saldırıların engellenmesinin sağlanması ise ancak sunucuları bir "proxy" veya IPS arkasına koyup her türlü data verisinin kontrolü ve düzeltilmesi ile sağlanabilir. Bu süreçte ise idari ve teknik çeşitli problemler yaşanabilecektir.


En etkin yol dökümanda belirtildiği üzere sunuculardaki kodun tekrar elden geçirilmesidir. Eğer kodu yazan ortalıklarda gözükmüyorsa ya o kod kaldırılmalı ya da ağ tabanlı bir çözüme gidilmelidir.


Sql Injection nedir? Nasil sitemi ona karsi koruyabiliriz?

"Web uygulamalarinda bir cok islem icin kullanicidan alinan veri ile dinamik SQL cumlecikleri olusturulur. Mesela "SELECT * FROM Products" ornek SQL cumlecigi basit sekilde veritabanindan web uygulamasina tum urunleri dondurecektir. Bu SQL cumlecikleri olusturulurken araya sikistirilan herhangi bir meta-karakter SQL Injection’ a neden olabilir."

Gunumuz web uygulamalarinin cogu dinamik bir yapi olmasi, daha hizli guncellemek, data (veri) ile interface (arayuzu) birbirinden ayirmak icin database (veri tabani) kullanir. Databaseden veri cekmek icin Sql komutlar uygulanir. Sitelerde dinamik bir yapi nedeniyle, parametre gonderme islemleri olmaktadir. Bu parametre islemleri POST ve GET yolu ile olmaktadir. Siz egerki bu parametreye metakarakterler kullanarakdan sitedeki kod icindeki sql komuta mudahale edebilmis olacaksiniz. Boylece parametre uzerinden Sql komuta mudahale etmis, istedigimiz sekilde degistirip, database uzerinde veri silme, guncelleme, ekleme gibi basit; server da cmd calistirma, oturum kulanicisi ekleme, serverin file (dosya) sistemine erisme gibi komplex islemler mumkun kilinabilinmektedir. Sizlere bu konuda sadece nasil yapildigi degil nasil korunacagindan bahsedecegim.

Oncelikle kullaniciya hic bir zaman guvenmiyeceksiniz. Disardan gelen tum parametreleri kontrol etmemiz gerek. Bunlar request.form("") ve request("") seklinde gelen tum veriler. (Ben size ASP web programlama dilinde anlatacam cozumu. )


<%
’***************************** ******************** ***************
’******* Ejder ’s SQL INJECTION SECURITY SYSTEM
’***************************** ******************** ***************

Function SqlCracker(ejder)
’ ejder parametresi ile gelen bilgi, Sql ve Xss icin filtrelenmektedir.
ejder = Replace(ejder, "<", "<")
ejder = Replace(ejder, ">", ">")
ejder = Replace(ejder, "<br>", "<br>")
ejder = Replace(ejder, "[", "&?")
ejder = Replace(ejder, "]", "&?")
ejder = Replace(ejder, """", "", 1, -1, 1)
ejder = Replace(ejder, "=", "&?", 1, -1, 1)
ejder = Replace(ejder, "’", "’’", 1, -1, 1)
ejder = Replace(ejder, "select", "sel&?ct", 1, -1, 1)
ejder = Replace(ejder, "convert", "conver_t", 1, -1, 1)
ejder = Replace(ejder, "cast", "cas_t", 1, -1, 1)
ejder = Replace(ejder, "join", "jo&?n", 1, -1, 1)
ejder = Replace(ejder, "union", "un&?on", 1, -1, 1)
ejder = Replace(ejder, "where", "wh&?re", 1, -1, 1)
ejder = Replace(ejder, "insert", "ins&?rt", 1, -1, 1)
ejder = Replace(ejder, "delete", "del&?te", 1, -1, 1)
ejder = Replace(ejder, "update", "up&?ate", 1, -1, 1)
ejder = Replace(ejder, "like", "lik&?", 1, -1, 1)
ejder = Replace(ejder, "drop", "dro&?", 1, -1, 1)

’ejder degiskeni filtrelendi, return icin SqlCracker a yukleniyor.
SqlCracker = ejder

End Function
%>


ASP icin hazirlanmis kodumuz budur. Disardan gelen veriyi SqlCracker() seklinde almamiz gerek.

SqlCracker(request.form("id"))

Bu sayede meta-karakter lere izin verilmicek. Sql sorgumuza mudahale edilmemis olacak. Edilse bile islememis olacak. Bunu biraz daha gelistirebiliriz. Yukardaki ilk 8 durumdan birini icerirse, banlist e ekleme yada hata verip , response.end ile sayfanin geri kalan kisminin islemesini engelleyebiliriz. Bu onlemleri aldiginiz taktirde Sql injectiondan korkmayin. ( SqlCracker() fonksiyonu ayni zamanda, Xss acigini engellemek icinde kullanabiliriz. Her iki ozellik dusunerekden tum onlemler alindi. ). Yapmamiz gereken diger ekstra onlemler ise;

- Veritabanimiza kisitli erisim hakki sagliyarakda, korumada saglanir. Mesela site uzerinden database e erisim yetkileri kisitli yapip, sadece okuma verilebilinir.
- Dinamik sql sorgularindan uzak duralim. Parametre gondererek yada stored procedureler kullanilmasi daha guvenlidir.
- Veritabanimizdaki onemli verileri, sifreleme algoritmasi kullnarak islem yapilmasi gerekir.
- Sitemizde parametre yolu ile hata cikmasini en aza indirmemiz gerekir.


Bazi saldiri yazilimlarindan sitemizi nasil koruyabiliriz?


Sitenize surekli saldiri yapiliyor, servis disi kaliyor. Ilk adim, bu saldirinin turunu ve nereye yapildigini ogrenmek. Evet ana sayfamiza surekli binlerce request yani istekde bulunulmus. Dogal olarakda sitemiz cevap veremez duruma gelmis. Bu durumda browser bilgilerine bakacaz loglardan. Hangi programla yapilmis ve normal kullanicidan farkli bir durum ariyacaz.

Ben bu tur saldirilarla karsilastigim icin. Onceden onlem aldim. Mesela *Lamer Program Adı Yasaktır* diye bir yazilim vardir. Surekli connection acar durur. Kapatmazda , server kisa sure sonra cevap veremez duruma gelir. Peki bu durumda nasil engelleriz derseniz. Bizim Web programciligi adina yapmamiz gereken cozumlerden biri, browser bilgisini filtrelemektir. Mesela *Lamer Program Adı Yasaktır* ile kendi ozel siteme degisik tarzda saldirilar yaptim. Teslerim sonucu sunu gozlemledim. Her sitemize requestde bulundugunda kullanilan browser bilgisi farkli idi. Yani Browser bilgisi "*Lamer Program Adı Yasaktır*" kelimesini icermekteydi. Buda bize onu filtreleyebilme sansi verdi. Vede asagidaki kodu yazdim.


<%
’***************************** ******************** ***************
’******* Tutulmaz ’s *Lamer Program Adı Yasaktır* Protecter SYSTEM
’***************************** ******************** ***************
Dim BrowseVar

’Siteye giren kisinin browser bilgisi.
BrowserVar = Trim(Request.ServerVariables(" HTTP_USER_AGENT"))

If BrowseVar <> "" Then

’icinde *Lamer Program Adı Yasaktır* geciyorsa , banlama sistemine gonder.
If Instr(BrowseVar, "*Lamer Program Adı Yasaktır*") <> 0 Then
response.end
else If Instr(UCASE(BrowseVar), "*Lamer Program Adı Yasaktır*") <> 0 Then
response.end
else If Instr(UCASE(BrowseVar), "*Lamer Program Adı Yasaktır*") <> 0 Then
response.end
end if
end if
end if

end if

%>


Testlerimde cok basarili oldu. Cok etkili bir sekilde saldirinin yukunu azaltiyor. Burda saldiri programi yazan kisi icin dikkat edilmemis bir ayrinti idi. Ama bizim isimize yaradi bu ayrinti. Biz *Lamer Program Adı Yasaktır* saldirisini ? yapilip yapilmadgini anliyabilecegiz artik..

Mesela bir baska saldiri programlarindan , POST saldirisi yapan denyo yaziliminin browser bilgisinde de "holyone" icermekteydi. Boylece onuda filtreleyebildik.


<%
’***************************** ******************** ***************
’******* Tutulmaz ’s DENYO Protecter SYSTEM
’***************************** ******************** ***************
Dim BrowserVar

’Gelen kisinin Browser bilgisini aliyoz
BrowserVar = Trim(Request.ServerVariables(" HTTP_USER_AGENT"))


If BrowseVar <> "" Then

If Instr(BrowseVar, "Denyo") > 1 Then
response.end
else If Instr(UCASE(BrowseVar), "HOLYONE") > 1 Then
response.end
else If Instr(BrowseVar, "HolyOne") > 1 Then
response.end
else If Instr(BrowseVar, "Nightmare") > 1 Then
response.end
else If Instr(UCASE(BrowseVar), "NIGHTMARE") > 1 Then
response.end
end if
end if
end if
end if
end if

end if

End Sub
%>


Sonuc olarak ciddi cozum bulduk. Sitemizdeki kodlarin hepsi islemeden hatta veritabani ile iletisim kurmadan bu tur kontrol yaptigimizda, ciddi anlamda saldiriyi etkisiz hale getirmis oluyoruz.

Bu tur programlarin ne tur bilgi gonderdini ogrenmek icin illa sitenizde denemeniz gerekmez. Bir tane Paket izleme yani sniffer yazilimi kulanarakdan, gonderdigi request bilgisinden ne tur browser bilgisi gonderdigini, turunu , nereye saldirdigini ogrenebilirsiniz. Vede o yonde sitenizde onlemler kod bazli alabilirsiniz.

Her saldiriyi bu sekilde asamayiz tabikide. Yeterlide olmiyacaktir. Sadece web programlaa dili adina nasil kendimizi maximum koruyabileceigimizden bahsetmeteyim. Tabikide mumkun oldugunca optimum kod yamamiz, az kaynak harcama ve veritabanina minimum erisimler saglamamiz ? bu tur saldilarin etkisini azaltacaktir..

Sizlere ornek bir POST paket gostereyim.


POST /fight-club/fight.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
x-flash-version: 9,0,47,0
Content-Type: application/x-www-form-urlencoded
Content-Length: 39
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: apps.facebook.com
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: Cookie: __utma=456546497.1131734494.11 90402303.114568562.1 194561491.150; __utmz=252321497.1194011491.15 0.125.utmccn=(referr al)|utmcsr=facebook.com|utmcct =/profile.php|utmcmd=referral; __utmb=456546597; __utmc=456456497; ABT=5967c5ab4b4d56560d393b4a82 0d67e%36594082139%3A A%235967c5ab4b4d2f4170d393b4a8 20d67e15656A11940821 39%3AA%23558501336a9f79e16394d 2e3b8d24d4f1st%3A119 4609ggg17%3AA; login_x=xxxxxx%40hotmail.com; xs=327ff8e565f318a94f35add51f0 56b5c; c_user=4565469422; sid=2

uid=4565434445&comp=true&fight =Fight+Opponent


Bu paketde, sizin browser bilginiz, cookie degeriniz, post degeri, islemcinizi gorebilirsiniz. Bu normal bir webbrowser ile gonderilen POST verisidir.



Upload, resim aciklari nelerdir?


Bu dokumanimdaki son kismi buna ayirdim. Sizlere Asp ve Php icin bahsedecegim. Sitelerimizde resim yukletmek, yada dosya yukletme gereksinimi cok duyariz. Mesela sizlere direk buyuk bir sirketin aspx le yazdigi bir sitenin acigindan bahsedeyim.

Argesoft yazilimi olan, argesoft, logosoft, boyner, argenet gibi sirketlerin kullandigi bir aspx tabanli site. Admin panelinein userlist kismina sifresiz, cookie kontrolsuz girdim. Evet garip ama gercek. Google ada o kisim referans gitmis. Her neyse. Ben admin paneline girdim, sifreleri degistirdim. Shell yuklemem gerekiyordu. Orda dikkatimi ceken bir kisim vardi. Resim upload kismi. Sadece jpg,gif yuklenebiliyormus yazdigina gore. Peki? Neye gore kontrol ediiyor. Eger yuklenen dosyanin icinde jpg ? kelimesi var yok ona goremi, yoksa duzgunce filtreleyip, resim oldugunu anliyacak bir cozum uretmislermiydi? Ne yazikki adamlar icinde jpg, gif kelimeleri geciyorsa izin veriiyormus. Bende efso.jpg.asp (asp shell) diye dosyami bir guzel upload edip, server a sizmistim. Vede site yazilimlarini kendime yedeklemistim. Gordugunuz gibi cok komik bir durum. Bu tur sorun bir cok asp tabanli sitelerde vardir. Dosya icinde aramak degilde, dosya adinda, noktadan sonraki terime bakilmasi gerekmektedir.

Simdi sizlere PHp den bahsedeyim. Once Linux hakkinda bilgi verem. Linuxda dosyalarin uzantilari onemsizdir. Yani uzantiya hic bakmaz. Dosyanin icindeki tagladan ne oldugunu anlar. Simdi baska bir basima gelen olaydan bahsedeyim. Php tabanli resim upload edilen bir site vardi. Sadece resim dosyasi kabul ediyordu. Peki uzanti onemsizse, resim oldugunu icindeki taglardan anliyordu. Bende phpde hazirlanis shell dosyam, shell.php yi yuklettim. Fakat resim olmadigi icin kabul etmedi. Bunun uzeirne shell.php nin ilk satirina, GIF89a; yazdim. Ve tekrar denedim. Ve bu seferinde, sistem kabul etti, yukledi bir guzel ve bana linkinide verdi. Boylece server a ulasmis oldum. Bir baska olay ise, php tabanli sitelerde, avatar yukleme olayi vardir. Onda ise gif resmi notepad2 ile acip, sonuna php kod yazip, yukleyip , calistirtmaktaydik. Boylece gif icindeki kodumuz, sorunsuz execute etmekte idi.

Bu sekilde bir cok olay yasadim. O yuzden upload sistemini tasarlarken, bu soylediklerimi unutmamaniz gerek. Ona gore onlem anlmaniz gerekir. Unutmayinki kullanicilara guven olmaz


Geldiiik Programlara

Anti Trojan Elite(ATE) bir malware silicidir. Sisteminizdeki malware’leri bulur ve siler. Anti Trojan Elite gerçek zamanlı bir malware firewall duvarı olarak da iş görmektedir. Öncelikle bir trojan veya keylogger yüklenirse bunu ATE ile kolay bir şekilde tespit edebilirsiniz. Ve ATE bu zararlı dosyayı anında engeller ve size zaman içinde bu dosyayı silme imkanı verir. 35 binden fazla trojan’ı tespit edebilir, solucanları, keylogger’ları tespit edebilir ve silebilir.

TCP bağlantısını da koruyarak buradan gelebilecek her türlü tehlikeye karşı sizi uyarır. Güncellemeleri ile de her daim tetikte durur.

Trojan kütüphanesi yeni versiyon ile birlikte güncellenmiştir.


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


SQL Injection Açığı İle İlgili Bilgiler

SQL Injection Nedir?
SQL Injection saldırganların veri çalma/değiştirmede kullandıkları web saldırı metodlarından biridir. Belkide günümüzde en çok kullanılan uygulama seviyesi tekniklerden biridir. Web uygulamasındaki güvensiz kodlamalardan yararlanarak login formu gibi kullanıcı girişlerinin SQL sorgusunda kullanıldığı yerlerde SQL komutları eklenmesi ile veritabanına yetkisiz erişim sağlar.
SQL Injection: Detaylı Açıklama
Web uygulamaları web sitesini ziyaret eden kullanıcıların web tarayıcıları ile bir veritabanından veri görüntüleyebilmelerini sağlarlar. Veritabanları çoğu web sitesinde kullanılır ve ziyaretçilere spesifik bilgilerin sunulması için veri depolama amaçlı kullanılırlar. Kullanıcı bilgiler, finansal ve ödeme bilgileri, firma istatistikleri bir veritabanında bulunabilir ve hazır veya özel yazılmış uygulamalar ile erişilebilirler.
SQL Injection, bir web uygulaması üzerinden arka plandaki veritabanında çalıştırılması için SQL komutlarının gönderilmesidir. Eğer web uygulamasında kullanıcı tarafından gelen tüm parametreler doğru olarak filtrelenmemişse saldırganlar tüm veritabanı içeriğini görebilir veya silebilirler.
Login sayfaları, destek veya ürün istek formlar, yorum/iletişim formları, arama sayfaları, alışveriş sepeti sayfaları dinamik içeriğin sunulduğu çeşitli sayfalardır ve modern iş dünyasında müşteriler ile veya kullanıcılar ile haberleşmede vazgeçilmezdir.
Bu tip web siteleri SQL Injection saldırılarından etkileniyor olabilir.
SQL Injection: Basit bir örnek
Normal bir kullanıcının kendi kullanıcı adı ve şifre kombinasyonu ile giriş yaptığı bir login sayfası düşünün.
Normal kullanıcı bilgilerini gönderdiğinde bu bilgilerden bir SQL sorgusu yaratılarak doğrulama için veritabanına gönderilir. Eğer geçerli ise kullanıcının erişimine izin verilir. Diğer bir deyişle login sayfasını kontrol eden web uygulaması kullanıcı adı şifre kombinasyonunu doğrulamak için planlanmış komutları kullanarak veritabanı ile haberleşir. Doğrulandığında da kullanıcının erişimine izin verilir.

SQL Enjeksiyon ile saldırganlar login formu engelini aşarak arkasındakileri görmek için özel olarak hazırlanmış SQL komutları girerler. Bu sadece eğer kullanıcı tarafından sağlanan girişler doğru olarak filtrelenmiyor ve direk olarak SQL sorgusu ile veritabanına gönderiliyorsa mümkün olabiliyor. SQL Enjeksiyon açıkları saldırganların direk olarak veritabanı ile haberleşmesini sağlarlar.

Bu tip saldırılardan etkilenen teknolojiler ASP, ASP.NET, PHP, JSP ve CGI gibi dinamik script dilleridir. SQL Enjeksiyon saldırısı yapacak olan bir saldırganın tek ihtiyacı olan bir web tarayıcısı, SQL sorguları hakkında bilgidir. SQL Enjeksiyonun basitliği onu popüler yapan en büyük etken.
Nasıl olurda bir güvenlik duvarı veya diğer güvenlik mekanizması arkasındaki bir veritabanına direk olarak SQL sorguları geçer?
Güvenlik duvarları ve benzer saldırı tespit mekanizmaları tam ölçekli bir SQL enjeksiyon web saldırısına karşı çok az hatta bazen hiç koruma sağlamazlar.
Web sitenizin herkese açık olması gerektiği için güvenlik mekanizmaları web uygulamanıza erişime (genelde port 80/443) izin verecektir. Ve web uygulamasının istenilen bilgileri gösterebilmesi için veritabanına erişim yapabilmesi gerekir.
SQL veya Structured Query Language verileri bir veritabanına depolamanızı, değiştirmenizi ve çağırabilmenizi sağlar. SQL, gerçekten de, bir web uygulamasının (ve kullanıcıların) veritabanı ile etkileşebilmeleri için tek yoldur. Veritabanlarına örnek olarak Oracle, Microsoft Access, MS SQL Server, MySQL ve Filermaker Pro verilebilir.
SQL komutları arasında belli başlı olarak SELECT, INSERT, DELETE ve DROP TABLE sayılabilir. DROP TABLE kelime anlamı olarak da görüleceği gibi belirli isimdeki bir tablonun silinmesini sağlar.
Yukarıdaki login sayfası örneğinde normal bir senaryoda web uygulaması için planlanan SQL komutları aşağıdaki gibi olabilir:
SELECT count(*)
FROM kullanici_listesi_tablosu
WHERE kullanici='KULLANICI_ALANI'
AND sifre='SIFRE_ALANI'
Bu SQL komutu veritabanı sunucusunda depolanan bilgi ile kullanıcının girdiğini eşleştirmeyi dener.
Çoğu web uygulamasının içine veritabanı ile haberleşebilmesi ve fonksiyonlarını gerçekleştirebilmesi için belirli bazı SQL sorguları gömülür. Eğer web uygulamasının herhangi bir giriş alanı doğru olarak filtrelenmez ise, bir saldırgan ek SQL komutları enjekte ederek web uygulamasının çalıştıracağı SQL komutlarını artırabilir, böylece orjinal dizayn ve fonksiyonun ötesine geçer.
Böylece saldırganların veritabanı ile arasında temiz bir haberleşme kanalı kurulacaktır.


Veritabanım SQL Enjeksiyon'dan etkileniyormu?


SQL Enjeksiyon şu an Internet'te kullanılan en genel uygulama katmanı saldırılarından biridir. SQL Enjeksiyon saldırılarına karşı korunmak kolay olsa da halen bu açıktan etkilenen çok sayıda web uygulaması var.
Web Uygulama Güvenliği Konsorsiyum'una (WASC) göre 27 Temmuz 2006 tarihine kadar medyada rapor edilen hack olaylarının %9'u SQL Enjeksiyon saldırılarından kaynaklanmıştı. Araştırmalarımızdan elde ettiğimiz daha güncel veriler web sitelerinin %50'sinin SQL Injection saldırılarından etkilendiğini ortaya koydu.
Eğer programcı değilseniz veya web uygulamanızı siz kodlamadıysanız web sitenizin ve uygulamanızın SQL Enjeksiyondan etkilenip etkilenmediği sorusunu cevaplamak biraz zor olabilir.
Bir saldırganın veritabanında depolanmış olan verilerinizi görüp göremeyeceği web sitenizin nasıl kodlandığına bağlı. Kesin olan şey saldırganların etkilenen sistemlerde, sistemi ele geçirmek için veya bilgi edinmek için, istedikleri SQL komutlarını çalıştırabileceğidir.
Eğer düzgün kodlanmadıysa müşteri veya firma verilerinizin ele geçirilmesi riski söz konusudur.
Bir saldırganın nelere erişebileceği de veritabanında ayarlanmış olan güvenlik seviyesine bağlıdır. Veritabanı sadece belirli bazı komutların çalıştırılmasına izin veriyor olabilir. Normalde web uygulamaların ön yüzleri için sadece okuma izni verilir.
Saldırgan sistemde veya verilerde değişiklik yapamasada hala değerli bilgileri okuyabilir.


SQL Enjeksiyon'un etkileri nedir?


Bir saldırgan sistemin SQL Enjeksiyon saldırısından etkilendiğini tespit ettiğinde bir giriş alanından SQL sorgu ( komutlarını çalıştırmaya başlar. Bu veritabanınızı saldırganın eline verip istediği SQL komutlarını çalıştırmasına, istediği verileri silmesine ve değiştirebilmesine izin vermek gibidir.
Saldırganın istediği komutları çalıştırması veritabanı bütünlüğünün bozulmasına ve önemli bilgilerin görülmesi ile sonuçlanır. Arka planda kullanılan veritabanına bağlı olarak SQL enjeksiyon açıkları saldırgan için değişik seviyelerde veri/sistem erişimi sunar.
Bazı durumlarda dosyalardan okumak veya dosyalara yazmak, ya da işletim sisteminde komutlar çalıştırmak mümkün olabilir. Micorosft SQL sunucusu gibi bazı SQL sunucuları stored ve extended prosedürler (veritabanı sunucusu fonksiyonları) içerirler. Eğer bir saldırgan bu prosedürlere ulaşabilirse bu tam bir felaket olacaktır.
Maalesef SQL enjeksiyon etkileri sadece veri hırsızlığı veya hack sonrası farkediliyor.


Bir SQL Enjeksion saldırısı örneği


login ve şifre den oluşan iki giriş kabul eden basit bir HTML formunu inceleyelim:
<form method="post" action="http://testasp.acunetix.com/login.asp">
<input name="tfUName" type="text" id="tfUName">
<input name="tfUPass" type="password" id="tfUPass">
</form>
login.asp'nin en kolay çalışma şekli aşağıdaki gibi bir veritabanı sorgusu hazırlamakla olabilir:
SELECT id
FROM logins
WHERE username = '$username'
AND password = '$password’
Eğer $username ve $password değişkenleri kullanıcı girişinden direk olarak alınıp SQL sorgusunda kullanılıyorsa çok kolay bir şekilde hack edilebilir demektir. Kullanıcı adı olarak "Olympos" verdiğimizi ve şifre için de aşağıdakini yazdığımızı varsayalım:
falan' OR 'x'='x
SELECT id
FROM logins
WHERE username = 'Olympos'
AND password = 'falan' OR 'x'='x'
Web uygulamasında kullanıcı girişleri doğru olarak filtrelenmediği için, tek tırnak kullanımı WHERE sql komutunu iki-bileşenli bir sorguya dönüştürdü.
'x'='x' bölümü ilk bölüm ne olursa olsun şartın doğru olmasını garantiler.
Bu da saldırganın login form'unu geçerli bir kullanıcı / şifre kombinasyonu bilmesine gerek kalmadan aşabilmesini sağlar.

SQL Enjeksiyon saldırılarını nasıl engellerim?


Güvenlik duvarları ve benzer saldırı tespit mekanizmaları bu konuda tam bir koruma sağlamayabilir. Web sitenizin herkese açık olması gerektiği için güvenlik mekanizmaları web trafiğinin veritabanı sunucularınız ile web uygulaması aracılığı ile haberleşmesine izin verecektir. Zaten bunun için tasarlanmadılarmı?
Sunucularınızı, veritabanlarını, programlama dillerini ve işletim sistemlerinizi güncelleyip yamalarını geçmeniz kritik öneme sahip fakat SQL Enjeksiyon saldırılarını engellemede tam çözüm değildir.

Sql Açıkları Dökümanı İçin Tıkla




SPAM Sitelerinden Kurtulmak

Bazı api vb.yöntemlerle arama sonuçlarına göre oluşturulan sayfalarda site linklerinizin sonuna ?ref=xsite.net gibi ekler getirilerek, google vb.arama motorlarında bu urller sitenize bağlı sayfaymış gibi görünür.

örnekle açıklayalım:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] adresi
tahmini gerçek sayfa sayısı: 130
googleda indexli sayfa sayısı: 180
googleda indexli ?ref= li url sayısı: 80


yani, 80 tane benim yapmadığım ve orjinal sayfayla farkı olmayan sayfam indexlenmiş. peki sitemize ne zararı var; bilirsiniz spam sayfa oluşturmak sandbox veya ban sebebi birçok arama motorunda. örneğin, [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ile [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] arasında (sayfa içeriği olarak) ne fark var. fark yok. google ve bazı arama motorları bunu sizin kopya içerik olarak spam niyetiyle yaptığınızı sanabilir.

çözümü bu linklerin orjinal url lere ama ?ref lerden arınmış şekilde yönlendirmesi olarak kabul ediliyor. htaccess yöntemini henüz bikaç gündür denedim. bunu sizle canlı paylaşmak istemem, hem spam sayfaları görmeniz, hem başarılı olursa önümüzdeki günlerde beraber paylaşmamız. kesin işe yarar diyemem. ama bunlardan kurtulmak için denemeye değer.

.htaccess yöntemi


PHP- Kodu:
RewriteCond %{THE_REQUEST} \?(ref=.*)?\ HTTP [NC]
RewriteRule .? http://www.siteadi.com%{ 

Php Yöntemi


PHP- Kodu:
list($adres2) = explode("?ref"$_SERVER['REQUEST_URI']);  
$adresim "http://".$_SERVER['SERVER_NAME'].$adres2;  

if (
eregi('ref='$_SERVER['REQUEST_URI'])) {  
header"HTTP/1.1 301 Moved Permanently" );  
header("Location: ".$adresim);  


Devamı Gelecektir Saygılarımla


Jairia isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 08 Eylül 2013   #2
Kostebek Adam JR - ait Kullanıcı Resmi (Avatar)
Üye Profil Bilgileri
Üyelik tarihi: 06 Ağustos 2013
Alter: 22
Mesajlar: 27
Konular: 7
Rep Puanı: 10
Rep Gücü: 32
Rep Derecesi : Kostebek Adam JR is on a distinguished road
Aldığı Teşekkürler: 1
Ettiği Teşekkürler: 1
Standart Cevap: Site Üzerinden Hacklenmeye Son

Teşekkürler



Üye Profil Bilgileri


Köstebek Adam JR
"Karanlıkta Yaşayan Adam"
Kostebek Adam JR isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 17 Şubat 2014   #3
Avatar Yok
Üye Profil Bilgileri
Üyelik tarihi: 17 Şubat 2014
Alter: 21
Mesajlar: 29
Konular: 11
Rep Puanı: 10
Rep Gücü: 33
Rep Derecesi : nurisik21 is on a distinguished road
Aldığı Teşekkürler: 0
Ettiği Teşekkürler: 0
Standart Cevap: Site Üzerinden Hacklenmeye Son

++++++++++++++



nurisik21 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 01 Mart 2014   #4
Avatar Yok
Üye Profil Bilgileri
Üyelik tarihi: 01 Mart 2014
Mesajlar: 21
Konular: 1
Rep Puanı: 10
Rep Gücü: 25
Rep Derecesi : KadirErmn is on a distinguished road
Aldığı Teşekkürler: 0
Ettiği Teşekkürler: 0
Standart Cevap: Site Üzerinden Hacklenmeye Son

Teşekkürler.



KadirErmn isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 17 Mart 2014   #5
gizemliok - ait Kullanıcı Resmi (Avatar)
Üye Profil Bilgileri
Üyelik tarihi: 06 Nisan 2013
Mesajlar: 894
Konular: 178
Rep Puanı: 3190
Rep Gücü: 899
Rep Derecesi : gizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond reputegizemliok has a reputation beyond repute
Aldığı Teşekkürler: 59
Ettiği Teşekkürler: 64
Standart Cevap: Site Üzerinden Hacklenmeye Son

Jairia Nickli Üyeden Alıntı Mesajı göster


Olası Hacklenme Nedenler :

Forum Gibi Dosyaların İçindeki Açıklar.
Market Gibi Dosyaların İçindeki Açıklar.
Ticket Sistemi Gibi Dosyaların İçindeki Açıklar.
Site Panellerinin İçine Koyulan Açıklar.




Server Değil Host Hacklenir!

Host Hacklendiğinde sizin site bilgilerinize ulaşılabilir. Burdanda Config Dosyaları Açılır ve navicat hacklendir.


Site Üzerinden Putty Hacklenmez.

Evet Siteniz hacklendiğinde bi bakmışsınız putty duruyor. Çünkü Config dosyalarınızda sadece navicat var.


Sitem Sürekli Hackleniyor Ne Yapmalıyım ?

Siteniz Hackleniyorsa. Market - Forum ve Ticket'ı silin. Hala hackleniyorsa yeni bir panel bulun.

Herşeyi Yaptım %100 oyunumu koruyacak bişey yok mu ?

İşte Konunumn en mükemmel yerine geldik. Config dosyanizi görünmez kodlamak Onun için BU SİTE'yi kullanıcağız.

Config Dosyanızı içindekileri Burdaki alana yapıştırın. Ve Encode diyin. Böylece Config Dosyası Kodlanmış oldu. Hostunuz hacklense bile config i açınca saçma kodlar görücekler ve oyununuza dokunamayacaklar.


Css / Xss Açıkları Nasıl Kapatılır Alınacak Yöntemler Nelerdir ?

Söz edeceğimiz açık 2000 senesinden beri bilinen ama nedense hala web programcıları tarafından göz ardı edilen bir açıktır.



XSS Kullanıcının girdi sağlayacağı sayfalarda kullanıcı tarafından girdiye script�ler gömülerek yapılan saldırılardır. Bu bazen direkt kullanıcının (lamer) kendisi tarafından ya da onu başka bir isteye yönlendirmek isteyen bir lamer tarafından yapılıyor olabilir.


�Genelde cross site scripting açıkları saldırganın sistemi deneme-yanılma yaparak bulması ile ortaya çıkar. Açığın bulunması ile saldırgan başka bir domainden açığın bulunduğu domain ve sayfanın bilgilerini session bilgilerini ve diğer obje değerlerini çalmasına olağan sağlar.

"Cross-site scripting (XSS) güvenlik açıkları e-posta listelerinde en çok rastlanan güvenlik açıkları arasında yer almaktadır. Bunun başlıca nedeni ise bu açığa bir çok web uygulamasında rastlanması ve ücretsiz güvenlik açığı tarama yazılımları ile kolayca keşfedilmesidir..."

Çözüm:


Aslında çözüm yazılan kodlamanın düzeltilmesindedir.

Programın kullanıcıdan aldığı girdiler her zaman kontrolden geçirilmelidir. Bu aynı zamanda "Sql injection" "Buffer Overflow" gibi saldırıları da engelleyecektir.


Eğer belirli bir tür veri (numerik alfanümerik) bekleniyorsa ve belirli bir boyutta ( 8 karakter maksimum 20 karakter gibi) olması bekleniyorsa girilen verinin bu şartlara uyduğunun sağlanması gerekmektedir. Girdilerden metakarakter�ler mutlaka filtrelenmelidir. Bu birçok saldırıyı engelleyecektir. Örneğin ...
< > " � % ; ) ( & + -

karakterleri kullanıcı girdisinden temizlenmelidir. Aslında ne tür verinin beklendiği belirtildiği durumlarda bu tür filtreleme de otomatikman gerçekleşecektir.Bu tür karakterlerin gerektiği ortamlarda girilen verinin encode edilmesi gerekebilir.Bu önlemler birçok XSS saldırısını engelleyecektir.Web üzerinden yazılım geliştirenlerin Cert�in referansında yazılı olanlara dikkat etmesi ve kodlamalarında dökümanda belirtilen kurallara uyması gerekmektedir.

Ağda kurulacak bir sistemle bu saldırıların engellenmesinin sağlanması ise ancak sunucuları bir "proxy" veya IPS arkasına koyup her türlü data verisinin kontrolü ve düzeltilmesi ile sağlanabilir. Bu süreçte ise idari ve teknik çeşitli problemler yaşanabilecektir.


En etkin yol dökümanda belirtildiği üzere sunuculardaki kodun tekrar elden geçirilmesidir. Eğer kodu yazan ortalıklarda gözükmüyorsa ya o kod kaldırılmalı ya da ağ tabanlı bir çözüme gidilmelidir.


Sql Injection nedir? Nasil sitemi ona karsi koruyabiliriz?

"Web uygulamalarinda bir cok islem icin kullanicidan alinan veri ile dinamik SQL cumlecikleri olusturulur. Mesela "SELECT * FROM Products" ornek SQL cumlecigi basit sekilde veritabanindan web uygulamasina tum urunleri dondurecektir. Bu SQL cumlecikleri olusturulurken araya sikistirilan herhangi bir meta-karakter SQL Injection� a neden olabilir."

Gunumuz web uygulamalarinin cogu dinamik bir yapi olmasi, daha hizli guncellemek, data (veri) ile interface (arayuzu) birbirinden ayirmak icin database (veri tabani) kullanir. Databaseden veri cekmek icin Sql komutlar uygulanir. Sitelerde dinamik bir yapi nedeniyle, parametre gonderme islemleri olmaktadir. Bu parametre islemleri POST ve GET yolu ile olmaktadir. Siz egerki bu parametreye metakarakterler kullanarakdan sitedeki kod icindeki sql komuta mudahale edebilmis olacaksiniz. Boylece parametre uzerinden Sql komuta mudahale etmis, istedigimiz sekilde degistirip, database uzerinde veri silme, guncelleme, ekleme gibi basit; server da cmd calistirma, oturum kulanicisi ekleme, serverin file (dosya) sistemine erisme gibi komplex islemler mumkun kilinabilinmektedir. Sizlere bu konuda sadece nasil yapildigi degil nasil korunacagindan bahsedecegim.

Oncelikle kullaniciya hic bir zaman guvenmiyeceksiniz. Disardan gelen tum parametreleri kontrol etmemiz gerek. Bunlar request.form("") ve request("") seklinde gelen tum veriler. (Ben size ASP web programlama dilinde anlatacam cozumu. )


<%
�***************************** ******************** ***************
�******* Ejder �s SQL INJECTION SECURITY SYSTEM
�***************************** ******************** ***************

Function SqlCracker(ejder)
� ejder parametresi ile gelen bilgi, Sql ve Xss icin filtrelenmektedir.
ejder = Replace(ejder, "<", "<")
ejder = Replace(ejder, ">", ">")
ejder = Replace(ejder, "<br>", "<br>")
ejder = Replace(ejder, "[", "&?")
ejder = Replace(ejder, "]", "&?")
ejder = Replace(ejder, """", "", 1, -1, 1)
ejder = Replace(ejder, "=", "&?", 1, -1, 1)
ejder = Replace(ejder, "�", "��", 1, -1, 1)
ejder = Replace(ejder, "select", "sel&?ct", 1, -1, 1)
ejder = Replace(ejder, "convert", "conver_t", 1, -1, 1)
ejder = Replace(ejder, "cast", "cas_t", 1, -1, 1)
ejder = Replace(ejder, "join", "jo&?n", 1, -1, 1)
ejder = Replace(ejder, "union", "un&?on", 1, -1, 1)
ejder = Replace(ejder, "where", "wh&?re", 1, -1, 1)
ejder = Replace(ejder, "insert", "ins&?rt", 1, -1, 1)
ejder = Replace(ejder, "delete", "del&?te", 1, -1, 1)
ejder = Replace(ejder, "update", "up&?ate", 1, -1, 1)
ejder = Replace(ejder, "like", "lik&?", 1, -1, 1)
ejder = Replace(ejder, "drop", "dro&?", 1, -1, 1)

�ejder degiskeni filtrelendi, return icin SqlCracker a yukleniyor.
SqlCracker = ejder

End Function
%>


ASP icin hazirlanmis kodumuz budur. Disardan gelen veriyi SqlCracker() seklinde almamiz gerek.

SqlCracker(request.form("id"))

Bu sayede meta-karakter lere izin verilmicek. Sql sorgumuza mudahale edilmemis olacak. Edilse bile islememis olacak. Bunu biraz daha gelistirebiliriz. Yukardaki ilk 8 durumdan birini icerirse, banlist e ekleme yada hata verip , response.end ile sayfanin geri kalan kisminin islemesini engelleyebiliriz. Bu onlemleri aldiginiz taktirde Sql injectiondan korkmayin. ( SqlCracker() fonksiyonu ayni zamanda, Xss acigini engellemek icinde kullanabiliriz. Her iki ozellik dusunerekden tum onlemler alindi. ). Yapmamiz gereken diger ekstra onlemler ise;

- Veritabanimiza kisitli erisim hakki sagliyarakda, korumada saglanir. Mesela site uzerinden database e erisim yetkileri kisitli yapip, sadece okuma verilebilinir.
- Dinamik sql sorgularindan uzak duralim. Parametre gondererek yada stored procedureler kullanilmasi daha guvenlidir.
- Veritabanimizdaki onemli verileri, sifreleme algoritmasi kullnarak islem yapilmasi gerekir.
- Sitemizde parametre yolu ile hata cikmasini en aza indirmemiz gerekir.


Bazi saldiri yazilimlarindan sitemizi nasil koruyabiliriz?


Sitenize surekli saldiri yapiliyor, servis disi kaliyor. Ilk adim, bu saldirinin turunu ve nereye yapildigini ogrenmek. Evet ana sayfamiza surekli binlerce request yani istekde bulunulmus. Dogal olarakda sitemiz cevap veremez duruma gelmis. Bu durumda browser bilgilerine bakacaz loglardan. Hangi programla yapilmis ve normal kullanicidan farkli bir durum ariyacaz.

Ben bu tur saldirilarla karsilastigim icin. Onceden onlem aldim. Mesela *Lamer Program Adı Yasaktır* diye bir yazilim vardir. Surekli connection acar durur. Kapatmazda , server kisa sure sonra cevap veremez duruma gelir. Peki bu durumda nasil engelleriz derseniz. Bizim Web programciligi adina yapmamiz gereken cozumlerden biri, browser bilgisini filtrelemektir. Mesela *Lamer Program Adı Yasaktır* ile kendi ozel siteme degisik tarzda saldirilar yaptim. Teslerim sonucu sunu gozlemledim. Her sitemize requestde bulundugunda kullanilan browser bilgisi farkli idi. Yani Browser bilgisi "*Lamer Program Adı Yasaktır*" kelimesini icermekteydi. Buda bize onu filtreleyebilme sansi verdi. Vede asagidaki kodu yazdim.


<%
�***************************** ******************** ***************
�******* Tutulmaz �s *Lamer Program Adı Yasaktır* Protecter SYSTEM
�***************************** ******************** ***************
Dim BrowseVar

�Siteye giren kisinin browser bilgisi.
BrowserVar = Trim(Request.ServerVariables(" HTTP_USER_AGENT"))

If BrowseVar <> "" Then

�icinde *Lamer Program Adı Yasaktır* geciyorsa , banlama sistemine gonder.
If Instr(BrowseVar, "*Lamer Program Adı Yasaktır*") <> 0 Then
response.end
else If Instr(UCASE(BrowseVar), "*Lamer Program Adı Yasaktır*") <> 0 Then
response.end
else If Instr(UCASE(BrowseVar), "*Lamer Program Adı Yasaktır*") <> 0 Then
response.end
end if
end if
end if

end if

%>


Testlerimde cok basarili oldu. Cok etkili bir sekilde saldirinin yukunu azaltiyor. Burda saldiri programi yazan kisi icin dikkat edilmemis bir ayrinti idi. Ama bizim isimize yaradi bu ayrinti. Biz *Lamer Program Adı Yasaktır* saldirisini ? yapilip yapilmadgini anliyabilecegiz artik..

Mesela bir baska saldiri programlarindan , POST saldirisi yapan denyo yaziliminin browser bilgisinde de "holyone" icermekteydi. Boylece onuda filtreleyebildik.


<%
�***************************** ******************** ***************
�******* Tutulmaz �s DENYO Protecter SYSTEM
�***************************** ******************** ***************
Dim BrowserVar

�Gelen kisinin Browser bilgisini aliyoz
BrowserVar = Trim(Request.ServerVariables(" HTTP_USER_AGENT"))


If BrowseVar <> "" Then

If Instr(BrowseVar, "Denyo") > 1 Then
response.end
else If Instr(UCASE(BrowseVar), "HOLYONE") > 1 Then
response.end
else If Instr(BrowseVar, "HolyOne") > 1 Then
response.end
else If Instr(BrowseVar, "Nightmare") > 1 Then
response.end
else If Instr(UCASE(BrowseVar), "NIGHTMARE") > 1 Then
response.end
end if
end if
end if
end if
end if

end if

End Sub
%>


Sonuc olarak ciddi cozum bulduk. Sitemizdeki kodlarin hepsi islemeden hatta veritabani ile iletisim kurmadan bu tur kontrol yaptigimizda, ciddi anlamda saldiriyi etkisiz hale getirmis oluyoruz.

Bu tur programlarin ne tur bilgi gonderdini ogrenmek icin illa sitenizde denemeniz gerekmez. Bir tane Paket izleme yani sniffer yazilimi kulanarakdan, gonderdigi request bilgisinden ne tur browser bilgisi gonderdigini, turunu , nereye saldirdigini ogrenebilirsiniz. Vede o yonde sitenizde onlemler kod bazli alabilirsiniz.

Her saldiriyi bu sekilde asamayiz tabikide. Yeterlide olmiyacaktir. Sadece web programlaa dili adina nasil kendimizi maximum koruyabileceigimizden bahsetmeteyim. Tabikide mumkun oldugunca optimum kod yamamiz, az kaynak harcama ve veritabanina minimum erisimler saglamamiz ? bu tur saldilarin etkisini azaltacaktir..

Sizlere ornek bir POST paket gostereyim.


POST /fight-club/fight.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
x-flash-version: 9,0,47,0
Content-Type: application/x-www-form-urlencoded
Content-Length: 39
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: apps.facebook.com
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: Cookie: __utma=456546497.1131734494.11 90402303.114568562.1 194561491.150; __utmz=252321497.1194011491.15 0.125.utmccn=(referr al)|utmcsr=facebook.com|utmcct =/profile.php|utmcmd=referral; __utmb=456546597; __utmc=456456497; ABT=5967c5ab4b4d56560d393b4a82 0d67e%36594082139%3A A%235967c5ab4b4d2f4170d393b4a8 20d67e15656A11940821 39%3AA%23558501336a9f79e16394d 2e3b8d24d4f1st%3A119 4609ggg17%3AA; login_x=xxxxxx%40hotmail.com; xs=327ff8e565f318a94f35add51f0 56b5c; c_user=4565469422; sid=2

uid=4565434445&comp=true&fight =Fight+Opponent


Bu paketde, sizin browser bilginiz, cookie degeriniz, post degeri, islemcinizi gorebilirsiniz. Bu normal bir webbrowser ile gonderilen POST verisidir.



Upload, resim aciklari nelerdir?


Bu dokumanimdaki son kismi buna ayirdim. Sizlere Asp ve Php icin bahsedecegim. Sitelerimizde resim yukletmek, yada dosya yukletme gereksinimi cok duyariz. Mesela sizlere direk buyuk bir sirketin aspx le yazdigi bir sitenin acigindan bahsedeyim.

Argesoft yazilimi olan, argesoft, logosoft, boyner, argenet gibi sirketlerin kullandigi bir aspx tabanli site. Admin panelinein userlist kismina sifresiz, cookie kontrolsuz girdim. Evet garip ama gercek. Google ada o kisim referans gitmis. Her neyse. Ben admin paneline girdim, sifreleri degistirdim. Shell yuklemem gerekiyordu. Orda dikkatimi ceken bir kisim vardi. Resim upload kismi. Sadece jpg,gif yuklenebiliyormus yazdigina gore. Peki? Neye gore kontrol ediiyor. Eger yuklenen dosyanin icinde jpg ? kelimesi var yok ona goremi, yoksa duzgunce filtreleyip, resim oldugunu anliyacak bir cozum uretmislermiydi? Ne yazikki adamlar icinde jpg, gif kelimeleri geciyorsa izin veriiyormus. Bende efso.jpg.asp (asp shell) diye dosyami bir guzel upload edip, server a sizmistim. Vede site yazilimlarini kendime yedeklemistim. Gordugunuz gibi cok komik bir durum. Bu tur sorun bir cok asp tabanli sitelerde vardir. Dosya icinde aramak degilde, dosya adinda, noktadan sonraki terime bakilmasi gerekmektedir.

Simdi sizlere PHp den bahsedeyim. Once Linux hakkinda bilgi verem. Linuxda dosyalarin uzantilari onemsizdir. Yani uzantiya hic bakmaz. Dosyanin icindeki tagladan ne oldugunu anlar. Simdi baska bir basima gelen olaydan bahsedeyim. Php tabanli resim upload edilen bir site vardi. Sadece resim dosyasi kabul ediyordu. Peki uzanti onemsizse, resim oldugunu icindeki taglardan anliyordu. Bende phpde hazirlanis shell dosyam, shell.php yi yuklettim. Fakat resim olmadigi icin kabul etmedi. Bunun uzeirne shell.php nin ilk satirina, GIF89a; yazdim. Ve tekrar denedim. Ve bu seferinde, sistem kabul etti, yukledi bir guzel ve bana linkinide verdi. Boylece server a ulasmis oldum. Bir baska olay ise, php tabanli sitelerde, avatar yukleme olayi vardir. Onda ise gif resmi notepad2 ile acip, sonuna php kod yazip, yukleyip , calistirtmaktaydik. Boylece gif icindeki kodumuz, sorunsuz execute etmekte idi.

Bu sekilde bir cok olay yasadim. O yuzden upload sistemini tasarlarken, bu soylediklerimi unutmamaniz gerek. Ona gore onlem anlmaniz gerekir. Unutmayinki kullanicilara guven olmaz


Geldiiik Programlara

Anti Trojan Elite(ATE) bir malware silicidir. Sisteminizdeki malware�leri bulur ve siler. Anti Trojan Elite gerçek zamanlı bir malware firewall duvarı olarak da iş görmektedir. Öncelikle bir trojan veya keylogger yüklenirse bunu ATE ile kolay bir şekilde tespit edebilirsiniz. Ve ATE bu zararlı dosyayı anında engeller ve size zaman içinde bu dosyayı silme imkanı verir. 35 binden fazla trojan�ı tespit edebilir, solucanları, keylogger�ları tespit edebilir ve silebilir.

TCP bağlantısını da koruyarak buradan gelebilecek her türlü tehlikeye karşı sizi uyarır. Güncellemeleri ile de her daim tetikte durur.

Trojan kütüphanesi yeni versiyon ile birlikte güncellenmiştir.


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


SQL Injection Açığı İle İlgili Bilgiler

SQL Injection Nedir?
SQL Injection saldırganların veri çalma/değiştirmede kullandıkları web saldırı metodlarından biridir. Belkide günümüzde en çok kullanılan uygulama seviyesi tekniklerden biridir. Web uygulamasındaki güvensiz kodlamalardan yararlanarak login formu gibi kullanıcı girişlerinin SQL sorgusunda kullanıldığı yerlerde SQL komutları eklenmesi ile veritabanına yetkisiz erişim sağlar.
SQL Injection: Detaylı Açıklama
Web uygulamaları web sitesini ziyaret eden kullanıcıların web tarayıcıları ile bir veritabanından veri görüntüleyebilmelerini sağlarlar. Veritabanları çoğu web sitesinde kullanılır ve ziyaretçilere spesifik bilgilerin sunulması için veri depolama amaçlı kullanılırlar. Kullanıcı bilgiler, finansal ve ödeme bilgileri, firma istatistikleri bir veritabanında bulunabilir ve hazır veya özel yazılmış uygulamalar ile erişilebilirler.
SQL Injection, bir web uygulaması üzerinden arka plandaki veritabanında çalıştırılması için SQL komutlarının gönderilmesidir. Eğer web uygulamasında kullanıcı tarafından gelen tüm parametreler doğru olarak filtrelenmemişse saldırganlar tüm veritabanı içeriğini görebilir veya silebilirler.
Login sayfaları, destek veya ürün istek formlar, yorum/iletişim formları, arama sayfaları, alışveriş sepeti sayfaları dinamik içeriğin sunulduğu çeşitli sayfalardır ve modern iş dünyasında müşteriler ile veya kullanıcılar ile haberleşmede vazgeçilmezdir.
Bu tip web siteleri SQL Injection saldırılarından etkileniyor olabilir.
SQL Injection: Basit bir örnek
Normal bir kullanıcının kendi kullanıcı adı ve şifre kombinasyonu ile giriş yaptığı bir login sayfası düşünün.
Normal kullanıcı bilgilerini gönderdiğinde bu bilgilerden bir SQL sorgusu yaratılarak doğrulama için veritabanına gönderilir. Eğer geçerli ise kullanıcının erişimine izin verilir. Diğer bir deyişle login sayfasını kontrol eden web uygulaması kullanıcı adı şifre kombinasyonunu doğrulamak için planlanmış komutları kullanarak veritabanı ile haberleşir. Doğrulandığında da kullanıcının erişimine izin verilir.

SQL Enjeksiyon ile saldırganlar login formu engelini aşarak arkasındakileri görmek için özel olarak hazırlanmış SQL komutları girerler. Bu sadece eğer kullanıcı tarafından sağlanan girişler doğru olarak filtrelenmiyor ve direk olarak SQL sorgusu ile veritabanına gönderiliyorsa mümkün olabiliyor. SQL Enjeksiyon açıkları saldırganların direk olarak veritabanı ile haberleşmesini sağlarlar.

Bu tip saldırılardan etkilenen teknolojiler ASP, ASP.NET, PHP, JSP ve CGI gibi dinamik script dilleridir. SQL Enjeksiyon saldırısı yapacak olan bir saldırganın tek ihtiyacı olan bir web tarayıcısı, SQL sorguları hakkında bilgidir. SQL Enjeksiyonun basitliği onu popüler yapan en büyük etken.
Nasıl olurda bir güvenlik duvarı veya diğer güvenlik mekanizması arkasındaki bir veritabanına direk olarak SQL sorguları geçer?
Güvenlik duvarları ve benzer saldırı tespit mekanizmaları tam ölçekli bir SQL enjeksiyon web saldırısına karşı çok az hatta bazen hiç koruma sağlamazlar.
Web sitenizin herkese açık olması gerektiği için güvenlik mekanizmaları web uygulamanıza erişime (genelde port 80/443) izin verecektir. Ve web uygulamasının istenilen bilgileri gösterebilmesi için veritabanına erişim yapabilmesi gerekir.
SQL veya Structured Query Language verileri bir veritabanına depolamanızı, değiştirmenizi ve çağırabilmenizi sağlar. SQL, gerçekten de, bir web uygulamasının (ve kullanıcıların) veritabanı ile etkileşebilmeleri için tek yoldur. Veritabanlarına örnek olarak Oracle, Microsoft Access, MS SQL Server, MySQL ve Filermaker Pro verilebilir.
SQL komutları arasında belli başlı olarak SELECT, INSERT, DELETE ve DROP TABLE sayılabilir. DROP TABLE kelime anlamı olarak da görüleceği gibi belirli isimdeki bir tablonun silinmesini sağlar.
Yukarıdaki login sayfası örneğinde normal bir senaryoda web uygulaması için planlanan SQL komutları aşağıdaki gibi olabilir:
SELECT count(*)
FROM kullanici_listesi_tablosu
WHERE kullanici='KULLANICI_ALANI'
AND sifre='SIFRE_ALANI'
Bu SQL komutu veritabanı sunucusunda depolanan bilgi ile kullanıcının girdiğini eşleştirmeyi dener.
Çoğu web uygulamasının içine veritabanı ile haberleşebilmesi ve fonksiyonlarını gerçekleştirebilmesi için belirli bazı SQL sorguları gömülür. Eğer web uygulamasının herhangi bir giriş alanı doğru olarak filtrelenmez ise, bir saldırgan ek SQL komutları enjekte ederek web uygulamasının çalıştıracağı SQL komutlarını artırabilir, böylece orjinal dizayn ve fonksiyonun ötesine geçer.
Böylece saldırganların veritabanı ile arasında temiz bir haberleşme kanalı kurulacaktır.


Veritabanım SQL Enjeksiyon'dan etkileniyormu?


SQL Enjeksiyon şu an Internet'te kullanılan en genel uygulama katmanı saldırılarından biridir. SQL Enjeksiyon saldırılarına karşı korunmak kolay olsa da halen bu açıktan etkilenen çok sayıda web uygulaması var.
Web Uygulama Güvenliği Konsorsiyum'una (WASC) göre 27 Temmuz 2006 tarihine kadar medyada rapor edilen hack olaylarının %9'u SQL Enjeksiyon saldırılarından kaynaklanmıştı. Araştırmalarımızdan elde ettiğimiz daha güncel veriler web sitelerinin %50'sinin SQL Injection saldırılarından etkilendiğini ortaya koydu.
Eğer programcı değilseniz veya web uygulamanızı siz kodlamadıysanız web sitenizin ve uygulamanızın SQL Enjeksiyondan etkilenip etkilenmediği sorusunu cevaplamak biraz zor olabilir.
Bir saldırganın veritabanında depolanmış olan verilerinizi görüp göremeyeceği web sitenizin nasıl kodlandığına bağlı. Kesin olan şey saldırganların etkilenen sistemlerde, sistemi ele geçirmek için veya bilgi edinmek için, istedikleri SQL komutlarını çalıştırabileceğidir.
Eğer düzgün kodlanmadıysa müşteri veya firma verilerinizin ele geçirilmesi riski söz konusudur.
Bir saldırganın nelere erişebileceği de veritabanında ayarlanmış olan güvenlik seviyesine bağlıdır. Veritabanı sadece belirli bazı komutların çalıştırılmasına izin veriyor olabilir. Normalde web uygulamaların ön yüzleri için sadece okuma izni verilir.
Saldırgan sistemde veya verilerde değişiklik yapamasada hala değerli bilgileri okuyabilir.


SQL Enjeksiyon'un etkileri nedir?


Bir saldırgan sistemin SQL Enjeksiyon saldırısından etkilendiğini tespit ettiğinde bir giriş alanından SQL sorgu ( komutlarını çalıştırmaya başlar. Bu veritabanınızı saldırganın eline verip istediği SQL komutlarını çalıştırmasına, istediği verileri silmesine ve değiştirebilmesine izin vermek gibidir.
Saldırganın istediği komutları çalıştırması veritabanı bütünlüğünün bozulmasına ve önemli bilgilerin görülmesi ile sonuçlanır. Arka planda kullanılan veritabanına bağlı olarak SQL enjeksiyon açıkları saldırgan için değişik seviyelerde veri/sistem erişimi sunar.
Bazı durumlarda dosyalardan okumak veya dosyalara yazmak, ya da işletim sisteminde komutlar çalıştırmak mümkün olabilir. Micorosft SQL sunucusu gibi bazı SQL sunucuları stored ve extended prosedürler (veritabanı sunucusu fonksiyonları) içerirler. Eğer bir saldırgan bu prosedürlere ulaşabilirse bu tam bir felaket olacaktır.
Maalesef SQL enjeksiyon etkileri sadece veri hırsızlığı veya hack sonrası farkediliyor.


Bir SQL Enjeksion saldırısı örneği


login ve şifre den oluşan iki giriş kabul eden basit bir HTML formunu inceleyelim:
<form method="post" action="http://testasp.acunetix.com/login.asp">
<input name="tfUName" type="text" id="tfUName">
<input name="tfUPass" type="password" id="tfUPass">
</form>
login.asp'nin en kolay çalışma şekli aşağıdaki gibi bir veritabanı sorgusu hazırlamakla olabilir:
SELECT id
FROM logins
WHERE username = '$username'
AND password = '$password�
Eğer $username ve $password değişkenleri kullanıcı girişinden direk olarak alınıp SQL sorgusunda kullanılıyorsa çok kolay bir şekilde hack edilebilir demektir. Kullanıcı adı olarak "Olympos" verdiğimizi ve şifre için de aşağıdakini yazdığımızı varsayalım:
falan' OR 'x'='x
SELECT id
FROM logins
WHERE username = 'Olympos'
AND password = 'falan' OR 'x'='x'
Web uygulamasında kullanıcı girişleri doğru olarak filtrelenmediği için, tek tırnak kullanımı WHERE sql komutunu iki-bileşenli bir sorguya dönüştürdü.
'x'='x' bölümü ilk bölüm ne olursa olsun şartın doğru olmasını garantiler.
Bu da saldırganın login form'unu geçerli bir kullanıcı / şifre kombinasyonu bilmesine gerek kalmadan aşabilmesini sağlar.

SQL Enjeksiyon saldırılarını nasıl engellerim?


Güvenlik duvarları ve benzer saldırı tespit mekanizmaları bu konuda tam bir koruma sağlamayabilir. Web sitenizin herkese açık olması gerektiği için güvenlik mekanizmaları web trafiğinin veritabanı sunucularınız ile web uygulaması aracılığı ile haberleşmesine izin verecektir. Zaten bunun için tasarlanmadılarmı?
Sunucularınızı, veritabanlarını, programlama dillerini ve işletim sistemlerinizi güncelleyip yamalarını geçmeniz kritik öneme sahip fakat SQL Enjeksiyon saldırılarını engellemede tam çözüm değildir.

Sql Açıkları Dökümanı İçin Tıkla




SPAM Sitelerinden Kurtulmak

Bazı api vb.yöntemlerle arama sonuçlarına göre oluşturulan sayfalarda site linklerinizin sonuna ?ref=xsite.net gibi ekler getirilerek, google vb.arama motorlarında bu urller sitenize bağlı sayfaymış gibi görünür.

örnekle açıklayalım:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] adresi
tahmini gerçek sayfa sayısı: 130
googleda indexli sayfa sayısı: 180
googleda indexli ?ref= li url sayısı: 80


yani, 80 tane benim yapmadığım ve orjinal sayfayla farkı olmayan sayfam indexlenmiş. peki sitemize ne zararı var; bilirsiniz spam sayfa oluşturmak sandbox veya ban sebebi birçok arama motorunda. örneğin, [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ile [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] arasında (sayfa içeriği olarak) ne fark var. fark yok. google ve bazı arama motorları bunu sizin kopya içerik olarak spam niyetiyle yaptığınızı sanabilir.

çözümü bu linklerin orjinal url lere ama ?ref lerden arınmış şekilde yönlendirmesi olarak kabul ediliyor. htaccess yöntemini henüz bikaç gündür denedim. bunu sizle canlı paylaşmak istemem, hem spam sayfaları görmeniz, hem başarılı olursa önümüzdeki günlerde beraber paylaşmamız. kesin işe yarar diyemem. ama bunlardan kurtulmak için denemeye değer.

.htaccess yöntemi


PHP- Kodu:
RewriteCond %{THE_REQUEST} \?(ref=.*)?\ HTTP [NC]
RewriteRule .? http://www.siteadi.com%{ 

Php Yöntemi


PHP- Kodu:
list($adres2) = explode("?ref"$_SERVER['REQUEST_URI']);  
$adresim "http://".$_SERVER['SERVER_NAME'].$adres2;  

if (
eregi('ref='$_SERVER['REQUEST_URI'])) {  
header"HTTP/1.1 301 Moved Permanently" );  
header("Location: ".$adresim);  


Devamı Gelecektir Saygılarımla
Vaktim oldugunda okuyucam lazim

iphone5C cihazımdan Tapatalk 2 ile gönderildi



Üye Profil Bilgileri
https://www.facebook.com/furkanyusuf.mutlu

TR4 DARKORBİT HESAP ALİNİR...


İyi forumlar


gizemliok isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 21 Mart 2014   #6
Avatar Yok
Üye Profil Bilgileri
Üyelik tarihi: 25 Şubat 2014
Alter: 37
Mesajlar: 20
Konular: 0
Rep Puanı: 10
Rep Gücü: 24
Rep Derecesi : smaug15321 is on a distinguished road
Aldığı Teşekkürler: 0
Ettiği Teşekkürler: 0
Standart Cevap: Site Üzerinden Hacklenmeye Son

teşekkürler



smaug15321 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 10 Nisan 2014   #7
Avatar Yok
Üye Profil Bilgileri
Üyelik tarihi: 10 Nisan 2014
Alter: 27
Mesajlar: 21
Konular: 1
Rep Puanı: 10
Rep Gücü: 25
Rep Derecesi : sazakka999 is on a distinguished road
Aldığı Teşekkürler: 0
Ettiği Teşekkürler: 0
Standart Cevap: Site Üzerinden Hacklenmeye Son

saol



sazakka999 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 18 Ocak 2015   #8
Avatar Yok
Üye Profil Bilgileri
Üyelik tarihi: 03 Eylül 2014
Alter: 20
Mesajlar: 24
Konular: 4
Rep Puanı: 10
Rep Gücü: 28
Rep Derecesi : canqo1997 is on a distinguished road
Aldığı Teşekkürler: 0
Ettiği Teşekkürler: 0
Standart Cevap: Site Üzerinden Hacklenmeye Son

teşekkürler



canqo1997 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 08 Mart 2017   #9
Avatar Yok
Üye Profil Bilgileri
Üyelik tarihi: 05 Eylül 2015
Alter: 22
Mesajlar: 6
Konular: 2
Rep Puanı: 10
Rep Gücü: 9
Rep Derecesi : Kralbenimmmm is on a distinguished road
Aldığı Teşekkürler: 0
Ettiği Teşekkürler: 1
Standart Cevap: Site Üzerinden Hacklenmeye Son

Pasylasim İçin Tesekürler

Ekledi ; Pasylasim İçin Tesekürler



Kralbenimmmm isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 18 Haziran 2017   #10
Avatar Yok
Üye Profil Bilgileri
Üyelik tarihi: 18 Haziran 2017
Alter: 19
Mesajlar: 23
Konular: 3
Rep Puanı: 10
Rep Gücü: 24
Rep Derecesi : baris97855 is on a distinguished road
Aldığı Teşekkürler: 0
Ettiği Teşekkürler: 0
Standart Cevap: Site Üzerinden Hacklenmeye Son

teşekkürler



baris97855 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla

Seçenekler Arama
Stil

Yetkileriniz

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Wolfteam Bankamatik Üzerinden Nakit Alma Resimli Anlatim ( Kredi Kartsiz ) Fearle5 Wolfteam Genel Bilgi Paylaşımı 20 08 Mart 2017 20:10
Twitter üzerinden acil yardım planı SansarSalvo Bilim ve Teknoloji 0 22 Aralık 2012 20:55
BBM Voice ile BlackBerry Messenger üzerinden sesli görüşme artık mümkün eraykaratas Bilim ve Teknoloji 0 19 Aralık 2012 22:57
Tarayıcı Üzerinden 4Stoy ' i Daha Rahat Oynamak (Kasmayı Azaltmak) Furkan 4Story Oyun Yardım 0 27 Kasım 2012 20:24
Tarayıcı Üzerinden 4Story Oyna Furkan 4Story Oyun Yardım 0 27 Kasım 2012 20:23

Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 16:11.

Sistem Bilgileri Bilinmesi Gerekenler
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.6.1
User Alert System provided by Advanced User Tagging v3.1.0 (Lite) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd. Runs best on HiVelocity Hosting.
Lütfen Sorunlarınızı Buradan Bize Bildiriniz.

Sitedeki Tüm Paylaşımların Sorumlulukları Paylaşım Sahiplerine Aittir.
Soru Ve Sorunlarınız İçin Lütfen İletişim Bölümünü Kullanınız
Tema Tasarımı ForumZero.Net - Foxin


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736