高级SQL注入扫描仪-IIS和DBO
恶意用户可以使用SQL注入的高级机制来获取关键信息并利用它来获得计算机系统的完全控制。
解释性注释
本文没有试图解释一种损害计算机系统的新技术,SQL注入技术非常古老且已知,但同时可能非常强大。该文章还不能反映出未知漏洞的利用,这是已知的并且已经报告了,如果可以反映出未发表的SQL注入的高级先进机制,恶意用户可以将其用于获取关键信息并利用它来获得计算机系统的完全控制。
将此技术与IIS Web服务器与Microsoft SQL Server数据库中的用户权限(DBO)相结合可以导致受影响服务器的控制完全丢失。
本文将试图解释通过IIS Web服务器与外部网页进行交互的SQL数据库造成的潜在风险,并详细介绍了恶意用户如何从中受益。
简短摘要(Wikipedia)
SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中邪恶的SQL语句插入到执行的入口字段中(例如,将数据库内容转换为攻击者)。 SQL注入必须利用应用程序软件中的安全漏洞,例如,当用户输入错误地过滤用户输入以嵌入了SQL语句中的字符串逃生字符,或者没有强烈键入用户输入并出乎意料地执行。 SQL注入主要是网站的攻击向量,但可用于攻击任何类型的SQL数据库。
SQL注入攻击使攻击者能够欺骗身份,篡改现有数据,引起否定问题,例如排斥交易或更改余额,允许完全披露系统上的所有数据,破坏数据或使其不可用,并成为数据库服务器的管理员。
脆弱性
假设在网页中,参数传递以允许SQL注入存在安全问题,那么主要问题是IIS Web服务器能够通过使用无效的Transact-SQL转换功能向用户显示关键信息。想象以下URL ID参数允许注入。
https://www.victim.com/index.aspx?id=1
恶意用户可以通过Transact-SQL转换函数覆盖ID参数的值
转换(int,(select+用户)); -
最终的URL是这种风格:
https://www.victim.com/index.aspx?id=convert(int,(select+用户)); -
转换函数试图将字符串转换为整数,这会导致IIS Web服务器出现严重错误显示执行查询的值的例外。
典型的输出将是这样的:
将NVARCHAR值'{user}'转换为数据类型INT时,转换失败。
正如我们可以看到{user}值对应于数据库用户的当前值,除了返回的值是DBO的值,DBO还将告诉我们数据库用户具有最大的执行特权,因此它将能够使用XP_CMDSHELL TRASSACT tramSact-SQL-SQL函数执行Shell命令。
使用具有最大特权的数据库用户使用网页是系统管理员不应掉落的严重安全错误。
总而言之,可以说脆弱性由三个因素组成:
- 处理允许SQL注入的GET/POST参数的错误。 (软件开发人员)
- IIS Web服务器显示转换功能信息。 (微软)
- 在网页中使用具有最大特权的数据库用户。 (系统管理员/软件开发人员)
版本4.0(私有)
扫描仪的扩展版4.0版在私人存储库中(由赞助商可见),其所有功能。
- https://github.com/iricartb/advanced-sql-indoction-scanner-release
更多信息
https://advanced-sql-invoction.blogspot.com/2017/06/ivan-ricart-borges-advanced-sql.html