Bài viết này sẽ giúp các bạn hiểu rõ Web shell là gì và các cách thức hoạt động của nó. Web Shell là một tập lệnh độc hại được sử dụng bởi hacker với mục đích leo thang và duy trì quyền truy cập liên tục trên một ứng dụng web đã bị xâm phạm.
Một Web Shell không thể tấn công hoặc khai thác lỗ hổng từ xa. Vì vậy đây luôn là bước thứ hai của một cuộc tấn công. Giai đoạn này còn được gọi là hậu khai thác.
Web Shell là gì?
Hacker có thể lợi dụng các lỗ hổng phổ biến trên trang web như SQL Injection. Remote File Inclusion (RFI) hoặc thậm chí XSS. Như một phần của cuộc tấn công social engineering để đạt được khả năng upload file và truyền tải các file độc hại. Hacker thực thi lệnh shell (truy cập vào cmd / dòng lệnh), thực thi mã, liệt kê Cơ sở dữ liệu và quản lý file.
Các Web Shell có thể được viết bằng nhiều ngôn ngữ web. Ví dụ, các Shell Web PHP rất phổ biến. Chúng có thể ảnh hưởng đến bạn cho dù hệ thống của bạn dựa trên phần mềm tùy chỉnh. Hoặc trên hệ thống quản lý nội dung phổ biến như WordPress có plugin. Các Web Shell cũng có thể không bị phát hiện bởi phần mềm chống virus hoặc phần mềm diệt malware vì chúng không sử dụng các loại file thực thi thông thường.
Truy cập từ xa liên tục của Web Shell là gì?
Một tập lệnh Web Shell thường chứa một backdoor, cho phép hacker truy cập từ xa và có thể điều khiển máy chủ truy cập Internet bất cứ lúc nào.
Hacker cũng có thể chọn tự sửa lỗ hổng để đảm bảo rằng không ai khác sẽ khai thác lỗ hổng đó. Hacker có thể dùng một tài khoản riêng tư và tránh mọi tương tác với quản trị viên.
Một điều đáng nói nữa là một số Web Shell phổ biến sử dụng xác thực mật khẩu và các kỹ thuật khác. Để đảm bảo rằng chỉ có hacker tải lên Web Shell mới có quyền truy cập vào nó. Các kỹ thuật này bao gồm khóa tập lệnh vào một header HTTP tùy chỉnh cụ thể, các giá trị cookie cụ thể, địa chỉ IP cụ thể.
Hầu hết các Web Shell cũng chứa mã để xác định và chặn các công cụ tìm kiếm. Sau đó đưa vào danh sách đen toàn bộ domain hoặc server mà ứng dụng web được lưu trữ. Nói cách khác, sự xáo trộn và ẩn danh là 2 hành động chính được hacker sử dụng.
Nâng cấp đặc quyền
Sử dụng Web Shell , hacker có thể cố gắng thực hiện các cuộc tấn công leo thang phân quyền bằng cách khai thác các lỗ hổng cục bộ trên hệ thống để giành được các đặc quyền cao hơn. Trong Linux và các hệ điều hành dựa trên UNIX khác là superuser.
Với quyền truy cập vào tài khoản root. Về cơ bản, hacker có thể làm bất cứ điều gì trên hệ thống bao gồm quản lý file cục bộ, cài đặt phần mềm, thay đổi quyền, thêm và xóa người dùng, đánh cắp mật khẩu, đọc email và những việc xấu khác.
Tunnel và phát động các cuộc tấn công
Web Shell có thể được sử dụng để xoay vòng bên trong hoặc bên ngoài mạng. Hacker có thể muốn theo dõi (sniff) lưu lượng mạng trên hệ thống, quét mạng nội bộ để khám phá các máy chủ trực tiếp và liệt kê firewall và router trong mạng.
Quá trình này có thể mất nhiều ngày, thậm chí vài tháng. Chủ yếu là vì hacker thường tìm cách để ẩn danh tính và thu hút ít sự chú ý nhất có thể. Một khi hacker có quyền truy cập liên tục, chúng có thể có nhiều thời gian để thực hiện các hành động xấu của mình.
Hệ thống bị xâm nhập cũng có thể được sử dụng để tấn công hoặc quét các mục tiêu cư trú bên ngoài mạng. Điều này bổ sung thêm một lớp ẩn danh cho hacker vì hacker đang sử dụng hệ thống máy tính của bên thứ 3 để khởi động một cuộc tấn công. Một bước nữa sẽ là tunnel thông qua nhiều hệ thống, khiến cho việc theo dõi một cuộc tấn công trở về nguồn của nó gần như không thể.
Sử dụng Botnet Web Shell
Một cách sử dụng khác của Web Shell là làm cho các máy chủ trở thành một phần của mạng botnet.
Thiết lập này thường được sử dụng trong các cuộc tấn công từ chối dịch vụ phân tán (DDoS). Trong trường hợp này, hacker không có bất kỳ lợi ích nào trong việc gây tác hại hoặc đánh cắp bất cứ thứ gì từ hệ thống của người dùng. Thay vào đó, hacker sẽ chỉ sử dụng tài nguyên của máy tính.
Cách phòng chống Web Shell
Sau đây là các cách để ngăn chặn Web Shell:
- Nếu không được sử dụng, hãy vô hiệu hóa các hàm PHP có thể gây nguy hiểm như execute(), shell_exec(), passthru(), system(), show_source(), proc_open(), pcntl_exec(), eval() và assert()
- Nếu bắt buộc phải bật các lệnh đó, hãy đảm bảo rằng hạn chế những người dùng bình thường không có quyền truy cập vào các tập lệnh này. Ngoài ra, hãy sử dụng escapepeshellarg() và escapepeshellcmd() để đảm bảo rằng inputcủa người dùng không thể được đưa vào các lệnh shell, dẫn đến lỗ hổng thực thi lệnh.
- Nếu ứng dụng web của bạn đang sử dụng biểu mẫu, hãy đảm bảo rằng chúng an toàn và chúng chỉ cho phép tải lên các loại file trong danh sách cho phép.
- Không bao giờ tin tưởng input của người dùng.
- Không sử dụng code một cách mù quáng mà bạn có thể tìm thấy trên các diễn đàn hoặc trang web trực tuyến.
- Trong trường hợp của WordPress, hãy cố gắng tránh cài đặt các plugin của bên thứ ba nếu bạn không cần chúng. Nếu bạn cần sử dụng plugin, hãy đảm bảo plugin đó có uy tín và được cập nhật thường xuyên.
- Tắt thực thi PHP trong các thư mục nhạy cảm như hình ảnh hoặc file tải lên.
- Khóa quyền người dùng web server.
Vietnix vừa chia sẻ về các thủ thuật Web Shell và cách phòng chống hiệu quả. Hy vọng bạn hiểu rõ được khái niệm của Web Shell trong bài viết này và biết cách ngăn chặn Web Shell để bảo vệ hệ thống máy tính của bạn một cách an toàn, chúc bạn thành công!