跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

网络安全管理软件产品奥利安开发指南

精选回复

发布于

0x00 前言

网络安全管理软件产品猎户座平台是一个统一的网络和系统管理产品套件,可用于监控信息技术基础架构。我们可以通过网络安全管理软件产品信息服务(SWIS)访问猎户星座平台中的数据。

在程序实现上,我们可以借助网络安全管理软件产品猎户座应用程序接口进行开发,但是在最近的漏洞利用上,我们无法直接使用网络安全管理软件产品猎户座API。

本文将要介绍网络安全管理软件产品猎户座应用程序接口的用法,分析无法直接使用的原因,提供一种解决方法,开源两个测试代码

0x01 简介

本文将要介绍以下内容:

网络安全管理软件产品猎户座应用程序接口的使用

模拟网页操作的实现

开发细节

开源代码

0x02 SolarWinds Orion API的使用

参考资料:

https://github.com/solarwinds/OrionSDK/wiki

计算机编程语言语言可使用orionsdk库进行开发,地址如下:

https://github.com/solarwinds/orionsdk-python

在引入orionsdk库后,可以很容易的实现以下功能:

询问

引起

创造

阅读

更新

批量更新

删除

批量删除

为了研究网络安全管理软件产品猎户座应用程序接口的实现细节,决定不借助orionsdk库实现相同的功能

语法格式的参考资料:

https://github.com/solarwinds/OrionSDK/wiki/REST

对于网络安全管理软件产品猎户座API,需要注意以下细节:

1.接口地址

默认接口地址为https://:17778/网络安全管理软件产品/信息服务/v3/Json/

2.用户验证

添加表头:授权:基本dXNlcm5hbWU6cGFzc3dvcmQ=

其中,dXNlcm5hbWU6cGFzc3dvcmQ为用户名:密码作Base64编码后的结果

3.数据查询

通过邮政发送查询命令,格式为应用程序/json类型

网络安全管理软件产品猎户座应用程序接口使用网络安全管理软件产品查询语言(SWQL),类似于结构化查询语言语法

数据库的表项可以通过本地搭建测试环境,执行网络安全管理软件产品猎户座下的数据库管理器进行查看

查询数据库的示例代码:

定义SWIS查询(api主机,用户名,密码,查询,* *参数):

身份验证=用户名':'密码

正宗的。编码(“utf-8”)

credential=base64.b64encode(身份验证)。解码(“utf8”)

URL=' https://' API _ host ':17778/网络安全管理软件产品/信息服务/v3/Json/Query '

标题={

用户代理”:“Mozilla/5.0(X11;Linux x86 _ 64rv:52.0)壁虎/20100101火狐/52.0 ',

授权':'基本'凭证,

"内容类型":"应用程序/json "

}

数据={

查询':查询,

参数':参数

}

r=requests.post(url,headers=headers,data=json.dumps(data),verify=False)

如果r .状态代码==200:

打印('[ ]查询成功)

对于r.json()中的I['结果']:

打印(一)

否则:

打印('[!]')

打印(r。状态_代码)

打印(正文)

退出(0)

在计算机编程语言代码开发上,需要考虑以下细节:

1.将字典作为命令行参数传递

可以先通过命令行参数传入字符串,再将字符串转义为json字符串

固定参数的用法示例:

entity='Orion .民意测验者的

properties={'PollerType ':'你好,来自curl 2 ',' NetObject':'N:123'}

SWIS _创建(api _主机,用户名,密码,实体,* *参数)

将字典作为命令行参数传递的用法示例:

entity='Orion .民意测验者的

属性=输入('输入属性:(例如{'PollerType':'hi from curl 2 ',' NetObject':'N:123'})')

SWIS _创建(sys.argv[1],sys.argv[2],sys.argv[3],实体,**json.loads(属性))

2.将列表作为命令行参数传递

可以先通过命令行参数传入字符串,再将字符串转为列表

固定参数的用法示例:

uri=[' swis://WIN-kq 48 k3s 9 b 92/Orion/猎户座.nodes/NodeID=1/自定义属性']

properties={'City ':'宁静谷' }

SWIS _批量更新(api _主机,用户名,密码,uri,* *属性)

将列表作为命令行参数传递的用法示例:

uris=input('输入uri:(例如swis://Server1/Orion/Orion .nodes/NodeID=1/custom properties,swis://Server1/Orion/Orion .nodes/NodeID=2/自定义属性)')

properties={'City ':'宁静谷' }

SWIS_bulkupdate(sys.argv[1],sys.argv[2],sys.argv[3],uris.split(','),* *属性)

完整的实现代码已上传至Github,地址如下:

https://github。com/3g student/job-of-Python/blob/master/SolarWindsOrionAPI _ manage。巴拉圭

代码支持以下功能:

询问

引起

创造

阅读

更新

批量更新

删除

批量删除

为了便于使用,省去输入查询语句的过程,还支持以下功能:

GetAccounts

GetAlertActive

GetAlertHistory

获取凭据

GetNodes

GetOrionServers

猜测是出于安全考虑,网络安全管理软件产品猎户座应用程序接口的功能有限,有些数据库无法进行查询,例如虚拟机器表(存储虚拟机信息)、凭证属性表(存储凭据信息)、账户表的密码哈希项和密码盐项

已公开的网络安全管理软件产品漏洞(CVE-2020-10148、CVE-2020-27870、CVE-2020-27871、CVE-2021-31474)涉及的均为网络协议接口(默认为http://:8787/Orion/),同网络安全管理软件产品猎户座应用程序接口不同,所以无法结合利用

0x03 模拟网页操作的实现

为了结合漏洞利用,我们需要网页登录,通过抓取数据包的方式实现同网络安全管理软件产品猎户座的数据交互,功能同网络安全管理软件产品猎户座应用程序接口的功能保持一致

1.登录验证

通过抓取数据包发现,网络安全管理软件产品猎户座基于ASP .网平台使用了视图状态存储数据

但经过实际测试,我们的测试程序可以不带有视图状态,不影响功能

登录验证的数据包流程如下:

访问:http://:8787/Orion/Login.aspx?自动登录=否

返回响应码为302

自动跳转至http://:8787/Orion/View.aspx

返回响应码为302

自动跳转至http://:8787/猎户座/汇总视图。aspx

返回响应码为200,获得最终结果

在程序实现上,我们可以对返回的最终结果进行判断,如果饼干中带有__AntiXsrfToken项,那么代表用户验证成功

示例代码:

定义检查(api_host,用户名,密码):

' url=api_host '/Orion/Login.aspx?'自动登录=否'

body={

_ _ event target ':' CTL 00 $ body content $ log in button ',

ctl00$BodyContent$Username ':用户名,

ctl00$BodyContent$Password ':密码

}

postData=urllib。解析。urlencode(正文).编码(“utf-8”)

标题={

用户代理”:“Mozilla/5.0(X11;Linux x86 _ 64rv:52.0)壁虎/20100101火狐/52.0 ',

content-Type ':' application/x-www-form-urlencoded ',

}

r=requests.post(url,headers=headers,data=postData,verify=False)

如果r .状态代码==200并且r.headers['set-cookie']中有__AntiXsrfToken ':

打印('[ ]有效:% s % s“%(用户名,密码))

关闭()

否则:

打印('[!]')

打印(r。状态_代码)

打印(正文)

关闭()

退出(0)

2.查询操作

页眉中需要额外添加属性x-XSRF-令牌

属性x-XSRF-令牌的值在初次登录时访问http://:8787/Orion/Login.aspx?自动登录=否返回的302结果中获得

在程序实现上,可以通过添加参数allow_redirects=Faslse来禁用跳转,在返回的饼干中取出x-XSRF-令牌

查询接口地址:http://:8787/api2/swis/query

示例代码:

def QueryData(api_host,用户名,密码,查询,* *参数):

session=requests.session()

' url=api_host '/Orion/Login.aspx?'自动登录=否'

body={

_ _ event target ':' CTL 00 $ body content $ log in button ',

ctl00$BodyContent$Username ':用户名,

ctl00$BodyContent$Password ':密码

}

postData=urllib。解析。urlencode(正文).编码(“utf-8”)

标题={

用户代理”:“Mozilla/5.0(X11;Linux x86 _ 64rv:52.0)壁虎/20100101火狐/52.0 ',

content-Type ':' application/x-www-form-urlencoded ',

}

r=session.post(url,headers=headers,data=postData,verify=False)

if r.status_code!=200或" __AntiXsrfToken "不在r.headers['set-cookie']中:

打印('[!]')

打印(r。状态_代码)

打印(正文)

关闭()

退出(0)

打印('[ ]有效:% s % s“%(用户名,密码))

r=session.post(url,headers=headers,data=postData,verify=False,allow_redirects=False)

index=r.headers['Set-Cookie'].索引(' XSRF-TOKEN ')

xsrfToken=r . headers[' Set-Cookie '][index 11:index 55]

打印('[ ] XSRF-TOKEN: ' xsrfToken ')

url1=api_host '/api2/swis/query?'' lang=en-usswAlertOnError=false '

标题={

用户代理”:“Mozilla/5.0(X11;Linux x86 _ 64rv:52.0)壁虎/20100101火狐/52.0 ',

"内容类型":"应用程序/json”,

' X-XSRF-TOKEN':xsrfToken

}

数据={

查询':查询,

参数':参数

}

r=session.post(url1,headers=headers,data=json.dumps(data),verify=False)

if 'Result' in r.json():

打印('[ ]结果: ')

dic=r.json()['Result']

对于(油)密度指示控制器(Density Indicating Controller的缩写)中的我:

打印(一)

否则:

打印('[!]')

print(r.json())

数据格式同网络安全管理软件产品猎户座应用程序接口的询问命令保持一致,所以我们可以直接对照网络安全管理软件产品猎户座美联社实现相同的功能

完整的实现代码已上传至Github,地址如下:

https://github。com/3g student/job-of-Python/blob/master/SolarWindsOrionAPI _ manage。巴拉圭

代码支持用户口令验证和数据库查询的功能

为了便于使用,省去输入查询语句的过程,支持以下功能:

GetAccounts

GetAlertActive

GetAlertHistory

获取凭据

GetNodes

GetOrionServers

0x04 小结

本文分别介绍了使用网络安全管理软件产品猎户座应用程序接口和模拟网页操作实现数据查询的方法,开源测试代码,便于同其他漏洞利用相结合。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。