Fortinet FortiSIEM硬編碼SSH密鑰

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章