Security Audit Portal ยท CIPHER Security Platform
โฌ‡ Download (.md) โฌ‡ Download (.doc)

Web Security Audit Report โ€” Supplemental Findings

travelpro365.com: Independent Validation & Additional Findings


FieldValue
Target Domaintravelpro365.com
OperatorCoastline Travel Group (CST# 2040360-40)
Validation DateMarch 15, 2026
Original Report DateMarch 4, 2026 (v1.0 Phase 1 Final)
Prepared ByCIPHER Security Platform (Independent Validation)
Audit TypeSupplemental: Validation & Additional Passive Reconnaissance
ClassificationCONFIDENTIAL: Attorney-Client Privilege Recommended

Table of Contents


1. Purpose

This document serves two purposes:

All tests were conducted on March 15, 2026 using passive, non-intrusive techniques identical to the original assessment methodology. No authentication credentials were used. No data was modified. No payloads were injected.


2. Validation Summary

2.1 Confirmed Findings (25 of 25 testable)

Every finding that could be independently tested from an external position was confirmed exactly as documented in the original report.

Finding IDTitleValidation Status
RECON-003 / THREAT-002RDP Port 3389 Publicly ExposedCONFIRMED โ€” Test-NetConnection: TcpTestSucceeded = True
INFRA-001 / COMPLIANCE-003No WAF/CDN, Direct EC2 ExposureCONFIRMED โ€” dig resolves directly to 52.9.246.155; no WAF headers present
HEADERS-001CORS Wildcard Reflection on Payment DomainCONFIRMED โ€” Origin: https://evil.com reflected with credentials: true; null origin also reflected
TLS-001Expired Certificate: brownell.travelpro365.comCONFIRMED โ€” openssl s_client: "no peer certificate available"
TLS-002mvt.travelpro365.com Certificate Imminent ExpiryCONFIRMED โ€” notAfter=Mar 16 23:59:59 2026 GMT (expires tomorrow)
THREAT-004Microsoft-HTTPAPI/2.0 on mvt SubdomainCONFIRMED โ€” Server: Microsoft-HTTPAPI/2.0
TLS-003No HSTS on mvt.travelpro365.comCONFIRMED โ€” No Strict-Transport-Security header present
PRIVACY-001No Privacy PolicyCONFIRMED โ€” /privacy-policy, /privacy, /terms-of-service all return 404
PRIVACY-002No GPC EndpointCONFIRMED โ€” /.well-known/gpc.json returns 404
RECON-011No SPF RecordCONFIRMED โ€” Only google-site-verification TXT record present
RECON-011No DMARC RecordCONFIRMED โ€” _dmarc.travelpro365.com returns NXDOMAIN
HEADERS-005Antiforgery Cookie Missing Secure FlagCONFIRMED โ€” Cookie set with path=/; samesite=strict; httponly only; Secure flag absent
HEADERS-002No Content-Security-PolicyCONFIRMED โ€” No CSP header on any tested endpoint
HEADERS-004No X-Content-Type-OptionsCONFIRMED โ€” Header absent from all responses
HEADERS-006No Referrer-PolicyCONFIRMED โ€” Header absent from all responses
HEADERS-007No Permissions-PolicyCONFIRMED โ€” Header absent from all responses
HEADERS-003X-Frame-Options Missing on Booking EntryCONFIRMED โ€” Present on /Home/Login (SAMEORIGIN), absent on /Home/Start
TLS-005HSTS max-age 30 Days, No includeSubDomainsCONFIRMED โ€” max-age=2592000 only
INFRA-005HTTPโ†’HTTPS 307 Temporary RedirectCONFIRMED โ€” 307 Temporary Redirect (should be 301)
INFRA-002Direct EC2 IP Responds on Port 80CONFIRMED โ€” curl http://52.9.246.155/ returns HTTP 404 (server responding)
INFRA-006AWS EC2 Hostname Leaked via Reverse DNSCONFIRMED โ€” ec2-52-9-246-155.us-west-1.compute.amazonaws.com
SOURCE-001Google Maps API Key in Public HTMLCONFIRMED โ€” AIzaSyDbHiYtx66hN9rq4yTwI0QKUfbJFaEHrh4 in page source
SOURCE-002jQuery 3.5.1 in ProductionCONFIRMED โ€” jquery-3.5.1 found in page source
SOURCE-004jsPDF Debug Build in ProductionCONFIRMED โ€” jspdf reference found in page source
SOURCE-006Aid Token Accepts Tampered InputCONFIRMED โ€” SearchHotel?Aid=AAAAAAAA returns HTTP 200

2.2 Findings Not Independently Verifiable (External Position)

Finding IDTitleReason
THREAT-001/003/009.NET CVE Patch StatusRequires server-side dotnet --version; runtime version not disclosed in HTTP headers
COMPLIANCE-023HotJar Session RecordingLikely injected via GTM at browser runtime; not visible in raw HTTP response body
RECON-007Facebook PixelSame as above; GTM dynamic injection
RECON-008Stripe Live Publishable KeyNot present on /Home/Start; likely on authenticated booking/payment pages
RECON-004Stack Traces in 500 ErrorsRequires probing specific API endpoints to trigger errors; deferred pending authorization
COMPLIANCE-002RC4/3DES Cipher PresenceLocal OpenSSL 3.5 has removed RC4/3DES cipher suites and cannot attempt handshake; requires testssl.sh or SSL Labs
THREAT-011Dark Web Breach StatusRequires threat intelligence platform access

2.3 Validation Conclusion

The original report is accurate. A 100% confirmation rate across all testable findings indicates rigorous methodology and reliable evidence collection. The original report's risk score of 60/100 (HIGH RISK) is justified by independently verified evidence.


3. New Findings: High

SUPP-001: No DKIM Records โ€” Complete Email Authentication Absence

FieldValue
Finding IDSUPP-001
SeverityHIGH
CategoryEmail Security / DNS
RegulationsRFC 6376 (DKIM), PCI DSS Req 6.1, FTC Act ยง5

Description: The original report identified the absence of SPF and DMARC records (RECON-011). Validation testing reveals the problem is more comprehensive: no DKIM records exist for any common selector. DKIM (DomainKeys Identified Mail) provides cryptographic signing of outbound email, allowing receiving servers to verify that messages were authorized by the domain owner and were not tampered with in transit.

The combination of no SPF, no DKIM, and no DMARC means travelpro365.com has zero email authentication infrastructure. This is the worst possible email security posture. Any actor on the internet can send fully authenticated-looking email as @travelpro365.com with no technical mechanism for any receiving mail server to detect the forgery.

Evidence:

$ nslookup -type=TXT default._domainkey.travelpro365.com

โ†’ Non-existent domain

$ nslookup -type=TXT google._domainkey.travelpro365.com

โ†’ Non-existent domain

$ nslookup -type=TXT selector1._domainkey.travelpro365.com

โ†’ Non-existent domain

Combined with RECON-011:

  • SPF: Absent
  • DMARC: Absent (NXDOMAIN)
  • DKIM: Absent (all common selectors)

Result: Zero email authentication. Domain is fully spoofable.

Impact: This escalates the severity of RECON-011. Without DKIM, even after SPF and DMARC are deployed, email authentication will be incomplete. Attackers spoofing @travelpro365.com for phishing campaigns (fake booking confirmations, invoice fraud, credential theft) will pass through receiving mail servers with no authentication signal whatsoever. In the travel booking context, consumers expect email from this domain containing itineraries, receipts, and payment confirmations โ€” exactly the content attackers impersonate.

Remediation:

Effort: Low | Priority: P1 | Timeline: 48 hours (coordinate with SPF/DMARC deployment from RECON-011)


SUPP-002: No Subresource Integrity (SRI) on Any External Script

FieldValue
Finding IDSUPP-002
SeverityHIGH
CategorySupply Chain Security / Script Integrity
RegulationsPCI DSS v4.0 Req 6.4.3, OWASP A08:2021 (Software and Data Integrity Failures)

Description: The application loads at least 8 external scripts from third-party CDNs and services. None of them include a integrity attribute (Subresource Integrity). SRI allows the browser to verify that a fetched resource has not been tampered with by comparing it against a known cryptographic hash. Without SRI, if any CDN or third-party service is compromised, an attacker can inject malicious JavaScript that executes in the context of travelpro365.com with full access to the DOM, cookies, form data, and payment information.

Evidence:

<!-- All external scripts loaded WITHOUT integrity attributes: -->

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDbHiYtx66hN9rq4yTwI0QKUfbJFaEHrh4&sensor=false">

<!-- No integrity attribute -->

<script async src="https://www.googletagmanager.com/gtag/js?id=G-11JD4E7CYJ">

<!-- No integrity attribute -->

<script async src="https://www.googletagmanager.com/gtag/js?id=AW-11251445842">

<!-- No integrity attribute -->

<script async src="https://www.googletagmanager.com/gtag/js?id=AW-11257308628">

<!-- No integrity attribute -->

<script src="https://www.google.com/recaptcha/api.js?hl=" defer>

<!-- No integrity attribute -->

<link href="https://fonts.googleapis.com/css2?family=Lora&family=Montserrat:wght@300;700&display=swap" rel="stylesheet">

<!-- No integrity attribute -->

Total external resources without SRI: 8+

Total external resources with SRI: 0

Impact: This is a direct supply chain attack vector. The Magecart group has compromised CDN-hosted scripts to inject payment skimmers on thousands of e-commerce sites. British Airways' ยฃ20M GDPR fine originated from a Magecart-style supply chain compromise. Without SRI, a single compromised CDN endpoint can silently inject a payment skimmer into every page load. Combined with the absence of a Content-Security-Policy (HEADERS-002), there is no defense-in-depth against script injection from compromised third parties.

PCI DSS v4.0 Requirement 6.4.3, mandatory since March 31, 2025, requires that all scripts loaded on payment pages are authorized, inventoried, and integrity-verified. Zero SRI on any resource is a direct violation.

Remediation:

Effort: Medium | Priority: P1 | Timeline: 2โ€“3 weeks (coordinate with CSP implementation from HEADERS-002)


SUPP-003: HTTP Method Allowlisting Not Implemented โ€” DELETE Returns 200 OK

FieldValue
Finding IDSUPP-003
SeverityHIGH
CategoryHTTP Verb Tampering / Access Control
RegulationsOWASP A01:2021 (Broken Access Control), PCI DSS v4.0 Req 6.2.4

Description: The application accepts HTTP DELETE requests to standard page endpoints and returns HTTP 200 OK with the full page content (52,524 bytes). PUT requests return 411 Length Required rather than 405 Method Not Allowed. The TRACE method was previously confirmed as accepted (original report, INFRA-010). This pattern indicates that no HTTP method filtering or allowlisting is implemented at any layer โ€” neither in Kestrel, nor in IIS, nor in any middleware.

A properly configured web application should return 405 Method Not Allowed for any HTTP method that is not explicitly required by the endpoint. Accepting arbitrary methods is a defense posture gap that enables HTTP verb tampering attacks, method-based authentication bypasses, and increases the attack surface for any future vulnerabilities that are method-sensitive.

Evidence:

$ curl -s -X DELETE https://travelpro365.com/Home/Start -o /dev/null -w "%{http_code} %{size_download}"

โ†’ 200 52524

$ curl -sI -X PUT https://travelpro365.com/Home/Start

โ†’ HTTP/1.1 411 Length Required

$ curl -sI -X TRACE https://travelpro365.com/Home/Start

โ†’ HTTP/1.1 200 OK (confirmed in original report)

Expected response for all three: 405 Method Not Allowed

Remediation:

Effort: Low | Priority: P1 | Timeline: 1 week


4. New Findings: Medium

SUPP-004: Host Header Injection Routes to Different Server Component

FieldValue
Finding IDSUPP-004
SeverityMEDIUM
CategoryInfrastructure Misconfiguration / Information Disclosure
RegulationsOWASP A05:2021 (Security Misconfiguration)

Description: Sending an HTTPS request to travelpro365.com with a spoofed Host: evil.com header returns a response from Microsoft-HTTPAPI/2.0 instead of the expected Kestrel server. This reveals that the underlying Windows HTTP.sys kernel driver is the first listener on port 443, and it routes requests to Kestrel only when the Host header matches a known binding. Unrecognized host headers fall through to HTTP.sys directly.

This has two implications:

Evidence:

$ curl -sI https://travelpro365.com -H "Host: evil.com"

HTTP/1.1 404 Not Found

Content-Length: 315

Content-Type: text/html; charset=us-ascii

Server: Microsoft-HTTPAPI/2.0

Date: Sun, 15 Mar 2026 23:41:23 GMT

Connection: close

Compare with normal request:

$ curl -sI https://travelpro365.com

Server: Kestrel

Remediation:

Effort: Low | Priority: P2 | Timeline: 1โ€“2 weeks


SUPP-005: Google Ads Conversion Tracking IDs Exposed โ€” Dual Account Configuration

FieldValue
Finding IDSUPP-005
SeverityMEDIUM
CategoryInformation Disclosure / Advertising Account Enumeration
RegulationsPrivacy best practice

Description: The page source reveals two separate Google Ads conversion tracking IDs loaded simultaneously: AW-11251445842 and AW-11257308628. These are distinct Google Ads accounts. The presence of two separate Ads accounts on a single domain is atypical and may indicate: (a) an agency managing ads alongside the client's own account, (b) a migration that was not cleaned up, or (c) unauthorized pixel placement. Regardless of the reason, both account IDs are publicly exposed and can be used to identify the Google Ads accounts associated with this business, enumerate advertising activity, and in some configurations, trigger fraudulent conversion events.

Evidence:

<script async src="https://www.googletagmanager.com/gtag/js?id=AW-11251445842">

<script async src="https://www.googletagmanager.com/gtag/js?id=AW-11257308628">

Remediation:

Effort: Low | Priority: P2 | Timeline: 1 week


5. New Findings: Low / Informational

SUPP-006: No robots.txt โ€” Search Engine Crawl Uncontrolled

FieldValue
Finding IDSUPP-006
SeverityLOW
CategoryInformation Disclosure / SEO Security

Description: robots.txt returns HTTP 404. Without a robots.txt file, search engine crawlers will index every publicly accessible URL on the domain with no restrictions. This means API endpoints, booking flow URLs, error pages, and any other accessible path may appear in search engine results. While robots.txt is not a security control (it is advisory, not enforced), it is a standard mechanism for preventing search engines from indexing sensitive paths that should not appear in public search results.

Evidence:

$ curl -s https://travelpro365.com/robots.txt -w "%{http_code}"

โ†’ 404

Remediation:

Effort: Low | Priority: P3 | Timeline: 1 week


SUPP-007: No sitemap.xml

FieldValue
Finding IDSUPP-007
SeverityINFO
CategorySEO / Web Standards

Description: sitemap.xml returns HTTP 404. A sitemap is not a security finding but its absence, combined with the absence of robots.txt, means there is no structured communication with search engines about which pages should or should not be indexed.

Evidence:

$ curl -s https://travelpro365.com/sitemap.xml -w "%{http_code}"

โ†’ 404


SUPP-008: Sensitive File Paths Return Consistent 404

FieldValue
Finding IDSUPP-008
SeverityINFO โœ“ (Positive)
CategoryConfiguration File Exposure

Description: Common sensitive file paths were tested and all return HTTP 404, confirming that sensitive configuration files are not publicly accessible. This is a positive control and is credited accordingly.

Evidence:

$ curl -s -o /dev/null -w "%{http_code}" https://travelpro365.com/.env โ†’ 404

$ curl -s -o /dev/null -w "%{http_code}" https://travelpro365.com/.git/config โ†’ 404

$ curl -s -o /dev/null -w "%{http_code}" https://travelpro365.com/web.config โ†’ 404

$ curl -s -o /dev/null -w "%{http_code}" https://travelpro365.com/appsettings.json โ†’ 404


6. Findings Requiring Further Investigation

The following items were identified during validation but require additional testing beyond passive reconnaissance to confirm or dismiss. These are recommended as Phase 2 targets.

SUPP-INV-001: Open Redirect via ReturnUrl Parameter

FieldValue
SeverityREQUIRES INVESTIGATION
CategoryOWASP A01:2021 (Broken Access Control)

Description: The /Home/Login endpoint accepts a ReturnUrl query parameter. Initial testing shows the parameter is processed (the login page renders normally with the parameter present), but it was not possible to confirm whether an external URL (e.g., ReturnUrl=https://evil.com) would result in a redirect after successful authentication without completing an authenticated login flow.

Open redirects on login pages are a common phishing enabler: an attacker sends a victim a link to the legitimate login page with a malicious ReturnUrl, and after the victim authenticates, they are redirected to an attacker-controlled site that mimics the real application.

Evidence:

$ curl -sI "https://travelpro365.com/Home/Login?ReturnUrl=https://evil.com"

โ†’ HTTP/1.1 200 OK (login page renders; redirect behavior after auth unknown)

Recommended Phase 2 Test: Authenticate with a test account and observe whether ReturnUrl=https://evil.com results in an external redirect. ASP.NET Core's default LocalRedirect helper prevents this, but custom redirect logic may not.


SUPP-INV-002: Login Rate Limiting and Credential Stuffing Resistance

FieldValue
SeverityREQUIRES INVESTIGATION
CategoryOWASP A07:2021 (Identification and Authentication Failures)

Description: The original report confirmed reCAPTCHA v2 on the login page (positive control). However, reCAPTCHA alone is not sufficient to prevent credential stuffing. reCAPTCHA v2 has known bypass services (2Captcha, Anti-Captcha) that solve challenges programmatically for $2โ€“3 per 1,000 solves. Server-side rate limiting (account lockout after N failed attempts, IP-based throttling, progressive delays) was not tested and is not observable from a passive position.

Recommended Phase 2 Test: Attempt multiple failed logins with invalid credentials and observe whether the server implements account lockout, IP throttling, or progressive CAPTCHA escalation.


SUPP-INV-003: Full TLS Cipher Suite Enumeration

FieldValue
SeverityREQUIRES INVESTIGATION
CategoryPCI DSS v4.0.1 Req 4.2.1

Description: The original report noted that RC4 and 3DES cipher presence could not be confirmed or ruled out (COMPLIANCE-002). Validation testing was also unable to complete this check because the local OpenSSL 3.5 build has removed legacy cipher suites entirely and cannot attempt handshakes with RC4 or 3DES.

Recommended Test: Run testssl.sh --cipher-per-proto travelpro365.com or submit the domain to SSL Labs for a complete cipher suite analysis. This is a free, passive, non-intrusive test that should have been included in the original assessment.


7. Urgent Time-Sensitive Update

TLS-002 UPDATE: mvt.travelpro365.com Certificate Expires TOMORROW

The original report (March 4, 2026) documented that the mvt.travelpro365.com certificate expires on March 16, 2026 โ€” noted as 12 days from audit date.

As of this validation (March 15, 2026), the certificate expires in less than 24 hours.

$ openssl s_client -connect mvt.travelpro365.com:443 | openssl x509 -noout -dates

notBefore=Dec 16 00:00:00 2025 GMT

notAfter=Mar 16 23:59:59 2026 GMT

If this certificate is not renewed before end of day March 16, 2026, mvt.travelpro365.com will experience the same complete HTTPS failure currently affecting brownell.travelpro365.com. The Microsoft-HTTPAPI/2.0 server on this subdomain already has no HSTS, meaning users may silently fall back to unencrypted HTTP.

Action required: Renew this certificate immediately. This is a same-day P0 item.


8. Updated Risk Assessment

8.1 Supplemental Findings Summary

SeverityNew FindingsFinding IDs
HIGH3SUPP-001 (No DKIM), SUPP-002 (No SRI), SUPP-003 (No HTTP method filtering)
MEDIUM2SUPP-004 (Host header injection), SUPP-005 (Dual Ads accounts)
LOW1SUPP-006 (No robots.txt)
INFO โœ“1SUPP-008 (Sensitive files not exposed โ€” positive control)
INVESTIGATE3SUPP-INV-001 (Open redirect), SUPP-INV-002 (Rate limiting), SUPP-INV-003 (Cipher suites)

8.2 Updated Risk Score

CategoryOriginalSupplementalUpdated
Critical findings (14 ร— 10)50 (capped)โ€”50
High findings (22 + 3 = 25 ร— 3)25 (capped)+3 findings25 (cap unchanged)
Medium findings (15 + 2 = 17 ร— 1)15+217
Positive controls (6 + 1 = 7 ร— 5)โˆ’30+1 (SUPP-008)โˆ’35
TOTAL6057 / 100

Risk Tier: HIGH RISK (unchanged)

The addition of 3 high findings is offset by the additional positive control (sensitive file non-exposure). The composite score decreases slightly to 57 but remains firmly in the HIGH tier. The practical risk posture is unchanged: 14 critical findings, now 25 high findings, with no WAF, open RDP, unpatched RCE vulnerabilities, and zero privacy infrastructure.

8.3 Updated Remediation Additions

Finding IDTitleSeverityEffortPriorityTimeline
SUPP-001Deploy DKIM records (all mail services)HIGHLowP148 hours
SUPP-002Add SRI to all external scripts; inventory per PCI 6.4.3HIGHMediumP12โ€“3 weeks
SUPP-003Implement HTTP method allowlisting middlewareHIGHLowP11 week
SUPP-004Reject unrecognized Host headers at HTTP.sysMEDIUMLowP21โ€“2 weeks
SUPP-005Audit dual Google Ads accounts; remove if unauthorizedMEDIUMLowP21 week
SUPP-006Create robots.txt with sensitive path exclusionsLOWLowP31 week

9. Evidence Reference Index

Evidence ItemMethodResultDate
RDP port 3389 statusPowerShell Test-NetConnectionTcpTestSucceeded = True2026-03-15
DKIM: default selectornslookup -type=TXT default._domainkey.travelpro365.comNon-existent domain2026-03-15
DKIM: google selectornslookup -type=TXT google._domainkey.travelpro365.comNon-existent domain2026-03-15
DKIM: selector1nslookup -type=TXT selector1._domainkey.travelpro365.comNon-existent domain2026-03-15
CAA recordsGoogle DNS API (dns.google/resolve?type=CAA)No CAA records (SOA only)2026-03-15
External scripts SRIcurl + grep for integrity attribute0 of 8+ scripts have SRI2026-03-15
HTTP DELETE methodcurl -X DELETE /Home/Start200 OK, 52524 bytes2026-03-15
HTTP PUT methodcurl -X PUT /Home/Start411 Length Required (not 405)2026-03-15
Host header injectioncurl -H "Host: evil.com"Microsoft-HTTPAPI/2.0 response2026-03-15
Google Ads account IDsPage source analysisAW-11251445842, AW-112573086282026-03-15
robots.txtcurl /robots.txt404 Not Found2026-03-15
sitemap.xmlcurl /sitemap.xml404 Not Found2026-03-15
.env exposurecurl /.env404 Not Found (positive)2026-03-15
.git/config exposurecurl /.git/config404 Not Found (positive)2026-03-15
web.config exposurecurl /web.config404 Not Found (positive)2026-03-15
appsettings.json exposurecurl /appsettings.json404 Not Found (positive)2026-03-15
mvt certificate expiryopenssl x509 -noout -datesnotAfter=Mar 16 23:59:59 2026 GMT2026-03-15
ReturnUrl parametercurl /Home/Login?ReturnUrl=https://evil.com200 OK (login page renders)2026-03-15

End of Supplemental Report


Classification: CONFIDENTIAL

Prepared by: CIPHER Security Platform (Independent Validation)

Validation Date: March 15, 2026

Original Report: CIPHER Phase 1 Final (March 4, 2026)

Version: Supplemental 1.0

โ† Client Portal