Trong phần 1 của loạt bài này, chúng ta đã xem web shell là gì và tại sao kẻ tấn công lại tìm cách sử dụng nó. Trong phần 2 của loạt bài này, chúng ta sẽ xem xét một số ví dụ cụ thể về web shell được phát triển bằng ngôn ngữ lập trình PHP
Vỏ web tồn tại cho hầu hết mọi ngôn ngữ lập trình web mà bạn có thể nghĩ đến. Chúng tôi chọn tập trung vào PHP vì đây là ngôn ngữ lập trình được sử dụng rộng rãi nhất trên web
Trình bao web PHP không làm gì khác hơn là sử dụng các hàm PHP dựng sẵn để thực thi các lệnh. Sau đây là một số hàm phổ biến nhất được sử dụng để thực thi các lệnh shell trong PHP
Ghi chú. Vì mục đích của bài viết này, chúng tôi đã chỉnh sửa tệp máy chủ của mình và chỉ tên miền www. ví dụ. com đến một máy chủ thử nghiệm
hệ thống[]
Hàm
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
3 chấp nhận lệnh dưới dạng tham số và nó xuất kết quảVí dụ sau trên máy Microsoft Windows sẽ chạy lệnh
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
4 để trả về danh sách thư mục chứa thư mục mà tệp PHP được thực thi
--> Volume in drive C has no label.
Volume Serial Number is A08E-9C63
Directory of C:\webserver\www\demo
02/27/2020 10:21 PM .
02/27/2020 10:21 PM ..
02/27/2020 10:19 PM 22 shell.php
1 File[s] 22 bytes
2 Dir[s] 31,977,467,904 bytes free
Thực thi lệnh
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
5 trên máy Linux cũng đạt được kết quả tương tự
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
Các lệnh khác có tác dụng tương tự
--> www-data
giám đốc điều hành []
Hàm
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
6 nhận lệnh dưới dạng tham số nhưng không xuất kết quả. Nếu tham số tùy chọn thứ hai được chỉ định, kết quả sẽ được trả về dưới dạng một mảng. Nếu không, chỉ dòng cuối cùng của kết quả sẽ được hiển thị nếu được lặp lại
-->
Sử dụng
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
7 với hàm
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
6 sẽ chỉ in dòng cuối cùng của đầu ra lệnh
--> -rw-rw-r-- 1 secuser secuser 29 Feb 27 20:49 shell.php
Nếu một tham số thứ hai được chỉ định, kết quả được trả về trong một mảng
--> Array[
[0] => total 12
[1] => drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:55 .
[2] => drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
[3] => -rw-rw-r-- 1 secuser secuser 49 Feb 27 20:54 shell.php ]
shell_exec[]
Hàm
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
9 tương tự như hàm
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
6, tuy nhiên, nó xuất ra toàn bộ kết quả dưới dạng một chuỗi
-->
total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 28 18:24 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 .
-rw-rw-r-- 1 secuser secuser 36 Feb 28 18:24 shell.php
passthru[]
Hàm
--> www-data
1 thực thi một lệnh và trả về đầu ra ở định dạng thô
-->
total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 28 18:23 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 .
-rw-rw-r-- 1 secuser secuser 29 Feb 28 18:23 shell.php
proc_open[]
Hàm
--> www-data
2 có thể khó hiểu [bạn có thể tìm thấy mô tả chi tiết về hàm trong tài liệu PHP]. Bằng cách sử dụng
--> www-data
2, chúng tôi có thể tạo một trình xử lý [quy trình] sẽ được sử dụng để liên lạc giữa tập lệnh của chúng tôi và chương trình mà chúng tôi muốn chạyđánh dấu ngược
Đáng ngạc nhiên là không nhiều nhà phát triển PHP nhận thức được điều này nhưng PHP sẽ thực thi nội dung của backticks [`] dưới dạng lệnh shell
Ghi chú. Không nên nhầm lẫn ký tự backtick [`] với ký tự trích dẫn đơn [‘]
--> www-data
Dựa trên những điều trên, sau đây là trình bao web PHP ở dạng đơn giản nhất
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
0Nó sử dụng hàm system[] để thực thi các lệnh đang được truyền qua tham số GET yêu cầu HTTP ‘cmd’
Chúng tôi đã xác định rằng các chức năng này [và một số chức năng khác] có thể rất nguy hiểm. Điều nguy hiểm hơn nữa là tất cả các lệnh PHP có sẵn này được bật theo mặc định khi PHP được cài đặt và phần lớn quản trị viên hệ thống không tắt chúng
Nếu bạn không chắc liệu chúng có được bật trên hệ thống của mình hay không, thao tác sau đây sẽ trả về danh sách các chức năng nguy hiểm đã được bật
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
1Trong cài đặt mặc định, chúng ta có thể thấy rằng tất cả các chức năng được đề cập ở trên đều được bật
--> total 12
drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .
drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..
-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php
2
Phần 1
Giới thiệu về Web Shell
Phần 2
Web Shell 101 Sử dụng PHP
Phần 3
Giữ vỏ bọc web dưới vỏ bọc
Phần 4
Web Shell đang hoạt động
Phần 5
Phát hiện & Phòng ngừa
Các câu hỏi thường gặp
vỏ web là gì?
Vỏ web là một ứng dụng nhỏ mà kẻ tấn công chạy trên máy chủ web của bạn. Sau đó, họ có thể sử dụng ứng dụng này để truy cập từ xa vào máy chủ của bạn và chạy các lệnh trên đó. Bản thân vỏ web không bao giờ là một cuộc tấn công, nó là hậu quả của một cuộc tấn công thành công vào trang web hoặc ứng dụng web của bạn. Điều này có nghĩa là nếu bạn có web shell, bạn sẽ phải lo lắng về một vấn đề nghiêm trọng hơn nhiều
Xem cách web shell hoạt động trong thực tế
Làm thế nào để tin tặc độc hại sử dụng vỏ web?
Tin tặc độc hại sử dụng vỏ web để kiểm soát máy chủ đã bị xâm phạm. Đầu tiên, chúng khai thác lỗ hổng trong trang web hoặc ứng dụng web của bạn, chẳng hạn như SQL injection, thực thi mã từ xa hoặc các lỗ hổng khác. Sau đó, họ tải web shell lên máy chủ web của bạn. Từ bây giờ, họ có thể chạy bất kỳ lệnh nào họ thích trên máy chủ của bạn
Xem ví dụ từng bước về cuộc tấn công dẫn đến xâm phạm toàn bộ máy chủ
Làm cách nào tôi có thể phát hiện web shell?
Bạn có thể phát hiện vỏ web bằng cách phân tích nhật ký. Tuy nhiên, bạn không nên tập trung vào việc phát hiện web shell mà thay vào đó, bạn nên phát hiện các lỗ hổng có thể cho phép kẻ tấn công kiểm soát máy chủ của bạn. Ngay cả khi bạn phát hiện ra web shell, điều đó sẽ không ngăn được kẻ tấn công giành lại quyền kiểm soát nếu các lỗ hổng vẫn còn đó. Để phát hiện các lỗ hổng web và tìm hiểu cách loại bỏ chúng, hãy sử dụng Acunetix
Xem những gì Acunetix Premium có thể làm cho bạn
Làm cách nào tôi có thể tự bảo vệ mình trước web shell?
Cách tốt nhất để tự bảo vệ mình trước web shell là làm cho hệ thống của bạn không thể sử dụng chúng. Bạn có thể làm điều đó bằng cách làm cứng máy chủ của mình – xóa tất cả các quyền thừa, chặn các chức năng nguy hiểm tiềm ẩn, hạn chế thực thi tập lệnh trong các thư mục tải lên, v.v. Tuy nhiên, tốt nhất là bảo vệ máy chủ khỏi bị xâm nhập ngay từ đầu bằng cách sử dụng Acunetix thường xuyên
Đọc thêm về phát hiện và bảo vệ web shell
Nhận nội dung mới nhất về bảo mật web
trong hộp thư đến của bạn mỗi tuần
Chúng tôi tôn trọng quyền riêng tư của bạn
CHIA SẺ BÀI NÀY
TÁC GIẢ
Agathoklis Prodromou
Quản trị viên/Nhà phát triển hệ thống web