Yazılar
Yuklənir...

Saytı Necə Qorumaq Olar?


Bu Günkü Mövzumda sizlərə saytınızın təhlükəsizliyini necə əldə edə biləcəyiniz haqqında danışacağam. Amma ondan əvvəl siz saytınızı nəyə qarşı qoruduğunuzu bilməlisiniz.Bu Dərslikdə sizlərə ilk öncə ən çox istifadə edilən attack növlərin və onlardan qorunmağı öyrədəcəyəm.ALLAH adında Başlayaq :
1.)SQL(Structured Query Language- Yapılandırılmış Sorğu Dili) İnjection(İnyeksiya-Atak)
2.)The Simple(Sadə) SQL İnjection Hack
2.1)BackDoor(ArxaQapı) Injection- Modules(İnjeksiya-Modulları), Forums(Forumlar),
Search(Axtarış) etc(və s.).
 2.2) Automated Injection(Avtomatik İnjeksiya)
 2.3) Remote Injection(Uzaqdan İnjeksiya)
 2.4) SQL Injection in the Browser Address Bar(Brauzerin Ünvan Bölməsi İlə SQL İnyeksiya)
3.)XSS(Cross Site Scripting – Çarpaz Skript Faylı Çalışdırmaq)
4.)Authorization Bypass(Avtorizasiya Keçmək)
5.)Google Hacking
6.)Password Cracking(Şifrə Qırılması)
İlk Olaraq SQL injection ilə Başlayaq. SQL injection bizim bildiyimiz SQL/MySQL (və ya PostreSQL , Sistemə bağlıdır) Commandları(əmrləri) yerinə yetirməkdir.
İndi İsə SQL İNJECTİON rubrikasının altında The Simple SQL İnjection barəsində danışaq.
Məsələn aşağıdakı düzgün yazılan halbuki yaxşı qorunmayan bir sql login sistemi(QEYD : ASPx/ASP Dilində yazılmış script) :
private void cmdLogin_Click(object sender, System.EventArgs e) {
string strCnx =
“server=localhost;database=northwind;uid=sa;pwd=;”;
SqlConnection cnx = new SqlConnection(strCnx);
cnx.Open();
//This code is susceptible to SQL injection attacks.
string strQry = “SELECT Count(*) FROM Users WHERE UserName='” +
txtUser.Text + “‘ AND Password='” + txtPassword.Text + “‘”;
int intRecs;
SqlCommand cmd = new SqlCommand(strQry, cnx);
intRecs = (int) cmd.ExecuteScalar();
if (intRecs>0) {
FormsAuthentication.RedirectFromLoginPage(txtUser.Text, false);
}
else {
lblMsg.Text = “Login attempt failed.”;
}
cnx.Close();
}
Burda login yerinə adicə ‘ Or 1=1 — kifayətdir çünki Bura diqqət :
string strQry = “SELECT Count(*) FROM Users WHERE UserName='” +
txtUser.Text + “‘ AND Password='” + txtPassword.Text + “‘”;
Gördüyünüz kimi txtUset.Text yazılıb. Daha açıq formada məsələn Adminin ləqəbi Bill olsun paroluda password. İndi o login yerinə parolu yazıb daxil olanda nəticə :
SELECT Count(*) FROM Users WHERE UserName=’Bill’ AND Password=’password’
Amma biz ‘ Or 1=1 — yazsaq onda biz bura əmr yerləşdirmiş olacayıq o zaman :
SELECT Count(*) FROM Users WHERE UserName=” Or 1=1
Artıq automatik daxil olur. Çünki biz əmr yerinə yetirdik. Yaxşı login yeri :
private void cmdLogin_Click(object sender, System.EventArgs e) {
string strCnx =
ConfigurationSettings.AppSettings["cnxNWindBetter"];
using (SqlConnection cnx = new SqlConnection(strCnx))
{
SqlParameter prm;
cnx.Open();
string strAccessLevel;
SqlCommand cmd = new SqlCommand(“procVerifyUser”, cnx);
cmd.CommandType= CommandType.StoredProcedure;
prm = new SqlParameter(“@username”,SqlDbType.VarChar,50);
prm.Direction=ParameterDirection.Input;
prm.Value = txtUser.Text;
cmd.Parameters.Add(prm);
prm = new SqlParameter(“@password”,SqlDbType.VarChar,50);
prm.Direction=ParameterDirection.Input;
prm.Value = txtPassword.Text;
cmd.Parameters.Add(prm);
strAccessLevel = (string) cmd.ExecuteScalar();
if (strAccessLevel.Length>0) {
FormsAuthentication.RedirectFromLoginPage(txtUser.Text, false);
}
else {
lblMsg.Text = “Login attempt failed.”;
}
}
}
Gördüyünüz kimi Secure-yə dahada uyğunlaşdı. Lap güclü 1 Security sistem istəyirsinizsə o zaman Salt + Hash ilə işləməniz tövsiyə görülür. Onu başqa 1 mövzuda anlataram.
İndi isə 2.ci hissəyə keçək : BackDoor Injection- Modules, Forums, Search etc.
Bildiyiniz Üzərə İnyeksiyalar Artıq bypasslanır. BackDoor injection. Adından göründüyü kimi Backdoor-umuzu sayta yerləşdiririk. Sayta inyeksiya edirik. Daha sonra Qurban (site/sayt) xəbəri olmadan o Backdoorumuza daxil olub siteyə zərərli yazılımlar əlavə edirik.Modullar 1 növ App-lar.
Məsələn maraqlı 1 app görürsünüz öz sayt sisteminiz üçün. Və onu sayta əlavə edirsiniz. Onun yanında Sayta Zərər verici kodlarda əlavə edirsiniz amma bundan sizin xəbəriniz olmur çünki sadəcə modul olduğunu sanırsınız.Forumlar hamımızın bildiyi forumlardır. Forumlarda çox vaxt +SM(Sosial Mühəndislik) və SQL inyeksiya ortaya çıxartmaq olar. Saytda Post yerinə sadə SQL command-ı yazmaqla SQL şifrəsini dəyişmək və istifadəçi adı və s. məlumatları əldə etmək mümkündür. Search yani axtarış Pluginləri. Axtarış sistemlərinin çoxunda XSS , Persistent/NoN-Persisten/DOM-Based XSS ilə qarşılaşırıq.
Mən çox vaxt Persistent-lə qarşılaşmışam. Məsələn adi HTML İnjection ilə biz Sayta zərərli kodlar inyeksiya edə bilərikki buda sayta zərər verər. İndi isə yuxarıda yazdığım methodlardan qorunmağın yollarını deyim.
İlk öncə BackDooR-lardan qorunmağın yolu sayta upload sisteminin aradan qaldırılması.
Admin Login Page(Admin Daxil Səhifəsi)-də belə Upload sistemlərinin aradan qaldırılması.Admində daxil olmaqla heç bir istifadəçinin sitedən serverə nəsə yükləməsinə qadağa qoyulması yaxçı tədbir olar. Məsələn əgər siz serverə(sayta) nəsə yükləmək istəyirsinizsə ən yaxşısı sadəcə direct admin-dən yükləməniz olar. Forumlarda yada sosial şəbəkə scriptlərində bu geçərli deyil. Daha sonra Modullar. Sadəcə Rəsmi saytlardan və ən çox Google+ və ya qurduğunuz sistemin rəsmi distrubitorunun təsdiqlədiyi app-lardan istifadə edin.Forumlarda SQL İnjection-a qarşı güclü tədbir almaq lazımdır. Və Forumlarda ASCİİ Hexing üzrə tədbir görülməsi tövsiyə edilir.Bunu yazmaqda məqsədim bayaq qeyd etdiyim +SM-dir. ASCİİ Hexing sayəsində adminin adının kopyasın yazaraq +SM getmək mümkündür. Bunun üçün # % Kimi bəzi
simvolların administrasiya tərəfindən qeydiyyat zamanı əngəllənməsi lazımdır.Axtariş plugin/tag/sistem-lərində ən çox yuxarıda qeyd etdiyim Attack növü ortaya çıxır. Bunun üçün güclü tədbir görməniz kifayətdir.

XSS-ə qarşı necə tədbir görülməsi barədə buranı oxuyun :
XSS Nədir?
İndi isə SQL İnjection-nun başqa 1 növü Automated Injection haqqında məlumat verim. Məsələn sadə olaraq Hacker özəl programdan istifadə edərək çoxlu SQL Command-ların sayta inyeksiya etməyə cəhd göstərər.Bu zaman çoxlu insert SQL-in donmasına səbəb ola bilər. Bunun üçün 3 və ya 5 və ya 10 dəfə səhv parol və ya istifadəçi adı yazmaqdan sonra daxil olmaq səhifəsinin İP üzrə 5 dəqlik kilidə düşməsi tövsiyə görülür. Məsələn Attacker programla 30 ədəd SQL əmrlərin yoxlamaq üzərə olarkən ilk 3-ündə alındıra bilməsə blocka düşür 5 dəqlik. Bu blocku təcili açmaq üçündə admin email-lə göndərilən linkdən geri aça bilər və ya vvebmaster özü avtomatik başqa sistem qura bilər.
İndi SQL injection-nun daha başqa 1 növu : Remote Injection.
Bu SQL attack növü ilə biz SQL əmrlərini yerinə yetirərək admin case yani admin olmadan belə sayta zərərli yazılımlar yükləyə bilərik. Bunun qarşısın almaq üçün sadəcə standart SQL Qorumasıdır.
İndi isə SQL Injection in the Browser Address Bar hissəsinə keçək. Yəni kompyuterinizin brauzerindən İD Dəyərlərinə daxil olaraq hashlanmış formada əlimizə keçən parollarla admin istifadəçi adıyla sayta zərər vermək olar. Bu $_GET methodundan əmələ gəlir. GET Methodunun qorunması üçün mres funksiyasından istifadə edilə bilər. Məsələn :
$id=$_GET["id"];
$bla = mysql_query(“SELECT * FROM user where ID=’$id'”);
Bu zaman id dəyəri 1 isə 1-ci dəyəri göstərəcək amma 1 deyilsə o zaman error çıxacaq. Məsələn 1`a olsa o zaman error çıxacaq. Error çıxan Zaman Path Dİsclosure açığıda çıxa bilər. Bu Path Disclosure Hansı qovluğun harda yerləşdiyi hakdadır. Bu GET Methodunun qorunması üçün mres-dən istifadə edək :
$id=$_GET["id"];
$id = mysql_real_escape_string($id);
Gördüyünüz kimi mysql_real_escape_string funksiyası icazə verməyəcək SQL əmrlərinin yerinə yetirilməsinə.
Autharizion ByPass Bu Method demək olarki İSS sistemi ilə yığılmış saytlarda rastlanılır.Məsələn hacker sourceni kopyalayır notepad-a daha sonra orda login düyməsinin haraya yönəldiyini öyrənir tokenləri dəyişib özü üçün əlverişli hala gətirir. Daha sonra açır həmin HTML faylı və orda login düyməsinə basaraq pramoy parolsuz token-lə və ya başqa link əlavəsi ilə admin olur. Bundan qorunmanın standart yolu source-nin paylaşıma açıq olmaması və düzgün server seçilməsi.
Google Hacking Bu method artıq köhnə methodlardandın.Ən sadə Hacking Methodlarından 1-i Google Hacking-dir. İçində şifrələrin olduğu , Database informasiyalarının olduğu , session(icazə) olmayan açıqlı site-lər. Anket açıqları falan. Hamısı Google Hacking-dən tapa bilərsiniz. Məsələn: inurl:passlist.txt inurl:passwd.txt
“login: *” “password= *” filetype:xls
Burda sadə açıqlar yazılıb. Passlist.txt yani parolların olduğu listə. Bu yaxınlarda mən və Worm Man Tapdığımız + editləyib başdan yaratdığımız ”RCBlog” Adli CMS Sistemində bu açıq mövcud idi.Bu Açıqla siz sadəcə pass.txt-nı açıb (session olmadan) içindəki MD5-i qırmaqla rahatlıqla şifrələri
ələ keçirdə bilərsiniz.Bundan qorunmağın ən sadə yolu qətiyyən və qətiyyən parollarınızı .txt formatında sayta yükləməyin.
Password Cracking Bu method daha çox şifrə qırılması hakdadır. Məsələn əgər siz sadə 1 parol qoydunuzsa (məs:admin123) hacker bunu tapdığında əmin olacaq. Gələkki bu admin123-ü şifrələyib parol qoysanız o zaman hacker parolu tapdıqda əmin olmaq üçün o şifrəli parolu qıracaq və daxil ola bilməyəcək. Amma əslində parol o şifrəli parol olacaq. Bu qorunmaq üçün sadə yoldur.
İndi isə biraz Müdafiə Tədbirləri haqqında yazaq :
  • Bir web content management sistemi istifadə etsəniz, inkişaf bloguna yazılın. Mümkün qədər tez yeni versiyaları üçün güncelleyin.
  • Əlbəttə bir məsələ kimi bütün 3-cü tərəf modulları güncelleyin – web formaları daxil olan və ya üzv fayl yüklənməsi imkan verən hər hansı bir modulları potensial təhlükə yaradır. Modul zəifliklər, tam məlumat bazası əldə etmək imkanı verə bilər.
  • Web CMS-inizi bərkitmək üçün Nəşriyyat platformlarından istifadə edin + Full Security yaratmağa çalışın. Məsələn WordPress istifadə edirsinizsə bu sənədi this guide oxuyun.
  • Admin Səhifənizi gücləndirmək üçün adminlogin.php əvəzinə imgtest.php və ya başqa 1 şey qoyun. Bu sizin admin login page-də olan açığınızı Google tərəfindən tapılmasının qarşısın almağa İmkan verir.
  • Daha Güclü 1 secure üçün Qarışıq stringlərdəm istifadə edin. Hacker-i çaşdırmaq məqsədiylə fərqli string-lərlə öz configuration faylınızı cryptləyin.
  • Adınız və Saytınız üçün Google Hacks edin.Sadəcə 1 anlığına
  • Şübhə Olanda Sarı Kabel-ı Çıxardın(Yani : Sitenizi Bağlayıb Tapdığınız Açığın Bağlanması Hakkında Ətraflı Bilgi tapıb Açığl Fix(düzəlt)-ləyin sonra yenidən sitenizi açın).
Bu Qədər. Mən Avatar Fearless Ümidvaram Sizə Kömək ola Bildim =). Uğurlar =).
Share on Google Plus

Adminlə əlaqə : GM_MONSTER

    Blogger Comment
    Facebook Comment

0 Komment :

Yorum Gönder