यह एक जावास्क्रिप्ट फेसबुक से संबंधित एक सुरक्षा भेद्यता, अधिक रों का फायदा उठाने की कोशिश कर रहा टुकड़ा है। अपने छवि अपलोडर क्लाइंट साइड ActiveX नियंत्रण के लिए pecifically।
cobj
भाग क्लास आईडी {5C6698D9-7BE4-4122-8EC5-291D84DBD4A0}
का ऑब्जेक्ट बनाने का प्रयास करता है जो एक ActiveX फोटो अपलोडर नियंत्रण होता है। ExtractIptc और ExtractExif फ़ंक्शन उस विशिष्ट ActiveX नियंत्रण से संबंधित हैं।
कोड का मूल वास्तव में मेमोरी एड्रेस मैनिपुलेशन, स्थानांतरण, मास्क का उपयोग उच्च और निम्न बिट्स को अलग करने के लिए करता है। उदाहरण के लिए, hex((addr>>16)&0xFFFF,4))
एक पता लेता है, इसे 16 बिट्स दाएं स्थानांतरित करता है, निचले भाग को साफ़ करता है और इसे हेक्स नंबर में परिवर्तित करता है। वास्तव में इस कोड के अधिकांश को समझने के लिए, आपके पास सही डिबगिंग टूल होना चाहिए।
{5C6698D9-7BE4-4122-8EC5-291D84DBD4A0}
ClassID Googling दिया कुछ रोचक परिणाम आप इस पर गौर करना चाहिए:
http://www.kb.cert.org/vuls/id/776931
http://seclists.org/fulldisclosure/2008/Feb/0023.html
http://securitytracker.com/alerts/2008/Feb/1019297.html
कृपया ध्यान दें, इस पीएचपी नहीं है। यह जावास्क्रिप्ट है।
अधिक जानकारी ...
cobj शायद एक CreateObject() कॉल में अनुवाद किया है। प्रत्येक पंजीकृत ActiveX नियंत्रण की अपनी कक्षा आईडी होती है, और उनके पास {0000000000-0000-0000-0000-000000000000}
है। जब आप पंजीकृत लाइब्रेरी का संदर्भ लेना चाहते हैं, और इसका एक उदाहरण बनाते हैं, तो आप इसका नाम या उसकी कक्षा आईडी का उपयोग कर सकते हैं।
ActiveX नियंत्रण स्वयं आपके कंप्यूटर पर एक .OCX या .DLL फ़ाइल होना चाहिए। यदि आप यह फ़ाइल पा सकते हैं और इसे डीबग कर सकते हैं, तो आपको ExtractIptc और ExtractExif फ़ंक्शंस के बारे में सबसे विशिष्ट विवरण मिलेंगे। फिर, उन दो कार्यों में एक विशिष्ट तरीके से बुलाए जाने पर भेद्यताएं प्रतीत होती हैं, और यही वह स्क्रिप्ट है जिसका शोषण करने का प्रयास किया जा रहा है।
var hsta=0x0c0c0c0c
भाग हेक्साडेसिमल संख्या 0c0c0c0c के बराबर एक परिवर्तनीय hsta परिभाषित करता है। यह var hsta = 202116108
लिखने जैसा ही है। कंप्यूटर इंजीनियरिंग में, दशमलव संख्याओं की तुलना में हेक्साडेसिमल पते से निपटना आसान है क्योंकि कंप्यूटर की मेमोरी के अंदर पते और डेटा बाइनरी है और सीधे हेक्स संख्या के रूप में प्रदर्शित किया जा सकता है। हेक्साडेसिमल के बारे में अधिक जानकारी: http://en.wikipedia.org/wiki/Hexadecimal।
परिवर्तनीय नाम hsta हंगेरी नोटेशन में प्रतीत होता है (पहला अक्षर हेक्स के लिए चर प्रकार - एच का प्रतिनिधित्व करता है)। इसलिए मुझे लगता है कि इसका मतलब है हेक्साडेसिमल प्रारंभ पता (hsta)। विचार की एक ही ट्रेन के बाद, मेरा अनुमान होगा कि pl
का अर्थ है पेलोड और plc
का मतलब पेलोड कोड है।
पेलोड कोड वह कोड है जो शोषण सफल होने पर कंप्यूटर निष्पादित करेगा, और स्क्रिप्ट (\x43\x43\x43\x43\n....\xEF)
की शुरुआत में आप यही देखते हैं। यह किसी विशेष CPU आर्किटेक्चर और ऑपरेटिंग सिस्टम के लिए shell code के रूप में एन्कोड किया गया है। इसका मतलब है कि कोड पहले से संकलित है, स्टैंडअलोन है, और सीपीयू को सीधे पाइप किया जा सकता है। यदि आप इसे डीकोड करते हैं, तो आपको शायद मशीन कोड के करीब कुछ मिल जाएगा। यह शायद कुछ भी सकारात्मक नहीं है।
hex(num,width)
फ़ंक्शन एक दशमलव संख्या को उसके हेक्साडेसिमल रूप में परिवर्तित करता है। मैंने फ़ंक्शन को अलग से परीक्षण किया है, और इसे 1000 खिलाते समय 3E8 लौटा दिया। चौड़ाई चर का उपयोग स्क्रिप्ट से बाहर निकलने के लिए किया जाता है यदि परिणामस्वरूप हेक्साडेसिमल संख्या निर्दिष्ट से बड़ी है।
इस हिस्से के बारे में:
var buf = addr(0x0c0c0c0c);
buf = buf.substring(0,400);
obj.ExtractIptc = buf;
obj.ExtractExif = buf;
buf चर एक बफर है। एक बफर स्मृति में डेटा से ज्यादा कुछ नहीं है। इस कोड में दिखाए गए अनुसार इसे स्ट्रिंग के रूप में इंटरफेस किया जा सकता है। मेरा अनुमान है कि 400 बाइट्स का बफर 0x0c0c0c0c पर स्मृति में जो भी सामग्री है, से बना है और फिर दो कार्यों में खिलाया जाता है।
यहां कई फ़ंक्शन परिभाषाएं गायब हैं। अर्थात्, hav() फ़ंक्शन।
यह सभी PHP नहीं है।वास्तव में, इसका एक छोटा सा माउंट PHP की तरह दिखता है। शेष जावास्क्रिप्ट की तरह दिखता है। इसके अलावा, कृपया अपने कोड को स्वरूपित करने का बेहतर काम करें - इसे पढ़ना लगभग असंभव है। –
@ पीटर बेली: हाँ, मैंने इसे उसके लिए तय कर दिया। –
मैंने आपके उत्तर को आपके लिए अधिक जानकारी के साथ संशोधित किया। –