Antivirüs ve tarayıcılar olmadan kötü amaçlı kod nasıl aranır? Antivirüs ve tarayıcılar olmadan kötü amaçlı kod nasıl aranır WordPress'te kötü amaçlı kod nasıl aranır

1. Site klasörüne paketinden çıkarın.
2. siteniz/fscure/ bağlantısını takip edin
3. her şey

O ne yapabilir?

1. Virüsleri imzalara göre otomatik arama.
2. Dosyalarda bir dize arayın
3. Dosyaları silme
4. Normal ifadeleri kullanarak kötü amaçlı kodları düzeltin

Komut dosyası sizin için tüm işi yapmayacak ve minimum düzeyde bilgi gerektirecektir. Çalışmadan önce sitenin yedeğini almanız önerilir.

O nasıl çalışır?

İlk başlatıldığında bir dosya dizini oluşturur. Fscure.lst dosyası klasörün içindedir. Potansiyel olarak kötü amaçlı imzalar içeren dosyaların listesini görüntüler. "Potansiyel olarak kötü amaçlı", bunun bir virüs olup olmadığına karar vermeniz gerektiği anlamına gelir. İmza listesi, SCAN_SIGN sabiti olan config.php dosyasında yapılandırılmıştır. Varsayılan ayarlarla komut dosyası, js dosyalarını kontrol etmez ve onlar için imzalar içermez.

En yaygın sorunlar

1. fscure.lst dizinini oluşturmaz. Yeterli hak yoksa gerçekleşebilir. 777'yi fscure klasörüne koyun

2. 5xx hatası. Çoğu zaman "504 Ağ Geçidi Zaman Aşımı". Komut dosyasının işlenecek zamanı yok ve zaman aşımı nedeniyle çöküyor. Bu durumda işini hızlandırmanın birkaç yolu vardır. Hız öncelikle endeksin boyutuna bağlıdır. Fscure.lst dosyasındadır. Tipik olarak, vakaların %90'ında 5 MB'a kadar bir dosya işlenebilir. Zamanı yoksa, yapılandırmada *.jpg;*.png;*.css'nin taranmasını yasaklayarak betiğin "açgözlülüğünü" azaltabilirsiniz.
Config.php dosyasında.

// sınırlayıcı; define("FILES_EXCLUDE","*.js;*.jpg;*.png;*.css");

3. Hosting şöyle bir uyarı veriyor
(HEX)base64.inject.unclassed.6: u56565656: /var/www/u65656565/data/www/34535335353.ru/fscure/index.php

Senaryoda virüs yok ve hiçbir zaman da olmadı. (HEX)base64.inject.unclassed.6 ise "echo base64_decode(" gibi sık karşılaşılan ve başlı başına oldukça zararsız bir yapıdır. Ancak son sürümde bu kodu değiştirdim.

Virüsü kendiniz bulamazsanız ne yapmalısınız?

Yardım için benimle iletişime geçebilirsiniz. Oranlarım mütevazı. 6 ay iş garantisi veriyorum. İşin maliyeti 800 ruble. 1 site için. Hesabınızda birden fazla site varsa fiyat tek tek belirlenir.

Her şeyi kendiniz yapmayı başardıysanız, maddi bir ödül veya siteme bir bağlantı için minnettar olurum.

Gereksinimlerim:
yandex
41001151597934

İnternet parası
Z959263622242
R356304765617
E172301357329

Birlikte yapılmalıdır. Saldırının asıl nedenini ortadan kaldırırsanız (örneğin, CMS uzantısındaki bir güvenlik açığı), ancak tümünü kaldırmazsanız kötü amaçlı dosyalar saldırgan kendi scriptlerinden birini kullanarak siteye tekrar erişim sağlayabilecektir. İndirilenlerin tümünü silerseniz kötü amaçlı komut dosyaları, ancak hack'in nedenini ortadan kaldırmayın, saldırgan siteyi tekrar hackleyebilecek ve siteye tekrar komut dosyaları yükleyebilecektir.

Uygun bilgi ve deneyime sahip bir uzman, kötü amaçlı komut dosyalarını kaldırmak ve bilgisayar korsanlığının nedenlerini analiz etmek için çalışma yapmalıdır:

  • Kötü amaçlı komut dosyalarını kaldırmak için, PHP programlama dilinin yanı sıra popüler CMS'nin (Joomla, WordPress vb.) "içerisi" ve bunlara yönelik uzantılar hakkında bilgi sahibi olmanız gerekir. Bu bilgi, komut dosyalarını doğrudan CMS'den ve uzantılarını yabancı dosyalardan ayırmak ve ayrıca şüpheli komut dosyalarıyla karşılaşıldığında hangi eylemleri gerçekleştirdiklerini açık bir şekilde belirleyebilmek için gereklidir.
  • Bilgisayar korsanlığının nedenlerini analiz etmek için sunucu yönetimi deneyimi gereklidir. Bu, hesaptaki dosyaların durumunu, değiştirilme zamanlarını analiz etmek ve ayrıca saldırganın hangi eylemlerinin sitelerin hacklenmesine yol açtığını belirlemek için bu verileri sunucu günlükleriyle karşılaştırmak için gereklidir.

Bu nedenle, siteniz saldırıya uğradıysa, tekrarlanan saldırılardan kaçınmak için işi kendiniz yapmamanız, gerekli teşhisleri yapacak ve tavsiyede bulunacak veya gerçekleştirecek bir uzmanla iletişime geçmeniz önerilir. gerekli eylemler sorunu çözecek ve elde edilen sonucun kalitesini kim garanti edebilecek.

Bununla birlikte, bazı durumlarda özel bilgi gerektirmeden sitenin güvenli çalışmasını yeniden sağlamaya yardımcı olan bir dizi önlem vardır. Aşağıdaki yöntemin sınırlaması, sitenin çalışmaya devam etmesi için, sitenin hacklenmeden önce oluşturulmuş bir yedek kopyasının gerekli olmasıdır. İhlalin tarihi bilinmiyorsa mevcut en eski yedeği kullanarak bu yöntemi deneyebilirsiniz. İkinci sınırlama, birincinin bir sonucu olarak, siteyi geri yükledikten sonra, geri yükleme yedeği oluşturulduktan sonra siteye eklenen verilerin (örneğin, yeni makaleler, resimler veya belgeler) olmasıdır. Yeni verileri korurken siteyi geri yüklemeniz gerekiyorsa bir uzmana başvurmanız gerekir.

Bu önlemler site hacklemesinin nedenini belirlememize izin vermez, ancak bunların her biri potansiyel sızma nedenlerinden birini ortadan kaldırmayı amaçlamaktadır. Hack'in kesin nedeni bilinmediğinden hepsinin yapılması gerekmektedir. Eylemler, öncelikle saldırganın sitede veya hosting hesabında faaliyetlerine devam etme olasılığını tamamen ortadan kaldıracak şekilde düzenlenmiştir. şu anda ve gelecekte bir saldırganın siteye girmesini önleyin.

Aşağıdaki adımlar, barındırma hesabınızda yalnızca bir web sitenizin bulunduğunu varsaymaktadır. Hesapta birden fazla site varsa, bunlar da saldırıya uğrayabilir ve site bunlar aracılığıyla saldırıya uğrayabilir. Restorasyon çalışması yapılan alanın ya ayrı bir hesaba aktarılması ya da hesapta barındırılan tüm alanların restorasyonunun aynı anda yapılması gerekmektedir.

Eylemlerin sırası önemlidir, bu nedenle bunları tam olarak aşağıda bulundukları sırayla gerçekleştirmek gerekir.

  • Bir sitenin saldırıya uğradığını keşfettikten hemen sonra ziyaretçinin siteye erişimini tamamen engellemek gerekir. Bu, öncelikle saldırganın sitede kötü amaçlı faaliyetlerde bulunmasını önleyecek, ikinci olarak da restorasyon çalışmalarına müdahale etmesine izin vermeyecektir. Bu adım çok önemlidir, çünkü kötü amaçlı komut dosyalarının kaldırılması ve saldırının nedeninin ortadan kaldırılması bir gecede gerçekleşmez - kural olarak birkaç saat sürer. Siteye dışarıdan erişilebiliyorsa saldırgan, sitenin daha önce temizlenmiş olan bölümüne komut dosyalarını yeniden yükleyebilecektir. Bu durumda, saldırgan bağlanmak için farklı IP adresleri kullanabilir; dolayısıyla yalnızca bir IP adresleri listesine erişimi reddetmek işe yaramaz. Sitenin tespit edilen kötü amaçlı komut dosyalarından temizlendiğinden emin olmak için, saldırganın siteye erişim olanağının tamamen engellenmesi gerekir; bu da ancak sitenin tüm ziyaretçiler için tamamen engellenmesiyle yapılabilir. Sitenizi engellemek için barındırma hizmetinin teknik destek hizmetine başvurun.
  • Siteyi engelledikten sonra, siteyle çalıştığınız bilgisayarları güncellenmiş virüs veritabanlarına sahip modern bir antivirüs ile kontrol etmeniz gerekir. Site, bir virüs kullanılarak hesap şifreleri çalınarak saldırıya uğradıysa, saldırıya uğrayan siteyle daha fazla çalışmanın virüs içermeyen bir bilgisayardan yapıldığından emin olmalısınız, aksi takdirde erişim şifreleri değiştirildikten sonra tekrar çalınabilirler.
  • Siteyi bloke ettikten ve virüsleri kontrol ettikten sonra, hesabınızın tüm erişim şifrelerini değiştirmeniz gerekir: FTP üzerinden, SSH üzerinden erişim ve ayrıca barındırma kontrol paneline erişim. Bir saldırgan bu yöntemlerden birini kullanarak hesap dosyalarına eriştiyse, şifreler değiştirildikten sonra artık bunu yapamayacaktır.
  • Şifreleri değiştirdikten sonra sitenin bulunduğu hesap altında çalışan tüm sunucu işlemlerini yok etmelisiniz. Saldırganın arka planda başlattığı işlemler yok edilmeden, restorasyon çalışması yapıldıktan sonra kötü amaçlı scriptlerin siteye yeniden yerleştirilmesi mümkün olacaktır. Bunun olmasını önlemek için site engellenmeden önce çalışan tüm süreçlerin yok edilmesi gerekir. Saldırganın sitedeki scriptlerinden birine erişerek yeni işlemler başlatamaması için sitenin şu anda zaten engellenmiş olması gerekir. Hesabınızda çalışan işlemleri yok etmek için sitenizi barındıran hostingin teknik destek hizmetiyle iletişime geçin.
  • Artık siteye dışarıdan girmek imkansız ve onu geri yüklemeye başlayabilirsiniz.
  • Daha fazla işlem yapmadan önce, saldırganın kötü amaçlı kod eklediği kötü amaçlı komut dosyalarının veya CMS komut dosyalarının olmadığından emin olmak için mevcut tüm site dosyalarını silin. Bu adım aynı zamanda önemlidir çünkü bir siteyi bir yedekten geri yüklerken, geri yüklemeden önce var olan dosyalar her zaman silinmez. Bir yedekten geri yükledikten sonra eski kötü amaçlı komut dosyaları sitede kalırsa, saldırgan siteye yeniden girebilecektir. Kurtarma işlemini gerçekleştirmeden önce tüm site dosyalarını silerek bunu önleyebilirsiniz.
  • Tüm site dosyalarını sildikten sonra, siteyi saldırıya uğramadan önce oluşturulan bir yedekten geri yükleyin. Genellikle yalnızca site dosyalarını geri yüklemek yeterlidir, ancak bunları geri yükledikten sonra sitenin çalışmasında hatalar gözlenirse, siteyi tamamen geri yüklemek gerekir: hem dosyalar hem de veritabanı.
  • Bir yedekten geri yükledikten sonra içerik yönetim sisteminizi (CMS) ve uzantılarınızı en son sürümlere güncelleyin. Bu, sitenin saldırıya uğrayabileceği bilinen güvenlik açıklarının varlığını dışlamak için gereklidir. Kural olarak güncelleme CMS yönetimi bölümünden yapılabilir. Almak için tüm talimatlar CMS'yi güncellemek için sistem geliştiricisinin web sitesine gitmelisiniz. Bilgisayar korsanlığı genellikle CMS uzantılarından birinde (örneğin, eklentiler, temalar, widget'lar vb.) bulunan bir güvenlik açığı nedeniyle meydana geldiğinden, yalnızca CMS'nin kendisini değil aynı zamanda tüm uzantılarını da güncellemek önemlidir. Şu anda sitenin ziyaretçilere yönelik engelini kaldırmak hâlâ mümkün değil çünkü site hala savunmasız olabilir. Güncelleme amacıyla sitenize erişmek için, sitenizi barındıran barındırma kuruluşunun teknik desteğiyle iletişime geçin ve siteye yalnızca bilgisayarınızın IP adresinden erişime izin verilmesini isteyin. IP adresinizi örneğin inet.yandex.ru adresinden öğrenebilirsiniz.
  • Site yönetim sistemi ve uzantılarını güncelledikten sonra site yönetimi bölümüne gidin ve yönetici erişim şifresini buna değiştirin. Site kullanıcıları arasında yönetici ayrıcalıklarına sahip başka kullanıcıların olmadığından emin olun (bunlar bir saldırgan tarafından eklenmiş olabilir) ve bulunursa bunları silin.
  • Artık site bir yedekten geri yüklendiğinden ve kötü amaçlı komut dosyaları içermediğinden, CMS ve uzantıları şu şekilde güncellendi: en son sürümler Herhangi bir güvenlik açığı bulunmayan, siteye ve hosting hesabına erişim şifreleri değiştirilen siteyi ziyaretçilere tekrar açabilirsiniz.
  • Yukarıdaki eylemlerin tümü, belirtilen sıraya uygun olarak, herhangi bir eksiklik veya değişiklik olmaksızın gerçekleştirilmelidir. Eylemlerin hatalı yapılması durumunda sitede kötü amaçlı scriptler veya güvenlik açıkları kalabilir ve bunun sonucunda kısa bir süre sonra bir saldırgan tarafından tekrar hacklenebilir. Herhangi bir nedenle yukarıdaki adımları belirtilen biçimde gerçekleştirmek mümkün değilse, bir saldırıdan sonra siteyi geri yüklemek için çalışma yapmak üzere bir uzmana başvurun.

    Sitenizi gelecekte tekrarlanan saldırılardan korumak için aşağıdaki önerilere uymalısınız:
  • Geliştiricilerin web sitelerindeki CMS güncellemelerini ve uzantılarını takip edin ve bunları derhal en son sürümlere güncelleyin. Bir güncelleme yorumunda bir güvenlik açığının giderildiği belirtiliyorsa güncellemeyi mümkün olan en kısa sürede yükleyin.
  • Siteyle ve barındırma hesabıyla yalnızca sürekli güncellenen virüs veritabanlarına sahip modern antivirüsler tarafından virüslere karşı korunan bilgisayarlardan çalışın.
  • Sözlük aramasıyla tahmin edilemeyecek şekilde karmaşık şifreler kullanın.
  • FTP ve SSH şifrelerini siteye bağlanmaya yönelik programlara kaydetmeyin ve erişim şifresini tarayıcınızda sitenin yönetim alanına ve hosting kontrol paneline kaydetmeyin.
  • Zaman zaman (örneğin her üç ayda bir), siteye ve barındırma hesabına erişim şifrelerini değiştirin.
  • Siteyle çalıştığınız bilgisayarda virüs tespit edilirse, siteye ve barındırma hesabına erişim şifrelerini mümkün olan en kısa sürede değiştirin. Tüm şifreleri değiştirmeniz gerekir: şifrelere FTP, SSH, sitenin yönetim panelindeki şifre ve barındırma kontrol panelindeki şifre aracılığıyla erişin.
  • Üçüncü tarafların da bu yönergelere uyacaklarından emin olmadığınız sürece siteye erişim izni vermeyin.
  • Kötü amaçlı kod, ihmal veya kötü niyet yoluyla siteye girer. Kötü amaçlı kodun amaçları farklılık gösterebilir ancak esas olarak bir web sitesinin normal çalışmasına zarar verir veya müdahale eder. WordPress'teki kötü amaçlı kodu kaldırmak için önce onu bulmalısınız.

    WordPress sitesindeki kötü amaçlı kod nedir?

    İle dış görünüşÇoğu zaman kötü amaçlı kod, Latin alfabesinin bir dizi harf ve sembolünden oluşur. Aslında bu, şu veya bu eylemin gerçekleştirildiği şifrelenmiş bir koddur. Eylemler çok farklı olabilir; örneğin, yeni gönderileriniz hemen bir üçüncü taraf kaynağında yayınlanır. Bu aslında içeriğinizin çalınmasıdır. Kodların ayrıca site sayfalarına giden bağlantıları yerleştirmek gibi başka "görevleri" de vardır. Görevler en karmaşık görevler olabilir ancak bir şey açıktır: Kötü amaçlı kodların yakalanması ve kaldırılması gerekir.

    Kötü amaçlı kodlar bir web sitesine nasıl girer?

    Ayrıca kodların siteye girmesi için birçok boşluk vardır.

  • Çoğu zaman bunlar "sol" kaynaklardan indirilen temalar ve eklentilerdir. Bununla birlikte, bu tür bir nüfuz sözde şifreli bağlantılar için tipiktir. Açık kod sitede yer almaz.
  • Bir site saldırıya uğradığında bir virüsün nüfuz etmesi en tehlikeli olanıdır. Kural olarak, bir siteyi hacklemek yalnızca "tek seferlik bir kod" yerleştirmenize değil, aynı zamanda kötü amaçlı yazılım (kötü amaçlı program) öğeleri içeren kod yüklemenize de olanak tanır. Mesela bir kod bulup siliyorsunuz ama bir süre sonra eski haline dönüyor. Yine birçok seçenek var.
  • Bu tür virüslerle mücadelenin zor olduğunu ve manuel olarak kaldırılmasının bilgi gerektirdiğini hemen belirteyim. Sorunun üç çözümü var: İlk çözüm, antivirüs eklentilerini, örneğin BulletProof Security adlı bir eklentiyi kullanmaktır.

    Bu çözüm iyi sonuçlar verir ancak biraz da olsa zaman alır. Karmaşık virüsler de dahil olmak üzere kötü amaçlı kodlardan kurtulmanın daha radikal bir çözümü var; bu, siteyi önceden hazırlanmış olanlardan geri yüklemektir. yedek kopyalar alan.

    İyi bir web yöneticisi bunu periyodik olarak yaptığından, virüs bulaşmamış bir sürüme sorunsuz bir şekilde geri dönebilirsiniz. Üçüncü çözüm, zengin ve tembeller için, uzman bir "ofis" veya bireysel bir uzmanla iletişime geçmeniz yeterlidir.

    WordPress'te Kötü Amaçlı Kod Nasıl Aranır?

    WordPress'teki kötü amaçlı kodun, mutlaka çalışma temasında değil, sitedeki herhangi bir dosyada olabileceğini anlamak önemlidir. İnternetten alınan bir eklenti, bir tema veya “ev yapımı” kod bulabilir. Kötü amaçlı kodu bulmaya çalışmanın birkaç yolu vardır.

    Yöntem 1: El ile. Tüm site dosyalarını kaydırırsınız ve bunları virüs bulaşmamış bir yedeklemenin dosyalarıyla karşılaştırırsınız. Başka birinin kodunu bulursanız silin.

    Yöntem 2: WordPress Güvenlik Eklentilerini Kullanma. Örneğin, . Bu eklentinin harika bir özelliği var, site dosyalarını diğer kişilerin kodlarının varlığına karşı tarayıyor ve eklenti bu görevle mükemmel bir şekilde başa çıkıyor.

    Yöntem 3. Barındırma konusunda makul bir desteğiniz varsa ve size sitede başka biri varmış gibi görünüyorsa, ondan sitenizi antivirüsleriyle taramasını isteyin. Raporları tüm virüslü dosyaları listeleyecektir. Daha sonra bu dosyaları açın. Metin düzeltici ve kötü amaçlı kodu kaldırın.

    Yöntem 4. Site dizinine SSH erişimiyle çalışabiliyorsanız, devam edin, kendi mutfağı var.

    Önemli! Kötü amaçlı kodu nasıl ararsanız arayın, kodu aramadan ve silmeden önce site dosyalarına erişimi kapatın (bakım modunu açın). Silindiklerinde kendilerinin geri yüklendiği kodları unutmayın.

    Eval işlevini kullanarak kötü amaçlı kodları arayın

    PHP'de eval adında böyle bir fonksiyon var. Kendi satırında herhangi bir kodu çalıştırmanıza izin verir. Üstelik kod şifrelenebilir. Kötü amaçlı kodun bir dizi harf ve simgeye benzemesinin nedeni kodlamadır. İki popüler kodlama şunlardır:

  • Base64;
  • Çürük13.
  • Buna göre bu kodlamalarda eval fonksiyonu şu şekilde görünür:

    • eval(base64_decode(...))
    • eval (str_rot13 (...)) //dahili tırnak içinde, uzun, belirsiz harf ve sembol kümeleri..

    Eval işlevini kullanarak kötü amaçlı kod arama algoritması aşağıdaki gibidir (yönetim panelinden çalışıyoruz):

    • site düzenleyicisine gidin (Görünüm → Düzenleyici).
    • Function.php dosyasını kopyalayın.
    • bunu bir metin düzenleyicide açın (örneğin, Notepad++) ve eval kelimesini arayın.
    • Eğer bulursanız, hiçbir şeyi silmek için acele etmeyin. Bu işlevin ne yapılmasını "istediğini" anlamalısınız. Bunu anlamak için kodun çözülmesi gerekir. Kod çözme için kod çözücü adı verilen çevrimiçi araçlar vardır.
    Kod Çözücüler/Kodlayıcılar

    Kod çözücüler basit çalışır. Şifresini çözmek istediğiniz kodu kopyalayıp kod çözücü alanına yapıştırıp kodunu çözüyorsunuz.

    Bu yazıyı yazdığım sırada WordPress'te tek bir şifreli kod bile bulamadım. Kodu Joomla web sitesinden buldum. Prensip olarak kod çözmeyi anlamada hiçbir fark yoktur. Fotoğrafa bakalım.

    Fotoğrafta görebileceğiniz gibi, değerlendirme işlevi, kod çözme işleminden sonra sitenin güvenliğini tehdit eden korkunç bir kod değil, şablonun yazarından şifrelenmiş bir telif hakkı bağlantısı görüntüledi. Ayrıca kaldırılabilir, ancak kullanmazsanız şablonu güncelledikten sonra geri gelecektir.

    Sonuç olarak siteye virüs bulaşmaması için şunu belirtmek isterim:

    • WordPress'teki kötü amaçlı kodlar genellikle temalar ve eklentilerle birlikte gelir. Bu nedenle, şablonları ve eklentileri “sol”, doğrulanmamış kaynaklardan yüklemeyin ve kurarsanız, bunları PHP'nin bağlantılarının ve yönetici işlevlerinin varlığı açısından dikkatlice kontrol edin. “Yasadışı” kaynaklardan eklentiler ve temalar yükledikten sonra siteyi antivirüs yazılımıyla kontrol edin.
    • Periyodik yedeklemeler yaptığınızdan ve diğerlerini yaptığınızdan emin olun.
    Kötü amaçlı JavaScript

    Tarayıcı araçlarını kullanarak enjekte edilen kötü amaçlı tarayıcı komut dosyalarına (depolanan XSS saldırıları) karşı korumanın daha kolay ve daha etkili olduğu yönündeki fikrimi daha önce belirtmiştim: . Web sitesinin html sayfalarına filtreleme kodu eklemeyi içeren JavaScript'e karşı tarayıcı koruması muhtemelen güvenilirdir; ancak bu tür bir korumanın varlığı, bir sunucu filtresi kullanma ihtiyacını da ortadan kaldırmaz. Aynı XSS ​​saldırıları için sunucuda ek bir savunma hattı düzenleyebilirsiniz. Ayrıca bir saldırganın, bir siteden gönderilen HTML mesajına tarayıcı tabanlı değil, sunucu tarafı komut dosyalarını (php) yerleştirme olasılığını da unutmamalıyız.

    Saldırgan bir komut dosyası, ister tarayıcı tabanlı ister sunucu tabanlı olsun, bir programdır; programın her zaman "saf" html'den bazı sembolik farklılıklara sahip olacağı düşünülmelidir. Bu tür farklılıkları bulmaya çalışalım ve bunları sunucuda bir HTML filtresi oluşturmak için kullanalım. Aşağıda kötü amaçlı JavaScript örnekleri verilmiştir.

    XSS:

    Bazı metin


    Bazı metin

    Şifrelenmiş XSS:

    Bazı metin


    Bazı metin

    Tarayıcılar, metni yalnızca html kapsayıcılarının içinde (açılış ve kapanış etiketleri arasında) değil, aynı zamanda etiketlerin kendi içinde (arasında) bulunan karakter temel öğelerinden kurtarır.< и >). http adreslerinde URL kodlamasına izin verilir. Bu, aynı karakter dizisi farklı şekillerde temsil edilebildiğinden, sunucu tarafındaki kötü amaçlı kodun tanınmasını zorlaştırır.

    XSS solucanları:

    "+innerHTML.slice(action= (method="post")+".php",155)))">





    alarm("xss");with(new XMLHttpRequest)open("POST","post.php"),send("content="+_.outerHTML)

    Yukarıdaki XSS solucanları, Robert Hansen'in (aka RSnake) Ocak 2008'de düzenlediği en kısa kötü amaçlı JavaScript solucanı yarışmasına (yarışma sonuçları) gönderilen birçok solucandan sadece birkaçıdır.

    XSS saldırılarının belirtileri

    XSS betiği, DOM (Belge Nesne Modeli) nesnelerine ve bunların yöntemlerine erişen bir programdır. Aksi takdirde herhangi bir şekilde zararlı olması pek mümkün değildir. Örneğin, JavaScript dizesi
    onckick = "var a = "xss""
    belge nesne modelini etkilemez, dolayısıyla bir html etiketine gömülü olsa bile böyle bir dize zararsızdır. Bir bilgisayar korsanı yalnızca HTML belgesi nesnelerini ve bunların yöntemlerini değiştirerek bir siteye ciddi zarar verebilir. Örneğin, çizgi
    onmousemove = "document.getElementsByTagName("body").innerHTML = "XSS""
    zaten sayfanın içeriğinin yerini alıyor.

    DOM yöntemlerine erişimin işareti parantezlerin yanı sıra eşittir işaretinin solundaki noktalardır. Parantezler ayrıca html'de rgb() biçiminde bir renk ayarlamak için de kullanılabilir, ancak html'deki yazı tipi ve arka plan renkleri en az üç yolla daha ayarlanır. Bu nedenle, html metninin anlamlılığından ödün vermeden parantezlerden vazgeçilebilir. Kural olarak parantezlerin etiketin içinde (yani arasında) olduğunu kabul etmek gerekir.< и >) - bu çok tehlikelidir, eğer sunucudaki bir kullanıcıdan mesaj alırsak, bu mesaj etiketlerin içinde parantez içeriyorsa yapmamız gereken en uygun şey böyle bir mesajı engellemektir.

    Nokta, html etiketlerinin içinde bulunabilir: bağlantı adresini belirtirken (etiket ); html öğelerinin boyutunu ayarlarken (style="height:1.5in; width:2.5in;" ). Ancak formun karakter dizileri
    harf noktası eşittir
    html etiketlerinde olamaz. Belirtilen sıra bir html etiketinin içinde mevcutsa, kullanıcıdan gelen mesaj büyük olasılıkla bir komut dosyası içermektedir ve engellenmelidir.

    Bir diğer belirgin tehlike işareti ise etiketin içindeki "+" sembolüdür. Betiksiz HTML'de böyle bir şey yoktur. Etiketlerin içinde artılar bulursak, mesajı acımasızca engelliyoruz.

    Html etiketlerinin içindeki temel karakter öğeleriyle şifrelemek için, iyi niyetli bir site kullanıcısının yorum eklemesi görsel editör, asla koşarak gelmeyecek. Etiketlerde sembolik ilkellerin kullanılması, ek ifade araçları şeklinde herhangi bir fayda sağlamaz; yalnızca ek yazma süresi gerektirir. Çoğu durumda, iyi niyetli bir kullanıcının HTML'de belirli temel karakter öğelerinin bulunduğunu bile bilmediği düşünülebilir. Dolayısıyla kural: Etiketin içindeki ve işareti, siteye yapılan bir saldırının kanıtıdır. Buna göre eğer bunu görürsek mesajı engelleriz.

    URL kodlamada kullanılabilecek "%" simgesi için de benzer bir kural benimsenmelidir. Bununla birlikte, "saf" HTML'de öğelerin göreceli boyutlarını ayarlamak için yüzdeler de kullanılır. Tehlikeli kombinasyonlar, "%" işaretinin hemen ardından bir harf veya rakamın geldiği kombinasyonlardır.

    Sunucu komut dosyalarının etkisiz hale getirilmesi

    Tarayıcılardaki JavaScript yorumlayıcılarının aksine, sunucudaki PHP yorumlayıcısı, program metni yazarken özgürlüklere izin vermez. Bu nedenle, olası bir sunucu komut dosyasını etkisiz hale getirmek için, kullanıcının HTML mesajında, bir PHP programı yazarken gerekli olan tüm karakterleri HTML temel öğeleriyle tamamen değiştirmek yeterlidir. Değiştirilecek ilk işaretler dolar ve alt çizgi, nokta, yuvarlak, kare ve kıvırcık parantez, artı ve eksi işaretleri, ters eğik çizgi işareti.

    HTML mesajları için PHP filtresi

    $message görsel editörden sunucuya alınan html mesajıdır.

    // mesajın uzunluğunu hatırla $lenmessage = strlen($message); // yorum etiketini kesin $message = preg_replace("//", "", $message); // "src" özelliğinin harici bir kaynağa işaret ettiği tüm etiketleri kes $message = preg_replace("/]+?src[\w\W]+\/\/[^>]+?>/i" , " ", $mesaj); // aşağıdakiler dışında herhangi bir karakter içeren tüm etiketleri kes: - a-z 0-9 / . : ; " = % # boşluk $mesaj = preg_replace("/]+[^->a-z0-9\/\.\:\;\"\=\%\#\s]+[^>]+?> /i", "", $mesaj); // ".a-z =" $message = preg_replace("/]+?\.+?\=[^>]+?>/i", "", $message); dizisini içeren tüm etiketleri kesip çıkarın; // "% a-z" veya "% 0-9" dizisini içeren tüm etiketleri kesip çıkarın $message = preg_replace("/]+?\%+?[^>]+?>/i", "", $ İleti); // "script" veya "js:" dizisini içeren her etiketi kesip çıkarın $message = preg_replace("/]*?script[^>]*?>/i", "", $message); $mesaj = preg_replace("/]*?js:[^>]*?>/i", "", $mesaj); // "a-z" veya "/" dışında bir karakterle başlayan tüm etiketleri kesip çıkarın $message = preg_replace("/]*?>/i", "", $message); // kontrol edin: eğer mesaj kısaltılmışsa, programı sonlandırın $lenmessage2 = strlen($message); if ($lenmessage != $lenmessage2) ( print "Mesaj eklenemiyor"; çıkış; ) // tehlikeli karakterleri uçtan uca karşılık gelen ilkelleriyle değiştirin $message = str_replace("$", "$" , $mesaj); $mesaj = str_replace("_", "_", $mesaj); $mesaj = str_replace(".", ".", $mesaj); $mesaj = str_replace(chr(92), "\", $mesaj); // \ $mesaj = str_replace("(", "(", $mesaj); $mesaj = str_replace()", ")", $mesaj); $mesaj = str_replace("[", "[", $mesaj); $mesaj = str_replace("]", "]", $mesaj); $mesaj = str_replace("(", "(", $mesaj); $mesaj = str_replace()", ")", $mesaj); $mesaj = str_replace("?", "?", $mesaj); // artık mesaj doğrulandı, içindeki scriptler etkisiz hale getirildi

    Filtrenin eşleştirilmiş etiketleri kaldırmadığına dikkat edilmelidir. Diyelim ki aldık
    Buraya tıklayın!
    Filtre yalnızca öğesini keser ancak eşleştirilmiş (kapanış) etiketi kalır. Tarayıcıya karşılık gelen çiftleri olmayan etiketler içeren mesajlar gönderirseniz, sitenin "çarpılması" şeklinde sorunlarla karşılaşabilirsiniz. Tarayıcının kalan eşleştirilmemiş kapanış etiketiyle hangi açılış etiketiyle eşleşeceği bilinmemektedir. Bu nedenle ve ayrıca güvenlik nedeniyle, filtre tarafından bir şeyin kesildiği mesajlar tarayıcıya kesinlikle gönderilmemelidir. "Mesaj eklenemedi" gibi bir şey yazdırıp programdan çıkmak daha iyidir.

    Mesajın bir dosyaya (veritabanına değil) yazılması bekleniyor.

    Tartışma

    Eleştiriye minnettar olacağım. Destek forumuna bu bölümde yazın

    
    Tepe