别问我SolarWinds Orion API怎么用,自己进来看看,看完还不会来骂我
前言
SolarWinds Orion平臺是一個統(tǒng)一的網(wǎng)絡(luò)和系統(tǒng)管理產(chǎn)品套件,可用于監(jiān)控IT基礎(chǔ)架構(gòu)。我們可以通過SolarWinds Information Service (SWIS)訪問Orion平臺中的數(shù)據(jù)。
在程序?qū)崿F(xiàn)上,我們可以借助SolarWinds Orion API進(jìn)行開發(fā),但是在最近的漏洞利用上,我們無法直接使用SolarWinds Orion API。
本文將要介紹SolarWinds Orion API的用法,分析無法直接使用的原因,提供一種解決方法,開源兩個測試代碼。
簡介
本文將要介紹以下內(nèi)容:
?SolarWinds Orion API的使用
?模擬網(wǎng)頁操作的實現(xiàn)
?開發(fā)細(xì)節(jié)
?開源代碼
SolarWinds Orion API的使用
參考資料:
https://github.com/solarwinds/OrionSDK/wiki
Python語言可使用orionsdk庫進(jìn)行開發(fā),地址如下:
https://github.com/solarwinds/orionsdk-python
在引入orionsdk庫后,可以很容易的實現(xiàn)以下功能:
?query
?invoke
?create
?read
?update
?bulkupdate
?delete
?bulkdelete
為了研究SolarWinds Orion API的實現(xiàn)細(xì)節(jié),決定不借助orionsdk庫實現(xiàn)相同的功能。
語法格式的參考資料:
https://github.com/solarwinds/OrionSDK/wiki/REST
對于SolarWinds Orion API,需要注意以下細(xì)節(jié):
1.接口地址
默認(rèn)接口地址為https://< url >:17778/SolarWinds/InformationService/v3/Json/
2.用戶驗證
添加Header: Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
其中,dXNlcm5hbWU6cGFzc3dvcmQ為username:password作Base64編碼后的結(jié)果。
3.數(shù)據(jù)查詢
通過POST發(fā)送查詢命令,格式為application/json類型。
SolarWinds Orion API使用SolarWinds Query Language (SWQL),類似于SQL語法。
數(shù)據(jù)庫的表項可以通過本地搭建測試環(huán)境,執(zhí)行SolarWinds Orion下的DataBase Manager進(jìn)行查看。
查詢數(shù)據(jù)庫的示例代碼:
在Python代碼開發(fā)上,需要考慮以下細(xì)節(jié):
1.將字典作為命令行參數(shù)傳遞
可以先通過命令行參數(shù)傳入字符串,再將字符串轉(zhuǎn)義為json字符串。
固定參數(shù)的用法示例:
將字典作為命令行參數(shù)傳遞的用法示例:
2.將列表作為命令行參數(shù)傳遞
可以先通過命令行參數(shù)傳入字符串,再將字符串轉(zhuǎn)為列表。
固定參數(shù)的用法示例:
將列表作為命令行參數(shù)傳遞的用法示例:
完整的實現(xiàn)代碼已上傳至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的功能有限,有些數(shù)據(jù)庫無法進(jìn)行查詢,例如VirtualMachines表(存儲虛擬機(jī)信息)、CredentialProperty表(存儲憑據(jù)信息)、Accounts表的PasswordHash項和PasswordSalt項。
已公開的SolarWinds漏洞(CVE-2020-10148、CVE-2020-27870、CVE-2020-27871、CVE-2021-31474)涉及的均為網(wǎng)絡(luò)協(xié)議接口((默認(rèn)為http://< ip >:8787/Orion/),同SolarWinds Orion API不同,所以無法結(jié)合利用
模擬網(wǎng)頁操作的實現(xiàn)
為了結(jié)合漏洞利用,我們需要網(wǎng)頁登錄,通過抓取數(shù)據(jù)包的方式實現(xiàn)同SolarWinds Orion的數(shù)據(jù)交互,功能同SolarWinds Orion API的功能保持一致。
1.登錄驗證
通過抓取數(shù)據(jù)包發(fā)現(xiàn),SolarWinds Orion基于ASP.NET平臺使用了ViewState存儲數(shù)據(jù)。
但經(jīng)過實際測試,我們的測試程序可以不帶有ViewState,不影響功能。
登錄驗證的數(shù)據(jù)包流程如下:
1.訪問:http://< ip >:8787/Orion/Login.aspx?autologin=no
2.返回響應(yīng)碼為302
3.自動跳轉(zhuǎn)至http://< ip >:8787/Orion/View.aspx
4.返回響應(yīng)碼為302
5.自動跳轉(zhuǎn)至http://< ip >:8787/Orion/SummaryView.aspx
6.返回響應(yīng)碼為200,獲得最終結(jié)果
在程序?qū)崿F(xiàn)上,我們可以對返回的最終結(jié)果進(jìn)行判斷,如果Cookie中帶有__AntiXsrfToken項,那么代表用戶驗證成功。
示例代碼:
2.查詢操作
Header中需要額外添加屬性X-XSRF-TOKEN
屬性X-XSRF-TOKEN的值在初次登錄時訪問http://< ip >:8787/Orion/Login.aspx?autologin=no返回的302結(jié)果中獲得。
在程序?qū)崿F(xiàn)上,可以通過添加參數(shù)allow_redirects=Faslse來禁用跳轉(zhuǎn),在返回的Cookie中取出X-XSRF-TOKEN。
查詢接口地址:http://< ip >:8787/api2/swis/query
示例代碼:
數(shù)據(jù)格式同SolarWinds Orion API的query命令保持一致,所以我們可以直接對照SolarWinds Orion AP實現(xiàn)相同的功能。
完整的實現(xiàn)代碼已上傳至Github,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/SolarWindsOrionAPI_Manage.py
代碼支持用戶口令驗證和數(shù)據(jù)庫查詢的功能
為了便于使用,省去輸入查詢語句的過程,支持以下功能:
?GetAccounts
?GetAlertActive
?GetAlertHistory
?GetCredential
?GetNodes
?GetOrionServers
小結(jié)
本文分別介紹了使用SolarWinds Orion API和模擬網(wǎng)頁操作實現(xiàn)數(shù)據(jù)查詢的方法,開源測試代碼,便于同其他漏洞利用相結(jié)合。
想學(xué)網(wǎng)安啊你?點吧給你價值11980的資料
總結(jié)
以上是生活随笔為你收集整理的别问我SolarWinds Orion API怎么用,自己进来看看,看完还不会来骂我的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己身份信息泄漏了怎么办,别怕,带你了解
- 下一篇: 让你轻松学会PHP版自动化SQL盲注工具