n3rada/sapsxpg

GitHub: n3rada/sapsxpg

通过 RFC 连接 SAP 系统枚举 SM49/SM69 外部命令,提供交互式执行环境和 RCE PoC 自动生成能力。

Stars: 3 | Forks: 0

# 🏢 sapsxpg 简化在 SAP 服务器上使用 [`SXPG_CALL_SYSTEM`](https://help.sap.com/saphelp_scm700_ehp01/helpdata/EN/4d/947a7c2cdb6c14e10000000a15822b/content.htm?no_cache=true) 功能模块的过程,并提供日志记录。 `sapsxpg` 通过 RFC 连接到 SAP 系统,枚举在 `SM49`/`SM69` 中注册的可用外部 OS 命令,并提供一个交互式 shell 来执行它们。它还能自动检测远程操作系统,并可以生成与 [toboggan](https://github.com/n3rada/toboggan) 兼容的 RCE 概念验证脚本。 ## ⚙️ 前置条件 [`NWRFCSDK`](https://support.sap.com/en/product/connectors/nwrfcsdk.html) 是 SAP 的专有软件。下载它需要 S-User 账号和特定权限。由于 SAP 拥有其知识产权,因此不能在本仓库中发布或包含该软件。 1. 访问 [SAP Support Portal](https://support.sap.com/en/product/connectors/nwrfcsdk.html)。 2. 下载适合您操作系统的版本。 3. 按照[安装指南](https://community.sap.com/t5/technology-blog-posts-by-members/connecting-python-with-sap-step-by-step-guide/ba-p/13452893)进行操作。 如果您已经将 `nwrfcsdk` 放置在系统中的某个位置,您可以找到并导出必需的环境变量: ``` NWRFCSDK_PATH=$(find /opt /home /usr/local /srv -type d -path "*/nwrfcsdk" -print -quit 2>/dev/null | head -1) export SAPNWRFC_HOME=$NWRFCSDK_PATH export LD_LIBRARY_PATH="$NWRFCSDK_PATH/lib:" ``` ## 📦 安装 建议使用 [`uv`](https://docs.astral.sh/uv/),这是一个快速的 Python 包管理器,可以在隔离环境中安装工具。或者,使用 [`pipx`](https://pypa.github.io/pipx/) 或 `pip` 也可以。 ### 使用 [uv](https://docs.astral.sh/uv/)(推荐) [`uv tool install`](https://docs.astral.sh/uv/guides/tools/#installing-tools) 会持久化安装该工具并将其添加到您的 `PATH` 中,类似于 `pipx`: ``` uv tool install git+https://github.com/n3rada/sapsxpg.git --with pyrfc==3.3.1 ``` 安装后,可以直接使用 `sapsxpg`: ``` sapsxpg --help ``` 以后若要升级: ``` uv tool upgrade sapsxpg ``` ### 使用 pipx 或 pip ``` pipx install 'git+https://github.com/n3rada/sapsxpg.git' pipx inject sapsxpg pyrfc==3.3.1 ``` ``` pip install 'git+https://github.com/n3rada/sapsxpg.git' pip install pyrfc==3.3.1 ``` ## 🧸 用法 ``` sapsxpg [options] ``` ### ⚡ 快速入门 ``` # 直接连接(默认系统编号 00,客户端 500) sapsxpg sap-server.example.com SAPUSER 'P@ssw0rd!' # 自定义客户端和系统编号 sapsxpg sap-server.example.com SAPUSER 'P@ssw0rd!' -c 100 -s 01 # 通过 Message Server 的负载均衡连接 sapsxpg sap-server.example.com SAPUSER 'P@ssw0rd!' -m msgserver -r PRD -g PUBLIC ``` ### 🔗 连接模式 | 标志 | 描述 | |------|-------------| | `-c`, `--client` | SAP 客户端编号(默认:`500`) | | `-s`, `--sysnr` | 用于直接连接的系统编号(默认:`00`) | | `-m`, `--mshost` | 消息服务器主机名(负载均衡模式) | | `-r`, `--r3name` | SAP 系统 ID,与 `-m` 一起使用时必需 | | `-g`, `--group` | 登录组,与 `-m` 一起使用时必需 | | `-t`, `--timeout` | 连接超时时间(秒)(默认:`30`) | | `--no-trace` | 禁用 SAP RFC 跟踪日志 | | `--os` | 强制 OS 过滤:`linux`、`windows`、`unix`、`all`、`anyos` | ### 🔍 交互式 Shell 连接后,`sapsxpg` 会将您带入一个带有 Tab 补全和命令历史记录的交互式 shell。该 shell 支持: - **内置命令**:`ls`、`cat`、`ps`、`env` - **SAP 注册的命令**:在 `SM49`/`SM69` 中注册的任何命令 - **帮助**:输入 `h`、`help` 或 `?` 以列出所有可用命令 该工具会自动检测远程 OS 并相应地过滤命令。结果会在本地缓存,以加快后续会话的速度。 ## 🎯 RCE 概念验证 从任何允许执行的 SAP 命令生成兼容 [toboggan](https://github.com/n3rada/toboggan) 的 RCE 模块: ``` sapsxpg sap-server.example.com SAPUSER 'P@ssw0rd!' --rce-poc ZSH ``` 这将生成一个 `poc_sap-server.example.com_ZSH.py` 文件。将其导入 toboggan 以获取完整的半交互式 shell: ``` toboggan poc_sap-server.example.com_ZSH.py ``` ## ⚠️ 免责声明 **本工具仅供防御性安全研究、教育和经授权的渗透测试使用。** 在针对您不拥有的任何系统运行本软件之前,您必须获得**明确的书面授权**。 可接受的环境包括: - 您控制的私人实验室环境(本地虚拟机、隔离网络)。 - 获得许可的学习平台(CTF、Hack The Box、OffSec 考试场景)。 - 拥有记录在案的客户同意书的正式渗透测试或红蓝对抗演练。 滥用本项目可能会面临法律诉讼。 ## ⚖️ 法律声明 严禁在真实世界环境中未经授权使用本工具,或在未获得系统所有者明确许可的情况下针对系统使用本工具,这可能违反法律和道德标准。本工具的创建者和贡献者不对任何误用或造成的损害承担责任。 请负责任且合乎道德地使用。始终遵守法律并获得适当的授权。
标签:CISA项目, CTF学习, CVE验证, ERP安全, NWRFCSDK, PoC生成, Python安全工具, RCE PoC, SAP RF, SAP安全, SAP漏洞利用, SM49, SM69, SXPG_CALL_SYSTEM, toboggan, 企业安全, 内网渗透, 命令执行, 外部OS命令, 无线安全, 系统枚举, 编程工具, 网络资产管理, 远程代码执行, 逆向工具