A passive security assessment was conducted against Company E's public-facing infrastructure across 4 primary domains and 6+ discovered subdomains. The assessment revealed significant security gaps including exposed development environments, missing security headers, email spoofing vulnerabilities, API-level user enumeration, internal architecture disclosure, and server technology information leakage. No active exploitation was performed.
| Asset | IP Address | Server | Technology | Hosting |
|---|---|---|---|---|
| company-e.example.com | 10.0.5.1 | Apache/2.4.58 (Ubuntu) | Node.js + Express (SPA) | Hosting Provider / Hosting Provider |
| company-e-crm.example.com | 10.0.5.2 | Microsoft-IIS/10.0 | ASP.NET MVC 5.3, .NET 4.0 | Windows IIS |
| company-e-monitor.example.com | 10.0.5.3 | Microsoft-IIS/10.0 | ASP.NET MVC 5.2, .NET 4.0 | SecureHostDNS |
| company-e-dialer.example.com | 10.0.5.1 | Kestrel | .NET Core / .NET 5+ | Hosting Provider (shared w/ main) |
| dev.company-e.example.com | 10.0.5.4 | Microsoft-IIS/10.0 | ASP.NET MVC 5.3, .NET 4.0 | SecureHostDNS |
| old.company-e.example.com | 10.0.5.4 | Microsoft-IIS/10.0 | ASP.NET MVC 5.2, .NET 4.0 | SecureHostDNS (same as dev) |
| new.company-e.example.com | 10.0.5.5 | - | - | - |
| newvs.company-e.example.com | 10.0.5.6 | - | - | Azure |
| mail.company-e.example.com | 10.0.5.7 | - | Mail server | - |
| variableconsultancy.com | 10.0.5.3 | Microsoft-IIS/10.0 | ASP.NET MVC 5.2 | Same as WHM |
Affected: dev.company-e.example.com
Description: The development/staging instance of VSCRM is fully accessible on the public internet with active login and registration pages. This is the CRM application's dev build running on IIS/10.0 with ASP.NET MVC 5.3.
Affected: dev.company-e.example.com
Description: Unlike all other domains which properly redirect HTTP to HTTPS, dev.company-e.example.com serves its full application (including login page) over unencrypted HTTP with no redirect to HTTPS.
Affected: company-e-crm.example.com dev.company-e.example.com old.company-e.example.com
Description: The CRM application and dev environments return Access-Control-Allow-Origin: * which allows any website on the internet to make cross-origin requests to these applications.
Access-Control-Allow-Origin: * with specific allowed originsX-Frame-Options: AllowAll to DENY or SAMEORIGINAffected: company-e-crm.example.com (Production CRM)
Description: The VSCRM login API at /api/Login is publicly accessible and returns detailed JSON responses that: (1) confirm whether a username exists, (2) reveal the complete internal data model with 16+ field names, and (3) has NO rate limiting — allowing unlimited brute-force attempts.
{"status":0,"message":"Invalid credentials"}Affected: dev.company-e.example.com (and maps directly to production architecture)
Description: The dev environment returns verbose error messages that reveal the full internal namespace, controller names, and application structure of the VSCRM application. Combined with open registration (C-01), this gives attackers a complete blueprint of the application.
<customErrors mode="On"> in web.configAffected: company-e.example.com company-e-crm.example.com company-e-dialer.example.com
Description: Three of four domains have NO DMARC record. The fourth (company-e-monitor.example.com) has DMARC with p=none which only monitors but does not reject spoofed emails.
_dmarc.domain.com TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@company-e.example.com"p=reject after monitoring periodp=none to p=quarantineAffected: company-e-crm.example.com company-e-monitor.example.com company-e-dialer.example.com
Additional Issue: company-e-monitor.example.com has DUPLICATE SPF records (two TXT records with v=spf1). Per RFC 7208, this makes SPF evaluation result in PermError, effectively disabling SPF entirely.
~all to -all on all domainsAffected: All domains
No DKIM selector records were found for any standard selector names (default, google, zoho, selector1, selector2). Without DKIM, email authenticity cannot be cryptographically verified.
Affected: company-e-crm.example.com company-e-monitor.example.com dev.company-e.example.com old.company-e.example.com
.NET Framework 4.0 (version 4.0.30319) and ASP.NET MVC 5.x are legacy frameworks. .NET Framework 4.0 reached end of support. These versions have known CVEs and no longer receive security patches.
Affected: old.company-e.example.com
An older version of the application (ASP.NET MVC 5.2 vs current 5.3) is publicly accessible with login functionality. Legacy instances typically have unpatched vulnerabilities and may contain outdated dependencies.
Affected: company-e-crm.example.com dev.company-e.example.com
Description: The SignalR hubs JavaScript proxy file at /signalr/hubs is publicly accessible on both production and dev, revealing all real-time server methods and the notification/calling system architecture.
/signalr/hubs endpointAffected: company-e-monitor.example.com
Description: Work Hour Monitor returns HTTP 200 (instead of 404) for sensitive paths like /backup, /uploads, /data, /export, /download, /files, /temp, /tmp. While the response body is a generic error page, the HTTP 200 status code indicates these routes exist in the application routing table.
Affected: All domains
Every domain leaks exact server software and framework versions in HTTP response headers, enabling targeted attacks.
<requestFiltering removeServerHeader="true"/> in web.configServerTokens Prod and ServerSignature Offhelmet middleware or app.disable('x-powered-by')Affected: All domains
| Header | company-e.example.com | company-e-crm.example.com | WHM | company-e-dialer.example.com | dev. | old. |
|---|---|---|---|---|---|---|
| Content-Security-Policy | Missing | Missing | Missing | Missing | Missing | Missing |
| X-Content-Type-Options | Missing | Missing | Missing | Missing | Missing | Missing |
| X-Frame-Options | Missing | AllowAll | Missing | Missing | AllowAll | Missing |
| Strict-Transport-Security | Missing | ✓ Present | Missing | Missing | Missing | Missing |
| Referrer-Policy | Missing | Missing | Missing | Missing | Missing | Missing |
| Permissions-Policy | Missing | Missing | Missing | Missing | Missing | Missing |
Note: X-Frame-Options: AllowAll is worse than missing — it explicitly permits framing from any origin, enabling clickjacking.
Affected: company-e-monitor.example.com dev.company-e.example.com old.company-e.example.com
Secure flag to all cookies in web.config: <httpCookies requireSSL="true"/>SameSite=Strict or SameSite=Lax to all session cookiesAffected: company-e-monitor.example.com
Invalid paths return detailed IIS 10.0 error pages with internal server information, including full XHTML error templates with CSS styling that reveals the IIS version and error handling configuration.
<httpErrors errorMode="Custom"><customErrors mode="On"/>Affected: company-e-monitor.example.com
The server responds with HTTP 200 to TRACE requests instead of rejecting them. The TRACE method can be exploited for Cross-Site Tracing (XST) attacks to steal credentials from HTTP headers.
Affected: company-e-monitor.example.com
v=spf1 include:sendersrv.com include:zoho.in -allAffected: company-e-crm.example.com
Description: Sending login credentials via form POST to the VSCRM login page returns HTTP 500 (Internal Server Error) instead of a proper error response. This indicates unhandled exception handling in the authentication flow.
All domains use Let's Encrypt certificates with 90-day validity. While auto-renewal typically handles this, there's risk of outage if renewal fails. No wildcard cert means each subdomain needs separate management.
Affected: All domains
No /.well-known/security.txt file found. This file (RFC 9116) helps security researchers report vulnerabilities responsibly.
The SSL certificate for company-e-monitor.example.com includes variableconsultancy.com in Subject Alternative Names, revealing an additional related domain that was not publicly documented.
The robots.txt on company-e.example.com references https://newvs.company-e.example.com/sitemap.xml, leaking an Azure-hosted subdomain (10.0.5.6) that may be a staging/preview environment.
Multiple subdomains discovered through DNS enumeration, SSL certificate SANs, and robots.txt analysis. Total of 10 distinct hostnames across 7 unique IP addresses were identified.
Infrastructure uses 4 different server technologies: Apache (Ubuntu), IIS 10.0, Kestrel, and Node.js/Express. This increases the attack surface and maintenance burden.
Email handled by Microsoft 365 (company-e.example.com), Zoho Mail (company-e-crm.example.com, WHM, company-e-dialer.example.com), plus MailerLite and sendersrv.com for marketing. Fragmented email infra increases misconfiguration risk.
Both company-e.example.com and company-e-dialer.example.com resolve to 10.0.5.1 (Hosting Provider). While not inherently a vulnerability, co-hosted services can impact each other if one is compromised.
The /api/Login response reveals 16+ internal field names including: SessionId, UserName, ImageUrl, Email, FirebaseTokenId, IsCompanyHaveIpBasedAuthentication, IsIpValid, MachineIp, CompanyGuId, UserType, additionalFeatures, IsTrackingAllow, IsSelfieRequired, CheckListRights, IsDateRangeCalendarDisplay. This reveals Firebase integration, IP-based auth, selfie verification, and multi-tenant company GUID architecture.
-all (hardfail)| Priority | Effort | Action | Finding |
|---|---|---|---|
| P0 | 30 min | Restrict dev.company-e.example.com behind VPN/IP whitelist or remove DNS record | C-01, C-02 |
| P0 | 30 min | Decommission old.company-e.example.com or restrict access | H-05 |
| P0 | 1 hour | Fix VSCRM /api/Login - Generic error message, strip null fields, add rate limiting (5 req/min/IP) | C-04 |
| P0 | 30 min | Disable verbose errors on dev - Set customErrors mode="On", return generic error pages | C-05 |
| P1 | 1 hour | Fix CORS policy - Replace * with specific origins on company-e-crm.example.com and change X-Frame-Options to DENY |
C-03 |
| P1 | 1 hour | Add DMARC records to all 4 domains and fix duplicate SPF on WHM | H-01, H-02, M-06 |
| P1 | 30 min | Configure DKIM signing in Zoho and Outlook admin panels | H-03 |
| P1 | 30 min | Secure SignalR hubs - Require authentication for /signalr/hubs endpoint | H-06 |
| P1 | 1 hour | Fix WHM routing - Return 404 for /backup, /data, /uploads, etc. Fix /Admin 500 error | H-07 |
| P2 | 2 hours | Add security headers (CSP, HSTS, X-Content-Type-Options, Referrer-Policy) to all domains | M-01, M-02 |
| P2 | 1 hour | Remove version headers and configure custom error pages on IIS | M-01, M-04 |
| P2 | 30 min | Fix cookie security - Add Secure flag, disable TRACE method | M-03, M-05 |
| P3 | Ongoing | Plan .NET Framework migration from 4.0 to .NET 8+ LTS | H-04 |
| P3 | 15 min | Add security.txt file to all domains | L-02 |
Disclaimer: This was a passive reconnaissance and header-level analysis only. No active exploitation or intrusive testing was performed. A full penetration test with active scanning tools (Burp Suite, Nessus, SQLMap, etc.) would likely uncover additional vulnerabilities, particularly in application logic, authentication, API security, and input validation.