PHP chạy shell_exec với tư cách quản trị viên
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 Show 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 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 4 để trả về danh sách thư mục chứa thư mục mà tệp PHP được thực thi
Thực thi lệnh 5 trên máy Linux cũng đạt được kết quả tương tự
Các lệnh khác có tác dụng tương tự
giám đốc điều hành ()Hàm 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 7 với hàm 6 sẽ chỉ in dòng cuối cùng của đầu ra lệnh
Nếu một tham số thứ hai được chỉ định, kết quả được trả về trong một mảng
shell_exec()Hàm 9 tương tự như hàm 6, tuy nhiên, nó xuất ra toàn bộ kết quả dưới dạng một chuỗi
passthru()Hàm 1 thực thi một lệnh và trả về đầu ra ở định dạng thô
proc_open()Hàm 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 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-dataDựa trên những điều trên, sau đây là trình bao web PHP ở dạng đơn giản nhất 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 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 2
Phần 1Giới thiệu về Web Shell Phần 2Web Shell 101 Sử dụng PHP Phần 3Giữ vỏ bọc web dưới vỏ bọc Phần 4Web Shell đang hoạt động Phần 5Phát hiện & Phòng ngừa Các câu hỏi thường gặpvỏ 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 Chúng tôi tôn trọng quyền riêng tư của bạn CHIA SẺ BÀI NÀYTÁC GIẢ Agathoklis Prodromou Làm cách nào để bật shell_exec trong PHP?Cách bật exec() . Mở php của bạn. ini và tìm phần sau Xóa exec khỏi dòng và nhấp vào Lưu thay đổi Nếu bạn cũng cần tắt show_source, system hoặc shell_exec, chỉ cần thêm chúng trở lại dòng và lưu các thay đổi Làm cách nào để sử dụng shell_exec trong PHP?hàm shell_exec(). . cú pháp. chuỗi shell_exec( $cmd ) Thông số. Hàm này chấp nhận một tham số $cmd được sử dụng để giữ lệnh sẽ được thực thi Giá trị trả về. Hàm này trả về lệnh đã thực hiện hoặc NULL nếu xảy ra lỗi Thí dụ đầu ra. gfg. chỉ mục php. chuyên viên máy tính html. php hàm exec() Làm cách nào để chạy exec trong PHP?Xem thêm ¶ . system() - Thực thi một chương trình bên ngoài và hiển thị đầu ra passthru() - Thực thi chương trình bên ngoài và hiển thị đầu ra thô escapeshellcmd() - Siêu ký tự shell thoát pcntl_exec() - Thực thi chương trình đã chỉ định trong không gian quy trình hiện tại toán tử backtick Sự khác biệt giữa exec và shell_exec trong PHP là gì?shell_exec trả về tất cả luồng đầu ra dưới dạng chuỗi. exec trả về dòng cuối cùng của đầu ra theo mặc định, nhưng có thể cung cấp tất cả đầu ra dưới dạng một mảng được chỉ định làm tham số thứ hai . Nếu bạn cần giá trị thoát VÀ tất cả đầu ra, có lẽ bạn vẫn nên sử dụng "exec" thay vì "shell_exec". |