Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
t3code-websocket-ticket-origin — T3 Code 61c3794c origin leftover. wsTicket upgrade ignores Origin. Cookie missing Origin is accepted. Cookie hostile Origin is rejected. Loopback lab. | Kitploit
Tools/GitHubGitHub/abraxas/t3code-websocket-ticket-origin
Vulnerability AnalysisWeb Application ExploitationWeb SecurityPenetration TestingAuthenticationLabs & Practice
GitHubabraxas/t3code-websocket-ticket-origin

t3code-websocket-ticket-origin

T3 Code 61c3794c origin leftover. wsTicket upgrade ignores Origin. Cookie missing Origin is accepted. Cookie hostile Origin is rejected. Loopback lab.

View Repository
1 day agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Abraxas Labs - t3code-websocket-ticket-origin

t3code-websocket-ticket-origin

A socket ticket in the URL does not care which website asked for it. Cookie sessions with a hostile Origin are rejected. Cookie sessions with no Origin header are accepted. Bearer tokens ignore Origin on purpose. The session cookie is SameSite=Lax, which is what currently stops a cross-site cookie WebSocket.

Class: Origin leftover Reach: Local / ticket holder (hostile Origin on wsTicket; missing Origin on cookies)

T3 Code 61c3794c - Ping

IDno CVE yet
ClassOrigin leftover
ReachLocal (ticket in the upgrade URL, or a cookie client that omits Origin)
CWECWE-346 / CWE-200
CVSSLow: 3.1 CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N
ProductT3 Code
Affected61c3794c32b0eeebfac09add43e403618c65d2d7
Authvalid wsTicket or browser session cookie
LicenseGNU Affero GPL v3.0
Labproduction authenticateWebSocketUpgrade on the Effect test layer

What an attacker can do

Needs a live wsTicket or a cookie that the browser will attach. Lax cookies are not attached to a cross-site WebSocket handshake in current browsers. A ticket in the query string is the path that skips Origin entirely.

PrivilegeMethod / sinkRecon / integrity / availabilityLab-proven or inferred
Authenticate a /ws upgrade with a ticket and a hostile OriginauthenticateWebSocketUpgrade, wsTicket queryIntegrity (session on the socket)Lab-proven. ticket-hostile-origin=accepted, Origin https://evil.example
Authenticate a cookie upgrade with no Origincookie fallback through isBrowserOriginAllowed (origin === undefined returns true)IntegrityLab-proven. cookie-missing-origin=accepted
Authenticate a Bearer upgrade from a hostile Originsame authenticator, Authorization headerIntegrityLab-proven. bearer-hostile-origin=accepted (product test; not a cookie)
Negative control: cookie + hostile OriginOrigin http://192.168.1.50:8080n/aLab-proven. rejected ServerAuthInvalidCredentialError
Negative control: cookie + trusted Originsame-host Originn/aLab-proven. accepted

Stays closed on this leftover

AxisMethod / sinkWhy it is closed
IntegrityCookie WebSocket from a random website with an Origin headerisBrowserOriginAllowed rejects; SameSite=Lax also withholds the cookie
IntegrityUnauthenticated /wsmissing credential fails
IntegrityCross-site cookie CSRF in current browsersCookies.set sameSite: "lax" in apps/server/src/auth/http.ts

The audit line "no Origin check anywhere on the upgrade path" is too wide. Cookie hostile Origin is rejected on this pin. The leftover is the ticket path and the missing-Origin cookie branch.

How I found it

GET /ws calls authenticateWebSocketUpgrade. If wsTicket is present, the function verifies the ticket and returns before isBrowserOriginAllowed. Cookie fallback does call it. I minted a ticket and a cookie session on the EnvironmentAuth test layer and sent the Origin matrix through the production function.

Wrong turns: reporting "no Origin check" for cookie upgrades (hostile Origin is rejected).

Lab

python3 t3code-websocket-ticket-origin-Abraxas-Labs.py

or:

cd lab
./run.sh
IOC cookie-missing-origin=accepted
IOC cookie-hostile-origin=rejected
IOC cookie-trusted-origin=accepted
IOC ticket-hostile-origin=accepted
IOC bearer-hostile-origin=accepted
IOC samesite=lax
SUCCESS T3-F04-WSORIGIN t3f04o6n1

The fix

Run isBrowserOriginAllowed on the ticket path too, or bind tickets to the Origin that minted them. Treat a missing Origin as a failure for cookie credentials instead of a pass. Add an explicit Origin allowlist on the upgrade (devOrigin, t3code://app, configured tunnel hosts). Keep SameSite=Lax (or Strict).

References

  • github.com/pingdotgg/t3code 61c3794c32b0eeebfac09add43e403618c65d2d7
  • EnvironmentAuth.authenticateWebSocketUpgrade
  • CWE-346 · CWE-200

License

GNU Affero GPL v3.0. See LICENSE. Loopback lab only. No warranty.

Abraxas Labs [email protected]

Please credit CVE to Abraxas Labs.

Download Tool