本文将要介绍FortiOS REST API的相关用法,分享开发的实现细节。
本文将要介绍以下内容:
强化环境听力
FortiOS REST API 方式登录
常用操作
常用功能
这里以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
参考资料: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用户信息,查询成功
查询配置文件信息,查询成功
Python示例代码如下:
代码实现以下三个功能:
管理员用户信息,查询成功
REST API用户信息,查询成功
查询配置文件信息,查询成功
1. 调试输出
为了方便调试,可以在cli执行以下命令:
一分钟在cli输出调试信息3
如下图
2.文件打包
可提取使用挂载vmdk的方式加载文件,逆向分析REST API的实现
破解方法:https ://www.horizontal-fortiswitchmanager-460-dive-cve-2022-484 /
3.增删改查操作
读取内容使用GET方法
新建内容使用POST方法
修改内容使用PUT方法
删除内容使用DELETE方法
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=file&scope=global
Python示例代码如下:
4.抓包
需要完成以下操作:
新建抓包过滤器
开启抓包过滤器
停止数据包捕获过滤器
下载数据包
删除数据包捕获过滤器
Python示例代码如下:
本文以 Fortigate REST 的配置和介绍,介绍了 FortiOS 的相关用法,为创建本地用户、添加防火墙规则、导出所有的实现代码。