前言

SolarWinds Orion平台是一个统一的网络和系统管理产品套件,可用于监控IT基础架构。我们可以通过SolarWinds Information Service (SWIS)访问Orion平台中的数据。

在程序实现上,我们可以借助SolarWinds Orion API进行开发,但是在最近的漏洞利用上,我们无法直接使用SolarWinds Orion API。

本文将要介绍SolarWinds Orion API的用法,分析无法直接使用的原因,提供一种解决方法,开源两个测试代码。

简介

本文将要介绍以下内容:

◼SolarWinds Orion API的使用

◼模拟网页操作的实现

◼开发细节

◼开源代码

SolarWinds Orion API的使用

参考资料:

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

Python语言可使用orionsdk库进行开发,地址如下:

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

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

◼query

◼invoke

◼create

◼read

◼update

◼bulkupdate

◼delete

◼bulkdelete

为了研究SolarWinds Orion API的实现细节,决定不借助orionsdk库实现相同的功能。

语法格式的参考资料:

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

对于SolarWinds Orion API,需要注意以下细节:

1.接口地址

默认接口地址为https://< url >:17778/SolarWinds/InformationService/v3/Json/

2.用户验证

添加Header: Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

其中,dXNlcm5hbWU6cGFzc3dvcmQ为username:password作Base64编码后的结果。

3.数据查询

通过POST发送查询命令,格式为application/json类型。

SolarWinds Orion API使用SolarWinds Query Language (SWQL),类似于SQL语法。

数据库的表项可以通过本地搭建测试环境,执行SolarWinds Orion下的DataBase Manager进行查看。

查询数据库的示例代码:

在Python代码开发上,需要考虑以下细节:

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

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

固定参数的用法示例:

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

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

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

固定参数的用法示例:

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

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

https://github.com/3gstudent/Homework-of-Python/blob/master/SolarWindsOrionAPI_Manage.py

代码支持以下功能:

◼query

◼invoke

◼create

◼read

◼update

◼bulkupdate

◼delete

◼bulkdelete

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

◼GetAccounts

◼GetAlertActive

◼GetAlertHistory

◼GetCredential

◼GetNodes

◼GetOrionServers

猜测是出于安全考虑,SolarWinds Orion API的功能有限,有些数据库无法进行查询,例如VirtualMachines表(存储虚拟机信息)、CredentialProperty表(存储凭据信息)、Accounts表的PasswordHash项和PasswordSalt项。

已公开的SolarWinds漏洞(CVE-2020-10148、CVE-2020-27870、CVE-2020-27871、CVE-2021-31474)涉及的均为网络协议接口((默认为http://< ip >:8787/Orion/),同SolarWinds Orion API不同,所以无法结合利用

模拟网页操作的实现

为了结合漏洞利用,我们需要网页登录,通过抓取数据包的方式实现同SolarWinds Orion的数据交互,功能同SolarWinds Orion API的功能保持一致。

1.登录验证

通过抓取数据包发现,SolarWinds Orion基于ASP.NET平台使用了ViewState存储数据。

但经过实际测试,我们的测试程序可以不带有ViewState,不影响功能。

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

1.访问:http://< ip >:8787/Orion/Login.aspx?autologin=no

2.返回响应码为302

3.自动跳转至http://< ip >:8787/Orion/View.aspx

4.返回响应码为302

5.自动跳转至http://< ip >:8787/Orion/SummaryView.aspx

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

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

示例代码:

2.查询操作

Header中需要额外添加属性X-XSRF-TOKEN

属性X-XSRF-TOKEN的值在初次登录时访问http://< ip >:8787/Orion/Login.aspx?autologin=no返回的302结果中获得。

在程序实现上,可以通过添加参数allow_redirects=Faslse来禁用跳转,在返回的Cookie中取出X-XSRF-TOKEN。

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

示例代码:

数据格式同SolarWinds Orion API的query命令保持一致,所以我们可以直接对照SolarWinds Orion AP实现相同的功能。

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

https://github.com/3gstudent/Homework-of-Python/blob/master/SolarWindsOrionAPI_Manage.py

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

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

◼GetAccounts

◼GetAlertActive

◼GetAlertHistory

◼GetCredential

◼GetNodes

◼GetOrionServers

小结

本文分别介绍了使用SolarWinds Orion API和模拟网页操作实现数据查询的方法,开源测试代码,便于同其他漏洞利用相结合。

想学网安啊你?点吧给你价值11980的资料

别问我SolarWinds Orion API怎么用,自己进来看看,看完还不会来骂我相关推荐

  1. SolarWinds Orion API 远程代码执行漏洞(CVE-2020-10148)

    SolarWinds Orion API 远程代码执行漏洞 (CVE-2020-10148) ​ 一.漏洞概况 SolarWinds Orion API 嵌入在 Orion Core 中,被用于与所有 ...

  2. 别再问了!考思科认证还是华为认证?看完你就知道了

    老杨陆陆续续一直收到这类问题:"要不要考证?""考哪个好?""有必要考吗?""考完真的能加薪吗?"--说明这个问题很有代 ...

  3. FireEye动态:SolarWinds Orion 新 0day用于安装SUPERNOVA

     聚焦源代码安全,网罗国内外最新资讯! SolarWinds Orion 软件中存在一个认证绕过 0day,已被攻击者用于在目标环境中部署 SUPERNOVA 恶意软件. CERT 协调中心发布安全公 ...

  4. 图解 Java 线程的生命周期,看完再也不怕面试官问了

    文章首发自个人微信公众号: 小哈学Java www.exception.site/java-concur- 在 Java 初中级面试中,关于线程的生命周期可以说是常客了.本文就针对这个问题,通过图文并 ...

  5. 创建父需求子需求构建需求树_还不知道B+树 ?看完,别再问我什么是B+树 了

    前言 每当我们执行某个 SQL 发现很慢时,都会下意识地反应是否加了索引,那么大家是否有想过加了索引为啥会使数据查找更快呢,索引的底层一般又是用什么结构存储的呢,相信大家看了标题已经有答案了,没错!B ...

  6. java一次能迈一级或两级台阶_有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完?...

    有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完? 相关问题: (1)有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台 ...

  7. 超硬核Java学习路线图+学习资源+实战项目汇总,看完以后不用再问我怎么学Java了!

    之前写过很多次关于Java学习指南.Java技术路线图的文章.但是总还是有小伙伴来问我,Java怎么学,项目怎么做,资源怎么找,真是让人头秃. 于是这次黄小斜决定来一波狠的,把所有这些内容都整理起来, ...

  8. android开发 自我优势_6年Android开发程序员教你如何写简历!看完别再问为何你只值5K...

    每年这个时候,就会有大量的程序猿.攻城狮.产品汪等等准备换一个新环境.而换环境的第一个门槛就是如何写好一份简历 很多小伙伴私下问我,前端都学得差不多啦,想去面试看看,但是简历投出去都石沉大海了. 本篇 ...

  9. 别在问PMP和ACP哪个更有用了,看完这一篇你就知道!

    别在问PMP和ACP哪个更有用了,看完这一篇你就知道. 老原很多粉丝和学员在我的后台问我: 要不要考PMP和ACP? PMP和ACP的区别是啥? PMP.ACP证书考哪个更有用?还是两个都考? PMP ...

最新文章

  1. 并发编程——线程——CPython的GIL解释器锁
  2. SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装
  3. ElasticSearch 实践过程中遇到的几个小问题
  4. Python 开发的 10 个小贴士,你知道几个?
  5. H.264视频编码在VC++.Net中的实现
  6. easyUI的combobox的实现
  7. Hadoop系列之FieldSelectionMapReduce用法
  8. Ignite与Spark内存计算平台对比分析
  9. 蓝桥杯2021年第十二届C++省赛第四题-货物摆放
  10. Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
  11. 计算机模拟的概念,湍流概念及数值模拟方法
  12. python利用PyQt5制作QQ空间登入客户端
  13. 爬虫js逆向实战--中通快递轨迹查询接口(验证码)
  14. mysql按月查询统计(统计近12个月的项目个数)
  15. 京东自动评价助手/京东评价
  16. Codeforces Round #783 (Div. 2) A-F
  17. Computer vision for solid waste sorting: A critical review of academic research 机器视觉垃圾分选综述翻译
  18. 中国计算机学会推荐国际学术刊物 (人工智能)
  19. 行业分析| 新的学习方式——在线自习室
  20. 托福百日冲刺—词汇(11)

热门文章

  1. AI开发者大会之语音语义技术实践与应用:2020年7月3日《NLP在教育行业的应用》、《AI防疫-语音语义技术在政务联络场景中的应用》、《智能客服机器人在售前导购场景中的应用实践》
  2. Python之nyoka:nyoka库函数的简介、安装、使用方法之详细攻略
  3. ML之xgboost:利用xgboost算法(自带方式)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
  4. NS之VGG(Keras):基于Keras的VGG16实现之《复仇者联盟3》灭霸图像风格迁移设计(A Neural Algorithm of Artistic Style)
  5. TF之LiR:基于tensorflow实现机器学习之线性回归算法
  6. Autograd:自动求导
  7. OS_CORE.C(5)
  8. linux中一些简便的命令之wc
  9. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何设置PLC的扫描周期,运行周期
  10. mysql查询时强制区分大小写