Token导航 LogoToken导航TokenDH.com
Sark (Ctrl Alt Fu) logo
安全风控stdio官方级别未说明来源级核验

Sark (Ctrl Alt Fu)

MCP Server

轻量级、符合规范的MCP服务器,通过可流式传输的HTTP MCP端点暴露常见的Kali工具,以便LM Studio(或其他支持MCP的客户端)可以编程方式调用它们。

工具数

10

提示词数

0

GitHub Stars

0

资源数

0
安全Python命令行工具渗透测试

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

CtrlAltFu

提供方

CtrlAltFu

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install fastmcp

详细介绍

sark--Kali Tools MCP服务器

轻量级、符合规范的MCP服务器,在一个 流式HTTP MCP 端点,以便LM Studio(或其他支持MCP的客户端)可以以编程方式调用它们。

设计危险。 此服务器执行系统二进制文件。阅读 安全 跑步前要小心。

______________________________________________________________________

此存储库包含什么

sark.py --单文件Python MCP服务器,封装了常见的Kali工具(nmap、gobuster、dirb、nikto、sqlmap、hydra、john、wpscan、enum4linux)和通用工具 exec_cmd 工具。使用 fastmcp 通过MCP HTTP端点公开这些功能。

______________________________________________________________________

需求

  • Python 3.10+(用现代3.x测试)
  • fastmcp Python包:
pip install fastmcp
  • 您打算运行的Kali工具必须安装在您的 PATH (例如。, nmap, gobuster, nikto, sqlmap, hydra, john, wpscan, enum4linux).

______________________________________________________________________

快速启动

  1. 安装要求(pip、所需工具):
# default Kali pip repository doesn't include fastmcp
python -m venv .venv
.venv/bin/pip3 install fastmcp
# install system packages as required (nmap, gobuster, ...), e.g. apt on Debian/Ubuntu:
# sudo apt install nmap gobuster nikto sqlmap hydra john wpscan enum4linux
  1. 运行服务器(默认绑定到localhost):
.venv/bin/python sark.py HOST=127.0.0.1 PORT=8765

您应该看到:

[kali-mcp] serving on 127.0.0.1:8765 at /mcp
[kali-mcp] WARNING: no allowlist set (all commands permitted)

______________________________________________________________________

环境变量

  • HOST --要绑定的接口(默认 127.0.0.1). 更喜欢 127.0.0.1 除非你了解网络风险。
  • PORT --要侦听的端口(默认 8765).
  • ALLOWED_COMMAND_PREFIXES --逗号分隔的前缀用于限制允许的命令(例如: nmap,gobuster,nikto).设置后,只允许文本以其中一个前缀开头的命令。

allowlist示例:

ALLOWED_COMMAND_PREFIXES="nmap,gobuster,nikto" HOST=127.0.0.1 python3 sark.py
# prints: [kali-mcp] allowed commands: nmap, gobuster, nikto
如果 ALLOWED_COMMAND_PREFIXES 未设置,服务器将允许任何命令-- 高度不安全.

______________________________________________________________________

LM Studio集成

添加(或编辑) mcp.json LM Studio中指向此服务的条目:

{
  "kali-tools": {
    "url": "http://127.0.0.1:8765/mcp",
    "timeout": 120000
  }
}

然后,LM Studio将能够调用以下公开的MCP工具 sark.py.

______________________________________________________________________

外露工具(API)

所有工具都装饰有 @mcp.tool() 并通过MCP暴露。函数签名(Python)和简短描述:

  • exec_cmd(cmd: str, shell: bool=False) -> str\

运行任意shell命令。使用时要格外小心。

  • nmap_scan(target: str, scan_type: str="-sV", ports: str="", additional_args: str="-T4 -Pn") -> str\

nmap.

  • gobuster(url: str, mode: str="dir", wordlist: str="/usr/share/wordlists/dirb/common.txt", additional_args: str="") -> str\

gobuster.

  • dirb(url: str, wordlist: str="/usr/share/wordlists/dirb/common.txt", additional_args: str="") -> str\

dirb.

  • nikto(target: str, additional_args: str="") -> str\

nikto.

  • sqlmap(url: str, data: str="", additional_args: str="") -> str\

sqlmap (批处理模式)。

  • hydra(target: str, service: str, username: str="", username_file: str="", password: str="", password_file: str="", additional_args: str="") -> str\

hydra 为了蛮力。

  • john(hash_file: str, wordlist: str="/usr/share/wordlists/rockyou.txt", format: str="", additional_args: str="") -> str\

john (开膛手约翰)。

  • wpscan(url: str, additional_args: str="") -> str\

wpscan.

  • enum4linux(target: str, additional_args: str="-a") -> str\

enum4linux.

每个工具都以字符串形式返回组合的STDOUT/STDERR和返回代码(或错误消息)。

______________________________________________________________________

例子

运行服务器(只允许nmap和gobuster):

ALLOWED_COMMAND_PREFIXES="nmap,gobuster" HOST=127.0.0.1 PORT=8765 python3 sark.py

从MCP客户端(LM Studio将为您处理此问题)--示例概念 curl 用法仅供演示(LM Studio使用MCP;原始HTTP调用可能并不等同于正确的MCP客户端):

# This is illustrative — LM Studio does the MCP protocol work for you.
curl -X POST http://127.0.0.1:8765/mcp \
  -H "Content-Type: application/json" \
  -d '{ "method": "nmap_scan", "params": ["127.0.0.1", "-sV", "", "-T4 -Pn"] }'
使用LM Studio的内置MCP客户端,而不是制作原始HTTP调用,除非您知道客户端所期望的MCP帧。

______________________________________________________________________

实现注意事项

  • 服务器使用 subprocess.run() 执行命令。当 shell=True 被使用 exec_cmd 包装, /bin/bash 被用作外壳。
  • 命令通过以下方式进行标记 shlex.split() 除非 shell=True.
  • allowlist检查是一种简单的前缀检查(cmd.strip().startswith(prefix));如果您需要更精细的控制,请根据您的需求进行调整。
  • 输出以纯文本形式返回:stdout、可选stderr和 [rc=]错误/超时以人类可读的字符串形式返回。

______________________________________________________________________

安全与加固(请仔细阅读)

此服务器 执行任意系统命令。如果配置错误或暴露,可能会导致整个系统受损。

建议:

  • 绑定到 127.0.0.1 并对端口设置防火墙 将此服务暴露给不受信任的网络。
  • 使用 ALLOWED_COMMAND_PREFIXES 以限制允许使用哪些命令前缀。例子: ALLOWED_COMMAND_PREFIXES="nmap,gobuster,nikto".
  • 以非特权用户身份运行(从不 root).
  • 考虑其他沙盒:容器、chroot、seccomp、AppArmor或类似的。
  • 尽量减少攻击面:只安装所需的工具,保持适当的系统更新。
  • 如果暴露给多个客户端,请考虑日志记录、审计跟踪和速率限制。
  • 如果您需要远程访问,请使用经过身份验证的加密隧道(SSH端口转发,VPN)——不要绑定到 0.0.0.0 公开。

______________________________________________________________________

服务(systemd)示例

示例systemd单元(运行方式 kaliuser,调整路径):

[Unit]
Description=Kali MCP Server (sark)
After=network.target

[Service]
User=kaliuser
WorkingDirectory=/opt/kali-mcp
Environment=HOST=127.0.0.1
Environment=PORT=8765
Environment=ALLOWED_COMMAND_PREFIXES=nmap,gobuster,nikto
ExecStart=/usr/bin/python3 /opt/kali-mcp/sark.py
Restart=on-failure
LimitNOFILE=4096

[Install]
WantedBy=multi-user.target

______________________________________________________________________

故障排除

  • 如果工具返回 command not found 错误:确保运行进程的用户已安装二进制文件并在PATH上。
  • 如果命令挂起: _run() 助手强制执行默认超时(300秒)。您可以调整使用情况或修改服务器。
  • 如果LM Studio无法连接:请验证HOST/PORT和LM Studio mcp.json URL匹配 `http://:

/mcp`.

______________________________________________________________________

延伸

  • 添加新项 @mcp.tool() 用于包装其他二进制文件的函数。
  • 改进满列表检查(例如,将完整命令模板列入白名单或验证参数)。
  • 如果暴露在本地主机之外,请添加身份验证/授权。
  • 添加结构化JSON响应(当前返回纯文本字符串)。

______________________________________________________________________

许可与免责声明

为方便起见,此代码按原样提供。使用风险自负。作者不对运行此软件造成的误用或损坏负责。使用前仔细评估安全影响。

______________________________________________________________________

目录标签

目录标签

安全Python命令行工具渗透测试Kali工具本地部署MCP服务器网络安全

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

10

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP