别问我SolarWinds Orion API怎么用,自己进来看看,看完还不会来骂我
前言
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怎么用,自己进来看看,看完还不会来骂我的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己身份信息泄漏了怎么办,别怕,带你了解
- 下一篇: 让你轻松学会PHP版自动化SQL盲注工具