最近這消息一出,大家都受寵若驚除了中央寄來的重大漏洞警示之外不外乎各單位承辦都在詢問我們有在此事漏洞影響範圍嗎?我只能說是的!針對這次影響的範圍包含有
| 產品 | FortiOS : 7.2.1、7.2.0、7.0.6、7.0.5、7.0.4、7.0.3、7.0.2、7.0.1、7.0.0 FortiProxy : 7.2.0、7.0.6、7.0.5、7.0.4、7.0.3、7.0.2、7.0.1、7.0.0 FortiSwitchManager : 7.2.0、7.0.0 |
沒錯這次針對Fortinet 近期出來的系統7系列所發生的漏洞CVSS評分為9.8分非常嚴重的漏洞,有心人士可以利用此漏洞達成身分驗證繞過,進而獲得Fortinet設備的控制權限,接著為了瞭解此攻擊方式,阿俊這邊會模擬一個環境進行此漏洞利用,該環境是VM架設出來的LAB實驗演示。
演示環境工具
ESXI 7.0
VM:kaliLinux-10.100.104.102
VM:FortiGate7.2- 10.100.104.20
首先一樣事前偵查尋找有該漏洞的設備目前已知FortiGate所在位址10.100.104.20 一樣用NMAP探查,這次我們都知道這是是針對有開管理介面的設備來進行攻擊,我們看到下圖有帶出這台設備在此CVE漏洞影響範圍。

我們看這台FortiGate版本是7.2 也確認HTTPS HTTP SSH 對外的管理服務都有開。


已經確認好靶機的狀態後接著準備該漏洞的利用我們先確認一下目前用ssh連線是需要輸入帳號密碼的這是當然的。

接著執行漏洞利用工具設定好參數後執行

接著我們在試一次SSH連線,你會發現很神奇的是直接登入成功並可以看到裡面的資訊


這樣子就完成身份繞過驗證了 是不是很神奇呢!那為何會可以這樣呢?我們下面來分解一下這之中發生的一些事!
發生過程:
在這之前我要先瞭解的是當用戶使用SSH連線時大多數是都是打帳號密碼,那有一天密碼被人知道了那個人就可以登入該台設備,那假如有一個檔案紀錄著人類看不懂的內容時,但是這個設備需要這個檔案才能讓你登入那這樣不就安全多了,對沒錯這邊要講的是利用工具產生公鑰與私鑰來達成設備與使用者端的認證,拋棄傳統打帳號密碼的模式直接用金鑰驗證是不是就安全多了。
我們只需要把公鑰上傳到要認證的設備上,私鑰存放在自己的電腦上,那這樣這個電腦連至該設備都不需要輸入密碼,那這跟這次CVE有什麼關聯呢?沒錯在Fortinet設備中也可以使用這種方式來達成免密碼登入
在FortiGate中我們只要將工具產生出來的公鑰輸入在FortiGate 的 帳戶資訊裡就能完成免打密碼登入



看了FortiGate利用這方式將公鑰資訊打在設備帳戶資訊裡,那我必須要先知道這個密碼後我才能這樣子做不是嗎?是的正常來講是這樣沒錯但是當系統有發生漏洞時可以利用其他方式將公鑰資訊塞入指定的帳戶中,這就是這次CVE的問題原因。
我們看一下這次最關鍵的原因在哪裡?,攻擊指令除了目標及帳戶資訊外最重要的東西就是 id_ed25519.pub,這個是將該Linux 電腦的公鑰注入到指定帳戶中,我前面有說過只要有公鑰資訊的設備,擁有該私鑰的電腦就能直接不打帳密登入。

何從注入的呢?我們打開攻擊腳本看一下,當add_key被呼叫的時候會執行一段Api該呼叫會針對特定帳戶加入 ssh-public-key1的字串(該字串就是我們宣告的公鑰資訊),為了Request成功則使用headers進行本地跳轉,讓設備認為是在本地操作執行送出指令,而完成這次的注入資訊。


經過一系列的操作後就能成功地把公鑰注入到設備上來達成免密碼登入,針對此事件的CVE官方已經有提供韌體修正,如果還來不及修正請關閉對外管理介面或是限制來源IP,感謝這次觀看 我是阿俊 謝謝大家。