0x00 前言本文將要介紹FortiOS REST API的相關用法,分享開發的實現細節。
0x01簡介本文將要介紹以下內容:
強化環境聽力
FortiOS REST API 方式登錄
常用操作
常用功能
0x02 Fortigate環境這里以Fortigate作為FortiOS REST API的測試環境,安裝FortiGate for VMware
參考資料:https://getlabsdone.com/how-to-install-fortigate-on-vmware-workstation/
1.下載FortiGate for VMware安裝包下載地址:https://support.fortinet.com/
選擇Support-VMImages,選擇產品:FortiGate,選擇平台:VMWare ESXi
注:
7.2之前的版本可以使用15天,7.2之後的版本需要賬號註冊
2.導入ova文件打開FortiGate-VM64.ova導入VMWare
3.配置網卡3個網卡,我們只需要保留3個,刪掉後面的107個,默認3個網卡的具體配置如下:
(1)管理網卡
點擊VMware workstation-Edit-Virtual Network Editor點擊Change settings,點擊Add Network.選擇VMnet2,選擇,Type選擇Host-only,DHCP選擇Enabled
如下圖
商業網卡設置成VMnet2
(2)WAN網卡
設置成bridged
(3)局域網網卡
選擇network adapter 3,點擊LAN Segments.點擊Add,命名為Fortigate LAN
網卡設置成LAN segment,選擇Fortigate LAN
最終配置成圖
4.開啟虛擬機用戶名:admin職位,為默認空
查看激活狀態的命令:get system status
查看ip的命令:diagnose ip address list
得到管理網卡的ip為192.168.23.128
5.訪問網頁管理頁面地址為:http://192.168.23.128
0x03 FortiOS REST API 登錄方式參考資料:https://www.used.net.ua/index.php/fajlovyj-arkhiv/category/35-fortinet.html?download=83:fortios-5-6-11-rest-api-reference
FortiOS REST API支持以下類型登錄:
1.使用admin用戶登錄需要管理員用戶admin的明文,不需要額外的配置
通過訪問訪問https://
需要注意的是,使用管理員用戶登錄結束後需要進行訪問https://
Python示例代碼如下:
代碼實現以下三個功能:
管理員用戶信息,查詢成功
REST API用戶信息,查詢成功
查詢配置文件信息,查詢成功
2.使用API密鑰參考資料:https://docs.fortinet.com/document/forticonverter/6.0.2/online-help/866905/connect-fortigate-device-via-api-token
需要額外創建配置文件和用戶,生成API密鑰
(1)創建配置文件
登錄網頁管理頁面,選擇System-Admin Profiles-Create New
Name設置為api_admin
將所有權限均設置為Read/Write
(2)創建用戶
選擇System-Administrators-Create New-REST API Admin
Username設置為api_user
Administrator profile設置為api_admin
自動生成API 密鑰,測試環境得到的結果為r3h53QbtrmNtdk0HH5qwnw8mkcmnt7
API key有以下使用方式:
作為URL 的參數使用,示例:access_token=r3h53QbtrmNtdk0HH5qwnw8mkcmnt7
標題中,示例:'Authorization': 'Bearer r3h53QbtrmNtdk0HH5qwnw8mkcmnt7'
Python示例代碼如下:
代碼實現以下三個功能:
管理員用戶信息,查詢失敗
REST API用戶信息,查詢成功
查詢配置文件信息,查詢成功
補充:通過漏洞(CVE-2022-40684)可屏蔽身份認證Python示例代碼如下:
代碼實現以下三個功能:
管理員用戶信息,查詢成功
REST API用戶信息,查詢成功
查詢配置文件信息,查詢成功
0x04 常用操作1. 調試輸出為了方便調試,可以在cli執行以下命令:
一分鐘在cli輸出調試信息3
如下圖
2.文件打包可提取使用掛載vmdk的方式加載文件,逆向分析REST API的實現
破解方法: https://www.horizontal-fortiswitchmanager-460-dive-cve-2022-484 /
3.增刪改查操作讀取內容使用GET方法
新建內容使用POST方法
修改內容使用PUT方法
刪除內容使用DELETE方法
0x05 常用功能1.創建本地用戶需要訪問/api/v2/cmdb/user/local,發送json數據
Python示例代碼如下:
2.添加防火牆需要訪問/api/v2/cmdb/firewall/policy,發送json數據
Python示例代碼如下:
3.導出所有配置通過訪問/api/v2/cmdb/system/admin導出用戶信息時,密碼項被加密,格式為'password':'ENC XXXX'
這裡可通過備份功能導出所有配置,獲得加密的用戶身份,訪問位置為/api/v2/monitor/system/config/backup?destination=filescope=global
Python示例代碼如下:
4.抓包需要完成以下操作:
新建抓包過濾器
開啟抓包過濾器
停止數據包捕獲過濾器
下載數據包
刪除數據包捕獲過濾器
Python示例代碼如下:
0x06 小結本文以Fortigate REST 的配置和介紹,介紹了FortiOS 的相關用法,為創建本地用戶、添加防火牆規則、導出所有的實現代碼。
Recommended Comments