【技术原创】FortiOS REST API 开发指南

2022-12-28 7,999

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=file&scope=global

Python示例代码如下:

4.抓包

需要完成以下操作:

新建抓包过滤器

开启抓包过滤器

停止数据包捕获过滤器

下载数据包

删除数据包捕获过滤器

Python示例代码如下:



0x06 小结

本文以 Fortigate REST 的配置和介绍,介绍了 FortiOS 的相关用法,为创建本地用户、添加防火墙规则、导出所有的实现代码。


本文作者:嘶吼RoarTalk

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/194191.html

Tags:
评论  (0)
快来写下你的想法吧!

嘶吼RoarTalk

文章数:19 积分: 1

回归最本质的信息安全,互联网安全新媒体

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号