Skip to content

Feat/webshell bridge#88

Open
wuchulonly wants to merge 19 commits intochainreactors:devfrom
wuchulonly:feat/webshell-bridge
Open

Feat/webshell bridge#88
wuchulonly wants to merge 19 commits intochainreactors:devfrom
wuchulonly:feat/webshell-bridge

Conversation

@wuchulonly
Copy link
Contributor

No description provided.

wuchulonly and others added 19 commits March 22, 2026 17:10
…nnel

Remove suo5 TCP tunnel (transport.go) and rewrite Channel to communicate
with the bridge DLL through HTTP POST requests with X-Stage headers.
The webshell now calls DLL exports directly via function pointers — no
TCP port opened on the target. Introduce ChannelIface for testability.
…load

- Replace fixed-interval polling with adaptive long-poll (idle/active)
- Add HMAC-SHA256 time-based token rotation for secrets >32 chars
- Add jitter to poll intervals to avoid request synchronization
- Add --dll flag for automatic DLL delivery via X-Stage: load
- Accept tcp/empty pipeline types alongside webshell
CLI tool for listing, registering, starting and stopping webshell
pipelines directly via the admin RPC, useful for development and
debugging without the full client TUI.
- Add dependency jar delivery (e.g., jna.jar) before DLL loading for JSP targets
- Add response streaming support with length-prefixed frames and fallback
- Replace suo5:// URL scheme with direct HTTP(S) URL
- Add structured JSON status response alongside legacy text format
- Expand test coverage for new channel features
The webshell bridge functionality is being moved into the listener
process as WebShellPipeline, eliminating the need for a separate binary.
Add RawCustomParams field to PipelineParams so that non-built-in
pipeline types (e.g. webshell) retain their original JSON params
when serialized to/from the database.
Implement WebShellPipeline inside the listener process, replacing the
standalone bridge binary. Uses suo5 for full-duplex streaming, supports
DLL bootstrap via HTTP staging, TLV framing, and dependency delivery.
Replace bridge-binary-oriented client commands with suo5-backed params.
Add --suo5, --token, --dll, --deps flags; store params as JSON in
CustomPipeline.Params; remove resolveWebShellListenerHost and bridge hints.
Reflect the move from standalone bridge binary to WebShellPipeline
running inside the listener process with suo5 data channel and TLV framing.
… simplify bootstrap

- Replace custom writeFrame/readFrame with MaleficParser.WritePacket/ReadPacket,
  gaining built-in compression and optional Age encryption
- Replace body envelope bootstrap protocol with simple HTTP query string (?s=stage)
- Remove token/HMAC authentication (delegate to suo5 transport)
- Extract PipelineRuntimeErrorHandler to core, deduplicate across all 5 pipelines
  (tcp, http, bind, rem, webshell)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants