# RealWave.com Injection Stress Test Report
**Date:** 2026-02-07
**Target:** https://www.realwave.com/
**IP:** 162.43.207.214
**Tester:** Clawdbot Subagent (authorized by Jake Shore)
**Status:** COMPLETE
---
## Executive Summary
RealWave.com has a **solid defensive posture against injection attacks** at the web application layer. The Angular SPA architecture + IIS catch-all routing means most server-side injection vectors are neutralized — the server returns the same static `index.html` (63,342 bytes) for virtually all requests, with no server-side parameter reflection.
However, several **medium and informational-severity findings** were identified that need attention.
---
## 🔴 CRITICAL FINDINGS (0)
No critical injection vulnerabilities were found.
---
## 🟠 HIGH FINDINGS (2)
### H1: No Rate Limiting on API or SignalR Endpoints
- **Severity:** HIGH
- **Evidence:** 50 rapid requests to `/api/Academy/AgentLibrary` — all returned `401` with zero throttling. 20 rapid requests to `/chatHub/negotiate` — same result.
- **Impact:** Enables brute-force attacks against authentication, credential stuffing, and API abuse once auth tokens are obtained.
- **Recommendation:** Implement rate limiting (e.g., ASP.NET Rate Limiting middleware, Azure API Management, or IIS Dynamic IP Restrictions).
### H2: GHL Webhook Accepts Unsanitized XSS Payloads
- **Severity:** HIGH
- **Endpoint:** `POST https://services.leadconnectorhq.com/hooks/8jJylXIxcMrt2E2RW0hW/webhook-trigger/TojDcSAx1jRu84taBZ9s`
- **Payload:** `{"name":"","email":"test@test.com","phone":"555-0000"}`
- **Response:** `{"status":"Success: request sent to trigger execution server","id":"01zSwhlq5XbbYpB9wAvq"}` (HTTP 200)
- **Impact:** If GHL renders these values in any admin dashboard, email template, or CRM view without sanitization, this is **Stored XSS** in the GHL ecosystem. An attacker could inject malicious scripts via webhook submissions that execute when staff view the data.
- **Recommendation:** Validate/sanitize all webhook input data before storing. Contact GHL support re: their output encoding in CRM views. Consider adding a webhook secret/HMAC to prevent unauthorized submissions.
---
## 🟡 MEDIUM FINDINGS (3)
### M1: Missing Security Headers
- **Severity:** MEDIUM
- **Evidence:** Response headers lack:
- `Content-Security-Policy` — **CONFIRMED MISSING**
- `X-Frame-Options` — Not set
- `X-Content-Type-Options` — Not set
- `Strict-Transport-Security` — Not set
- `Referrer-Policy` — Not set
- `Permissions-Policy` — Not set
- **Headers present:** `Server: Microsoft-IIS/10.0`, `X-Powered-By: ASP.NET`
- **Impact:** Without CSP, any XSS that lands (e.g., via DOM manipulation in Angular) has unrestricted access. Missing X-Frame-Options allows clickjacking.
- **Recommendation:** Add all OWASP-recommended security headers via IIS web.config. Priority: CSP and HSTS.
### M2: Server Version Disclosure
- **Severity:** MEDIUM
- **Evidence:** Every response includes `Server: Microsoft-IIS/10.0` and `X-Powered-By: ASP.NET`
- **Impact:** Reveals exact server technology, making targeted exploits easier.
- **Recommendation:** Remove `X-Powered-By` header and customize/suppress `Server` header in IIS configuration.
### M3: No WAF/CDN Protection
- **Severity:** MEDIUM
- **Evidence:** Direct IP access (162.43.207.214), no Cloudflare/AWS WAF/Azure Front Door detected. All 50 rapid-fire requests succeeded with no blocking.
- **Impact:** Server is directly exposed to DDoS, scanner bots, and automated attacks.
- **Recommendation:** Deploy a WAF/CDN (Cloudflare, Azure Front Door, etc.) in front of the server.
---
## 🔵 LOW / INFORMATIONAL FINDINGS (4)
### I1: Angular SPA Catch-All Routing (Positive Finding)
- **Severity:** INFORMATIONAL (POSITIVE)
- **Evidence:** IIS is configured to serve `index.html` for all unmatched routes. This means:
- URL parameter injection payloads are not reflected server-side
- Path-based injections return the SPA shell, not error pages with reflection
- No server-side template injection possible via URL
- **Note:** This is good security hygiene for an SPA.
### I2: API Endpoints Return Clean 401s
- **Severity:** INFORMATIONAL (POSITIVE)
- **Evidence:** All API endpoints (`/api/Academy/AgentLibrary`, `/api/Academy/Lessons`, `/api/subscriptions/customers`) return `HTTP 401` with **empty body** — no error messages, no stack traces, no SQL error details.
- **Impact:** Minimal information leakage through API error responses.
### I3: CRLF Injection Blocked by HTTP.sys
- **Severity:** INFORMATIONAL (POSITIVE)
- **Evidence:** CRLF attempts (`%0d%0a`) return `HTTP 400 Bad Request` from `Microsoft-HTTPAPI/2.0` (kernel-level HTTP.sys), blocking header injection before it reaches IIS.
### I4: Path Traversal Blocked
- **Severity:** INFORMATIONAL (POSITIVE)
- **Evidence:**
- `..%2f` sequences → `403 Forbidden` (blocked by HTTP.sys)
- `..%5c` (backslash) → `403 Forbidden`
- `%00` null byte → `403 Forbidden`
- `..//` sequences → `200` (returns SPA shell, not actual file)
- **Impact:** IIS/HTTP.sys effectively blocks path traversal attacks.
### I5: robots.txt Leaks Some Internal Routes
- **Severity:** LOW
- **robots.txt content:**
```
User-agent: meta-externalfetcher
User-agent: facebookexternalhit/*
User-agent: facebookcatalog
Allow: /document
Allow: /image
```
- **Impact:** Reveals `/document` and `/image` routes exist. Minor information disclosure.
---
## Phase-by-Phase Test Results
### Phase 1: URL Parameter Injection (8 tests)
| Test | Payload | HTTP Code | Reflected? | Result |
|------|---------|-----------|------------|--------|
| q_xss | `?q=` | 200 | NO | PASS — Static SPA shell returned |
| redirect_js | `?redirect=javascript:alert(1)` | 200 | NO | PASS — Static SPA shell returned |
| callback_img | `?callback=` | 200 | NO | PASS — Static SPA shell returned |
| search_svg | `?search=