weble ilgili bi bak derim genel kültürün ve bilgin artsın ....

gokhanjan

Yeni üye
23 Ara 2006
46
1
GENEL BİLGİSAYAR,GÜVENLİK VE HACK KONULU DERLEME


HTML Nedir?
HTML (Hyper Text Markup Language) internet üzerinde web sayfası oluşturmak için kullanılan bir betik dilidir. HTML dosyalarının aktarımı için HTTP (Hyper Text Transfer Protocol) kullanılır. HTML dosyaları sunucu bilgisayarın sabit diskinde .html ya da .htm uzantısı ile saklanır. Yazdığımız html dosyaları düz yazı dosyalarından başka bir şey değildir. Yani yazdığımız html dosyalarını bir C ya da Pascal programında olduğu gibi bir derleyici ile derlememize gerek yoktur. Bir siteye girdiğimiz zaman bize görüntülenen ilk sayfa index.html, index.htm, index.asp, index.php ya da default.htm dosyalarından birisidir. index.* dosyaları UNIX ve türevi sunucu sistemler, default.htm dosyasıda WinNT ya da türevi sistemler için giriş sayfası olur. Yukarıda saydıklarımın dışında uzantısı değişik birçok biçemdeki sayfalar da sunucu sistemin ayarları değiştirilerek giriş sayfası yapılabilir.
Web istemcimizin adres satırına http://www.ayyildiz.org gibi bir ifade yazarsak sunucu sistem bize, o adresin www kök dizinindeki index.html (ya da hangi giriş sayfası tanımlı ise) dosyasını görüntüleyecektir.
HTML’nin Yapısı
Daha öncede söylediğim gibi html dosyaları sadece düz yazı dosyalarıdır. HTML öğrenmesi oldukça basit ve yaratıcılığa fazla açık olmayan bir dildir. Basittir çünkü, internette gezinirken görüntülediğiniz sayfaların hazırlanırken kullanılan teknikleri öğrenmemiz mümkündür (Sayfanın üzerinde farenizin sağ tuşuna bastıktan sonra Kaynağı Görüntüle seçeneği ile). Beğendiğiniz tasarımları kendi sayfanızda kullanabilir, bu tasarımların hangi html kodları kullanılarak yapıldığını öğrenebilirsiniz. Yaratıcılığa fazla açık değil dedim çünkü html ile yazdığınız sayfalar PHP, ASP, ColdFusion, CGI... gibi web programlama dilleri kullanılmadan statik html dışına çıkamaz.
HTML kodlarını yazmak için özel bir düzenleyiciye ihtiyacınız yoktur. Bu iş için Windows altında NotePad ya da DOS-Edit, Linux altında pico, joe ya da vi gibi metin düzenleyicileri yeterlidir. HTML sayfalarınızı kod yazmaksızın FrontPage, Netscape Composer gibi programlarla da hazırlayabilirsiniz. Yalnız bu programlar kullanılarak hazırlanan sayfalar genellikle belli bir çerçeve içinde olduğu için zaten dar olan HTML’nin üreticilik alanını daha da daraltmaktadır. Bunun yanı sıra HTML’yi kod düzeyinde bilmenin kullanıcıya her zaman fayda getireceği de unutulmamalıdır (İleriki bölümlerde değineceğim Dinamik Web Tasarımı için HTML’nin kod düzeyinde bilinmesi gereklidir!).
**** Etiketi ile Yönlendirme Örneği
Burada <****> etiketindeki refresh özelliğini kullanarak yönlendirmeye bir örnek verdim.
Sayfada yazılı olan kodları herhangi bir metin düzenleyici içine yapıştırıp dosyaları belirtildiği gibi kaydedin. Daha sonra tek yapmanız gereken ornek_html2.html dosyasını üzerine çift tıklayarak açmak ;)
<!-- ornek_html2.html adı ile kaydedin -->
<html>
<head>
<title>Geçici Sayfa</title>
<! -- **** etiketindeki refresh kodu ile başka bir sayfaya yönlendirme yapılıyor -- >
<**** http-equiv="refresh" content="10;URL=ornek_html2_ana.html">
</head>
<body bgcolor=#334455 text=#eaeaea link=#eaeaea vlink=#eaeaea alink=#808080>
<br><br>
<center>
<h1>
Bu sayfa açıldıktan 10 saniye sonra otomatik olarak aynı dizinde bulunan
<a href="./ornek_html2_ana.html"> ornek_html2_ana.html</a>
dosyasını açacaktır.
</h1>
</center>
</body>
</html>

Yukarıdaki dosya bizim birinci HTML dosyamız. Bu dosya açıldıktan 10 saniye sonra otomatik olarak aşağıdaki dosyayı açması gerekli.
<!-- ornek_html2_ana.html adı ile kaydedin -->
<html>
<head>
<title>Ana Sayfa</title>
</head>

<body bgcolor="#334455" text="#eaeaea">
<center>
<h1>
ornek_html2_ana.html dosyasındasınız.
<br>Yönlendirme başarılı!
</h1>
</center>
</body>
</html>

Bu bölüm altında HTML, MySQL ve PHP konusunda elinizin altında bulunmasının faydalı olacağını düşündüğüm adresler var.
http://www.w3.org/
Web tasarımı konusunda bilgi edinebileceğiniz güzel bir site. HTML-4.01 Belirtim paketini alın ve makinanıza kurun. Ayrıca CSS2 Belirtim dosyasını da alın. Bunlar web tasarımı yapanlar için olmazsa olmaz iki temel kaynaktır.
Web Sitesi Düzenlemesi ve Tasarımı
Profesyonel anlamda web sitesi organizasyonu ve tasarımı konusunda bilgi edinebileceğiniz güzel bir belge.
http://www.php.net/
PHP’nin resmi sitesi. Bu adresten PHP Manual’i indirmenizi şiddetle tavsiye ediyorum. PHP altında kullanabileceğiniz bütün işlevlerin listesini, PHP kurulumunu ve PHP hakkında aklınızda ne kadar soru varsa hepsine cevap bulabileceğiniz bir belge.
http://www.mysql.com/
MySQL’in resmi sitesi. Yine bu adresten MySQL ile ilgili her türlü sorunuza yanıt bulabileceğiniz MySQL Manual’i ne yapıp edip edinin. Fakat PHP altında MySQL kullanımı ile ilgili bilgileri PHP Manual içinde bulacaksınız.
http://www.php.org.tr/
Türkiye PHP gurubu tarafından geliştirilen sitede PHP hakkında birçok Türkçe kaynak bulabilirsiniz. Ayrıca sitenin forum kısmına PHP ile ilgili sorularınızı yazıp kısa zamanda değişik çözüm yolları edinebilirsiniz.
http://www.turk-php.com/
Yine bir Türk PHP sitesi. Bakmanızda fayda var.
http://www.rehberim.gen.tr/webokulu/
Türkçe içerikli bir web tasarım sitesi. Sadece PHP değil web ile ilgili birçok konuda bilgi bulabileceğiniz bir site.
http://wwwacs.gantep.edu.tr/programming/php/commandline.html
Üniversitemizin bir sunucusu üzerinde bulunan sayfada Linux altında PHP kullanarak kabuk betiği yazma konusu ele alınmış. (Gerçi konu web tasarımının dışında fakat PHP’nin geniş kullanım alanlarına bir güzel örnek)
http://www.hotscripts.com/
Binlerce ücretsiz betik ve belge bulabileceğiniz çok güzel bir kaynak. Bakmanızı kesinlikle tavsiye ederim.
http://www.programmersheaven.com/zone27/
Yine ücretsiz betikler ve belgeler bulabileceğiniz bir site.
Yukarıdaki adresler bu belgenin konusu hakkındaki binlerce siteden sadece birkaçı. Yalnız ilk başta belirttiğim gibi elinizin altında HTML ve CSS2 Belirtim belgeleri ile PHP ve MySQL’in Manual dosyalarının bulunmasında çok büyük fayda var.
CSS (Cascading Style Sheets)
<font> etiketini anlatırken, bu etiket yerine CSS kullanımının tasarımcıya kolaylık sağlayacağını söylemiştim. CSS sayesinde HTML ile kullanabildiğimiz etiketlerin özelliklerini değiştirebiliriz. Mesela hazırladığımız bir sayfada <h1> ve <h2> etiketi ile yazılacak yerlerin renginin #55558f kodu ile gösterilen renk olmasını istiyoruz. Normalde bunun için her başlık yazacağımız yere <font color="#55558f"> yazmamız gerekecekti ama CSS bizi bu zahmetten kurtarıyor. CSS kodlarımızı HTML dosyamızda kullanabilmemiz için değişik yollar vardır. Bunlardan ikisi kodları direk HTML’nin <style> etiketi içerisine yazmak diğeri ise CSS kodlarımızı ayrı bir dosyaya yazmamızdır.
<html>
<head><title>CSS Denemesi</title>
<style>
h1 { color: #55558f }
h2 { color: #55558f }
</style>
</head>
<body>
<h1>Merhaba. Bu yazının rengini CSS ile ayarladım.</h1>
<h2>Ayrıca bu yazınınki de.</h2>
</body>
</html>

Yukarıdaki örneği bir HTML dosyasına yazıp, dosyayı açarsak, aşağıda göreceğiniz gibi başlıkların rengi siyah olmayacaktır. Bunun sebebi CSS ile <h1> ve <h2> etiketlerinın özelliklerini değiştirmiş olmamızdır.
Merhaba. Bu yazının rengini CSS ile ayarladım.
Ayrıca bu yazınınki de.

Aynı örnekteki <style> etiketini
.....
<style>
h1, h2 { color: #55558f }
</style>
....

şekilde yazmamızda sayfanın görünümünde bir değişikliğe yol açmayacaktır. Aynı sonucu elde etmek için kullanacağımız bir başka yöntem ise ayrı bir CSS dosyası hazırlamaktır. Bu yöntem önceki yönteme nazaran daha kullanışlıdır, çünkü hazırladığımız CSS dosyasını birden çok HTML dosyasında kullanma olanağı buluruz. Aşağıdaki kodları boş bir metin dosyasına yazıp ilk.css adı ile kaydedin.
h1, h2 { color: #55558f }

Daha sonra yeni HTML dosyası içine
<html>
<head>
<title>CSS Denemesi</title>
<link rel="stylesheet" href="ilk.css" type="text/css">
</head>
<body>
<h1>Merhaba. Bu yazının rengini CSS ile ayarladım.</h1>
<h2>Ayrıca bu yazınınki de.</h2>
</body>
</html>

kodlarını yazıp kaydedin. HTML dosyasını açtığınız zaman ilk CSS sayfamızın aynısı ile karşılaşırız. Burada CSS dosyamız ayrı bir dosya olduğu için sadece bir dosyada değil, sitemizdeki tüm HTML dosyalarında kullanılabilir. Tüm dosyalarımızda belli bir standardı hedef almamız sitemizde uyumlu bir görünüm oluşmasına yardımcı olacaktır. CSS dosyalarında tanımlanabilecek özellikler çok çeşitlidir. CSS1’de yaklaşık 50 çeşit özellik (color, font-size... gibi) tanımlanabilmesine karşın 1998’den itibaren kullanılan CSS2’de yaklaşık 120 özellik tanımlanabilmektedir.
CSS hakkında daha ayrıntılı bilgi için https://tik.lat/BMHIl adresindeki belgeyi okumanızı hatta bu belgeyi bir başvuru kaynağı olarak makinanızda bulundurmanızı tavsiye ederim. Burada CSS’nin 2.sürümü olan CSS2 anlatılmaktadır.

FTP ile Dosya Transferi
FTP (File Transfer Protocol - Dosya Aktarma Protokolü) dosyaları Internet'e yollamak ve Internet'ten almak için, kullandığımız protokoldür. Windows ortamında bu iş için kullanılabilecek birçok program vardır. Her programın kendine has bazı özellikleri bulunsa da genel olarak hepsi sizden dosyalarınızı yollamak için bir sunucu adı, kullanıcı adı ve parola ister. Bu bilgileri girdikten sonra program sunucu bilgisayara bağlanır ve siz dosyalarınızı istediğiniz dizine (tabi kullanım hakkınız olduğu sürece) yerleştirebilirsiniz. Burada dikkat edilmesi gereken bir husus dosyaları karşı tarafa yollarken ya da karşı taraftan dosya alırken, dosya biçemi normal metin biçeminde değil ise, yani dosya çalışabilir bir dosya, bir resim dosyası ya da sıkıştırılmış bir dosya ise dosyaları göndermek için kullanacağınız kip binary kipi olmalıdır. Programdan programa kullanımda farklılıklar olduğunu söylemiştim, artık bunun ayarını yapmak programın menülerini karıştırıp yapmanıza kalmış. Gerçi artık piyasadaki tüm FTP programları aktarım kipini kendileri ayarlıyorlar, ama siz yine de kontrol edin.
Ayrıca yükleyebileceğiniz bir FTP programı dışında Linux ve Windows ile gelen FTP programı da işinizi görecektir. Windows’taki FTP programını çalıştırmak için izlemeniz gereken yol Başlat -> Çalıştır -> ftp sunucu-adresi olmalıdır. Linux’ta ise komut satırından ftp sunucu-adı komutu işinizi görecektir. Örnek olarak bizim üniversitemizin ftp adresi olan gul2.bim.gantep.edu.tr adresine bağlanalım. Programlar çalıştıktan sonra sizden bir kullanıcı adı ve parola isteyecektir.
$ ftp gul2.bim.gantep.edu.tr
Connecting .....
Username: fni18444
Password:

User fni18444 logged in.
ftp>

Yukarıda gul2.bim.gantep.edu.tr adresine ftp ile bağlandm. Bağlandığım an benim kullanıcı adıma tanımlı alana otomatik olarak giriş yaparım.
ftp> cd www
ftp> lcd ~/internet
ftp> put index.html
ftp> binary
ftp> put banner.png
ftp> get tux.png
ftp> bye
Goodbye....

Yukarıda sırası ile cd www komutu ile bulunduğum dizindeki www adlı dizine giriyorum.
lcd ~/internet ile karşı tarafa göndereceğim dosyaların bulunduğu ve alacağım dosyaların konacağı yerin adresini yazıyorum. Bunun sonucu olarak karşı taraftan aldığım dosyalar bu dizine kaydedilir ve karşı tarafa yollayacağım dosyalarımın da bu dizin altında olmaları gerekir.
Şimdi sıra bizim için en önemli iki komutta: put ve get. put karşı tarafa dosya yollamak ve get karşı taraftan dosya almak için kullanılır. Dikkat ederseniz karşı taraftan resim alıp yollamadan önce binary komutu ile aktarım kipini değiştiriyoruz. En son olarak da bye komutu ile programdan çıkıyoruz.
FTP ile komut satırında iken help yada ? yazıp ENTER tuşuna basarsanız kullanabileceğiniz komutların listesi görüntülenir.
Peki eğer herhangi bir FTP adresinden bir dosya almak istiyorsanız ve bu bilgisayarda bir kullanıcı adınız ve parolanız yoksa ne olacak!!?? Kullanılan FTP Sunucu programlarında eğer etkin hale getirilmişse, ki hemen hemen hepsinde vardır, anonymous kullanıcı girişi vardır. Bu kullanıcı giriş şeklinde UserName kısmına anonymous yazmanız ve parola kısmına da e-posta adresinizi yazmanız yeterlidir. Bu giriş sayesinde sunucu altında bulunan halka açık FTP dizinlerine erişebilirsiniz.
Kolay Tahmin Edilebilir Şifrelere Sahip Kullanıcı Hesapları
Ağda bulunan istemci, sistem yöneticisi veya servislere özel kullanıcı hesaplarının kolay tahmin edilebilir şifrelere sahip olması, bir saldırganın kurum ağına yönelik kullanabileceği en basit saldırı yöntemidir. Özellikle yönlendirici yönetim şifreleri veya sunucu servislerine ait kullanıcı hesaplarının şifreleri kolayca tahmin edilebilmektedir. Web temelli uygulamaların yaygınlaşması ile web temelli uygulamalar da şifre seçim hatalarından etkilenmektedir. Bir saldırganın, yönetim hesaplarını veya geçerli bir kullanıcıya ait şifreleri ele geçirmesi durumunda, kurum ağına sınırsız erişim sağlanabilmekte ve istenen ağ sistemi kolayca ele geçirilebilmektedir.

Çözüm Önerisi

Şifre seçimi, kalitesi ve yönetimi konusunda kurum politikası oluşturulmalıdır. Başta sistem yöneticileri olmak üzere kullanıcıların şifre seçim kriterlerine uyumu, dizin hizmetleri veya alan denetçileri ile sağlanmalı ve kullanıcıların daha zor tahmin edilebilir şifre seçimleri yapmaları sağlanmalıdır. Özel uygulama alanlarında (sanal özel ağ, ERP yazılımları, bankacılık uygulamaları vb.) harici doğrulama sistemleri veya sayısal sertifikalar kullanılmalıdır. Web temelli uygulamaların tasarımında, kullanıcı hesap yönetimi ve şifre seçimi konusunda, beklenen kriterlerin uygulanması zorlayıcı olmalıdır.
Güncellemeleri Yapılmamış Web Sunucusu


Birçok kurum, ağlarında bulunan web sunucu yazılımlarını düzenli olarak güncellememektedir. Microsoft IIS veya ASF Apache web sunucu yazılımların eski sürümleri birçok güvenlik açığı barındırmaktadır. Web sunucularının düzenli güncellenememesinin sebeplerinden en önemlisi, bu yazılımların parçası olduğu ticari ürünlerin kullanılıyor olmasıdır. Web sunucuda yapılacak sürüm değişikliği veya güncellemeler, ürün firması tarafından desteğin kesilmesine neden olabilmektedir. Her iki web sunucusunda da saptanan güvenlik açıkları, web sunucusunun servis dışı kalmasına veya tüm sunucunun ele geçirilmesine neden olmaktadır. Önceden belirlenmiş yapılandırma ile kurulan web sunucuları, gerekli olmayan birçok bileşeni bünyelerinde barındırmakta ve gelecekte bu bileşenlere ait ortaya çıkabilecek güvenlik açıklarından etkilenebilmektedir.

Çözüm Önerisi

Web sunucu yazılımların düzenli güncellenmeleri oldukça önemlidir, ayrıca gerekli olmayan tüm bileşenler (WebDAV, HTTP Trace, Frontpage Uzantıları, Yazıcı desteği, Index oluşturma desteği ve örnek CGI uygulamaları) sistemden çıkarılmalıdır. Böylece gelecekte söz konusu bileşenler için duyurulacak güvenlik açıklarından etkilenilmeyecektir. Microsoft IIS web sunucusu için Microsoft URLScan aracı kullanılmalı ve tüm web istekleri içeriklerine göre süzülmelidir. Microsoft IIS veya ASF Apache’nin parçası olduğu ticari ürünler kullanılıyor ve güncellemeler yapılması durumunda üretici firmanın desteğinin kesilmesi söz konusu ise alternatif yöntemler kullanılmalıdır. Bir ters proxy aracılığıyla güvenlik açığı barındıran web sunucusuna doğrudan erişimin kısıtlanması, uygulama katmanında kullanılabilecek içerik denetim sistemleri, uygulama güvenlik duvarları veya saldırı tespit sistemleri verimli sonuçlar üreten çözümlerdendir.
Web Uygulamalarında Rastlanan Güvenlik Açıkları
Teyit Edilmemiş Girdi : Kullanıcıdan gelen talebin, web uygulamasında kullanılmadan önce girdi olarak kabul edilmeye uygunluğu kontrol edilmez. Saldırganlar bu tanımlanmamış girdi açıklarını kullanarak web uygulaması üzerinden arka plandaki bileşenlere saldırabilirler.

Kırılmış Giriş Kontrolü: Doğrulanmış kullanıcıların hakları ile ilgili kısıtlamalar uygun bir şekilde uygulanmaz. Saldırganlar bu kusurlar vasıtasıyla diğer kullanıcıların hesaplarına erişebilir, hassas dosyaları okuyabilir ve yetkilendirilmedikleri fonksiyonları kullanabilirler.

Çiğnenmiş Doğrulama ve Oturum Yönetimi: Hesap güven belgeleri ve oturum “token”ları doğru korunmaz. Şifreler, anahtarlar, oturum kurabiyeleri ve diğer “token”larla oynayabilen saldırganlar doğrulama kusurlarını aşabilir ve başka kullanıcıların kimliklerine bürünebilirler.

Çapraz Site Sorgu (XSS) Açıkları: Web uygulamaları bir saldırıyı son kullanıcıya browser’ı vasıtasıyla iletmek için bir araç olarak kullanılabilir. Başarılı bir saldırı son kullanıcının oturum izini afişe edebilir, yerel makineye saldırabilir veya kullanıcıyı kandırmak için içeriği taklit edebilir.

Bellek Taşması : Bazı dillerdeki web uygulaması bileşenleri, girdileri uygun olarak teyit etmemeleri durumunda servis dışı kalabilir veya bazı durumlarda işlemin kontrolünü ele geçirmek için kullanılabilir. Bu bileşenlere CGI, kütüphaneler, sürücüler ve web uygulama sunucusu bileşenleri dahil olabilir.

Enjeksiyon Kusurları: Web uygulamaları dış sistemlere veya yerel işletim sistemine eriştiklerinde, değişkenleri kabul ederler. Eğer bir saldırgan zararlı komutlarını bu değişkenlerin içine saklayabilirse, dış sistem bu komutları web uygulaması adına çalıştırır.

Uygunsuz Hata İşleme: Normal koşullarda oluşan hata durumları doğru ele alınmaz. Eğer saldırgan web uygulamasının başa çıkamayacağı hatalara neden olabilirse, detaylı sistem bilgisi elde edebilir, servisi engelleyebilir, güvenlik mekanizmalarının başarısız olmasını sağlayabilir veya sunucuyu çökertebilir.
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.