前言
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)頁操作的實(shí)現(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庫后颤绕,可以很容易的實(shí)現(xiàn)以下功能:
?query
?invoke
?create
?read
?update
?bulkupdate
?delete
?bulkdelete
為了研究SolarWinds Orion API的實(shí)現(xiàn)細(xì)節(jié)幸海,決定不借助orionsdk庫實(shí)現(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.用戶驗(yàn)證
添加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ù)庫的表項(xiàng)可以通過本地搭建測試環(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ù)傳遞的用法示例:
完整的實(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項(xiàng)和PasswordSalt項(xiàng)溜族。
已公開的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)頁操作的實(shí)現(xiàn)
為了結(jié)合漏洞利用寡壮,我們需要網(wǎng)頁登錄,通過抓取數(shù)據(jù)包的方式實(shí)現(xiàn)同SolarWinds Orion的數(shù)據(jù)交互讹弯,功能同SolarWinds Orion API的功能保持一致况既。
1.登錄驗(yàn)證
通過抓取數(shù)據(jù)包發(fā)現(xiàn),SolarWinds Orion基于ASP.NET平臺使用了ViewState存儲數(shù)據(jù)组民。
但經(jīng)過實(shí)際測試棒仍,我們的測試程序可以不帶有ViewState,不影響功能臭胜。
登錄驗(yàn)證的數(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項(xiàng)乱陡,那么代表用戶驗(yàn)證成功。
示例代碼:
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實(shí)現(xiàn)相同的功能。
完整的實(shí)現(xiàn)代碼已上傳至Github乏沸,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/SolarWindsOrionAPI_Manage.py
代碼支持用戶口令驗(yàn)證和數(shù)據(jù)庫查詢的功能
為了便于使用淫茵,省去輸入查詢語句的過程,支持以下功能:
?GetAccounts
?GetAlertActive
?GetAlertHistory
?GetCredential
?GetNodes
?GetOrionServers
小結(jié)
本文分別介紹了使用SolarWinds Orion API和模擬網(wǎng)頁操作實(shí)現(xiàn)數(shù)據(jù)查詢的方法蹬跃,開源測試代碼匙瘪,便于同其他漏洞利用相結(jié)合。
想學(xué)網(wǎng)安啊你蝶缀?點(diǎn)吧給你價值11980的資料