freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Fortinet FortiSIEM硬编码SSH密钥
白帽汇 2020-01-09 19:13:46 145196

22.png

供应商:Fortinet

产品:FortiSIEM

测试版本:5.2.5以及5.2.6,旧版本还未确认,但很可能受影响。

CVE:目前CVE号码还在确认中。

总结

FortiSIEM针对用户tunneluser提供了一个硬编码的SSH公钥,所有软件都相同。通过此密钥,攻击者可以以该用户身份登录FortiSIEM Supervisor。该未加密的密钥同时也存储在FortiSIEM镜像中。虽然用户的shell仅限于运行/opt/phoenix/phscripts/bin/tunnelshell脚本,但不影响SSH身份验证。

时间线

2019年12月2日:向Fortinet PSIRT发送包含漏洞详细信息的电子邮件。

2019年12月3日:PSIRT自动回复邮件。

2019年12月23日:向PSIRT发送了一封关于漏洞确认的提醒邮件。

2020年1月3日:漏洞公开。

30天,没有任何Fortinet的人员和我联系。如果我在1月2日之前收到漏洞确认书,那么就还有另外60天来解决这个漏洞(不会发布漏洞详情)。但很可惜我并没有收到这样的答复,所以现在漏洞公开。

解决方法

删除Supervisor中的/home/tunneluser/.ssh/authorized_keys文件

supervisor# echo "" > /home/tunneluser/.ssh/authorized_keys

OR

supervisor# rm /home/tunneluser/.ssh/authorized_keys

另外,确保有防火墙挡在应用前面,只有有限端口可以对外公开。

细节

FortiSIEM Supervisor有两个不同的sshd系统服务:一个是在标准的22端口,另一个在19999端口:

supervisor# netstat -lnp |grep sshd
tcp0  0 0.0.0.0:22      0.0.0.0:*
LISTEN  38593/sshd
tcp0  0 0.0.0.0:19999   0.0.0.0:*
LISTEN  38615/sshd
tcp0  0 :::22           :::*
 LISTEN  38593/sshd
tcp0  0 :::19999        :::*
 LISTEN  38615/sshd

其中19999的tcp端口所开放的sshd服务的配置文件如下:

Supervisor# ps aux |grep 38615
root     38615      0.0  0.0  66288   512 ?        Ss   Sep25   0:00
/usr/sbin/sshd -p 19999 -f /etc/ssh/sshd_config.tunneluser

而在配置文件中查找相关用户时,发现它只为tunneluser服务:

supervisor# grep -R tunneluser /etc/ssh/
/etc/ssh/sshd_config.tunneluser:AllowUsers tunneluser@*
/etc/ssh/sshd_config.tunneluser:DenyUsers "!tunneluser@*,*"

请注意,22端口sshd服务的配置文件并没有拒绝tunneluser的登录,所以理论上你也可以通过22端口进行授权。

从passwd文件你也可以发现一些端倪:

supervisor# grep tunneluser /etc/passwd:
tunneluser:x:501:502::/home/tunneluser:/opt/phoenix/phscripts/bin/tunnelshell

Supervisor可让tunneluser用户通过SSH key进行连接,我也和其他使用者确认过,这个key在所有应用中都是一样的。

supervisor# cat /home/tunneluser/.ssh/authorized_keys
permitopen="127.0.0.1:2" ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEArtFWNhmJqezB0NC5NAbWGZBDWHpGsB+d0+bI46mIJMVyfLhuIa5s5iZF30ehRxu0tTILp40EDe5S9VkdlOymJFvA3dUTlfuhwKvV1hUHXe/5ARTC8AX+1QeZDGnzUKBp/64in6STyaG/1KZj0U1rKUTH42SJWjTrvE/vHqilrcY9SmPx498mPzR8CvlJKYCm1WvweIUoqiVnIqIAQrZqTR+0ea1LksQ6YP4PqpTZpe495bIhk+f2pwPI6PU2q0X61Ae99kqo07whoktb3NdNSI9y/yWJleKdw/FaR0Cj7Ilqg3KyR8evHQoOTHpWiTRAPOpo82qfbx6W0ykrRjo/QQ==
builder@ao-build

相对应的SSH私钥在所有节点(Supervisor、Collector等等)中都存在,位于/opt/phoenix/id_rsa.tunneluser文件。通过以下命令你可以验证两个密钥的匹配性:

# ssh-keygen  -y -f /opt/phoenix/id_rsa.tunneluser
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEArtFWNhmJqezB0NC5NAbWGZBDWHpGsB+d0+bI46mIJMVyfLhuIa5s5iZF30ehRxu0tTILp40EDe5S9VkdlOymJFvA3dUTlfuhwKvV1hUHXe/5ARTC8AX+1QeZDGnzUKBp/64in6STyaG/1KZj0U1rKUTH42SJWjTrvE/vHqilrcY9SmPx498mPzR8CvlJKYCm1WvweIUoqiVnIqIAQrZqTR+0ea1LksQ6YP4PqpTZpe495bIhk+f2pwPI6PU2q0X61Ae99kqo07whoktb3NdNSI9y/yWJleKdw/FaR0Cj7Ilqg3KyR8evHQoOTHpWiTRAPOpo82qfbx6W0ykrRjo/QQ==

这意味着任何能接触到FortiSIEM镜像的人都能知道公钥和私钥,通过19999端口以tunneluser身份登录FortiSIEM Supervisor。虽然被限制在/opt/phoenix/phsc ripts/bin/tunnelshell脚本,但一旦被绕过,就能获得完整的服务器访问权。

虽然Supervisor上也有iptables和ip6tables,但并没有有效限制:

supervisor# iptables -L
Chain INPUT (policy DROP)
target prot opt source       destination
ACCEPT all  --  anywhere     anywhere
...

supervisor bin]# ip6tables -L
Chain INPUT (policy ACCEPT)
target prot opt source   destination
...

感谢你的阅读!

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/3860.html
来源:https://seclists.org/fulldisclosure/2020/Jan/10
# 漏洞
本文为 白帽汇 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
白帽汇
白帽汇 LV.4
北京白帽汇科技有限公司
  • 248 文章数
  • 70 关注者
SRVLOC协议与端口扫描
2021-12-07
基于Docker的固件模拟
2020-05-20
第四期 |“有趣”的FOFA
2020-03-19
文章目录