Suo5 Documentation

repository·main·Indexed 25 days ago

https://github.com/zema1/suo5

A high-performance HTTP forward proxy tool for stable communication in restricted or 'no-internet' network environments. Suo5 supports multiple transmission modes (auto, full, half, and classic) to bypass middleware and proxy restrictions. It provides implementations for .NET (Framework >= 2.0), Java (6+), PHP (5.6+), and Node.js (18+), including capabilities for memory shell deployment and SOCKS5 proxying via CLI and GUI clients.

Tokens
4.8K
Snippets
10
Records
39
Agent score
84%

What's inside Suo5

  1. Quickstart: Install and Connect Suo5

    main

    Suo5 is a high-performance HTTP forward proxy tool designed for stable proxying in restricted network environments. Follow these steps to get started:

    1. Download the Client: Visit the Releases page and download the binary for your platform:

      • suo5-gui-*: Graphical interface (recommended for most users).
      • suo5-cli-*: Command-line version (for servers or CLI enthusiasts).
      • Supported platforms: Windows, macOS (Intel/Apple Silicon), and Linux.
    2. Deploy the Server: Upload the corresponding server files from the assets/ directory to your target server and ensure they are executable.

    3. Connect to the Server: Use the -t flag to specify the remote server URL. By default, Suo5 uses auto mode to automatically detect the best communication mode.

    Once connected, Suo5 starts a SOCKS5 proxy on 127.0.0.1:1111. You can route traffic through it using curl or tools like Proxifier.

  2. Implement Suo5 as a Memory Shell (In-Memory Webshell)

    main

    You can convert Suo5 into a memory shell by following the pattern used in the SharpMemshell project. The file Suo5VirtualPath.cs in the current directory serves as a reference implementation.

    Critical Step: Before compiling, you must modify line 242 of Suo5VirtualPath.cs. Change if (false) to your own trigger logic (e.g., checking for a specific User-Agent). If you do not change this, the processing logic will never be triggered.

  3. Run Suo5 Node.js Standalone

    main

    To run the Suo5 Node.js standalone version, ensure you have Node.js 18 or higher installed. The suo5.js script has no third-party npm dependencies and can be executed directly. By default, it listens on port 8080 and supports full-duplex, half-duplex, and short-connection modes with automatic detection.

    node suo5.js
  4. Advanced Usage: Load Balancing, Domain Filtering, and Port Forwarding

    main

    Load Balancing

    If the target uses a load balancer, deploy the server on all backends and use the -r flag to specify a redirect URL. Suo5 will check if the IP of the redirect URL matches the server's network interface; if not, it forwards the request.

    ./suo5 -t https://target.com/suo5.jsp -r http://172.0.3.2/suo5.jsp

    Domain Filtering

    To prevent specific domains from being proxied:

    • Directly: Use -E <domain>
    • Via File: Use -ef <file_path> (one domain per line)

    Note: Use socks5h:// in your client (e.g., curl) to ensure DNS resolution happens on the proxy side.

    ./suo5 -t https://target.com/suo5.jsp -E example.com -E google.com
    curl -x socks5h://127.0.0.1:1111 https://example.com

    Port Forwarding

    To forward a specific TCP port (instead of using SOCKS5 mode):

    # Forward local 1111 to remote internal MySQL
    ./suo5 -t https://target.com/suo5.jsp -f 172.16.0.10:3306
  5. Environment Requirements for .Net Suo5

    main

    To use the .Net version of Suo5, ensure the target environment meets the following requirements:

    • Dependency: .Net Framework >= 2.0
    • Middleware Support: IIS (6+) supports Automatic Detection, Half-duplex, and Short-connection modes. It does not support Full-duplex mode.
  6. Compile and Deploy Suo5 Memory Shell

    main

    Follow these steps to compile the Suo5VirtualPath.cs implementation, convert it to Base64, and deploy it via an installer file.

    1. Compile to DLL: Use the .NET C# compiler (csc.exe).
    2. Convert to Base64: Use PowerShell to generate a Base64 string of the DLL.
    3. Prepare Installer: Replace the %%base64%% placeholder in your install.aspx template with the generated Base64 string.
    4. Deploy: Upload the modified install.aspx to the target server and access it via a browser to install the memory shell. Once installed, any subsequent access to .aspx files in that directory will trigger the memory shell logic.
  7. Use Next.js Memory Shell (CVE-2025-55182/CVE-2025-66478)

    main

    For targets vulnerable to CVE-2025-55182 or CVE-2025-66478, use the next_payload.http request. You must modify the Host header and the request path within the payload before sending it. Upon successful execution, a /test route will be mounted onto the target's existing Node.js HTTP Server. Connect the client to this new route.

    ./suo5 -t http://target:3000/test
  8. Use Suo5 with Java Middleware

    main

    Suo5 supports various Java middleware implementations that follow the Java Servlet specification. For generating memory shells and performing injections, it is recommended to use the MemshellParty project.

    Environment Requirements:

    • Java 6 or higher.

    Supported Middleware Compatibility:

    The following middleware versions have been verified via CI testing to support automatic detection, full-duplex, half-duplex, and short-connection modes:

  9. Configure SOCKS5 authentication for the local proxy

    main

    Use the --auth parameter to set authentication for the local SOCKS5 proxy. The format must be username:password. This is used to prevent unauthorized local access to the proxy and is independent of the server-side configuration.

    To use the authenticated proxy with curl, include the credentials in the proxy URL: socks5h://username:password@127.0.0.1:1111.

  10. Avoid Service Blocking in PHP-FPM Environments

    main

    When using Suo5 with PHP services running via FastCGI (e.g., Nginx + PHP-FPM or Apache + mod_fcgid), each Suo5 connection occupies one Worker process and holds it until the connection is closed.

    Warning: If the number of Suo5 connections exceeds the available PHP-FPM workers, the target server will become unresponsive and block all other requests (including normal web traffic) until connections time out.

    Before deployment, ensure the target's worker count is sufficient for your expected Suo5 connection load.