一个罕见的MSSQL注入漏洞案例

安全 漏洞
这里作者准备分享一个在去年Google赏金计划中发现的相当罕见漏洞,也是作者在整个渗透测试生涯中唯一一次遇到的。

这里作者准备分享一个在去年Google赏金计划中发现的相当罕见漏洞,也是作者在整个渗透测试生涯中***一次遇到的。

[[163451]]

目标网站使用了微软 SQL Server 数据库并且其中一个存在 SQL 盲注。你问我怎么知道的?当然是通过触发真/假条件判断的。

http://bounty/yadayada.asp?id=8888'+AND+'1'+LIKE+'1 --> 页面正常显示

http://bounty/yadayada.asp?id=8888'+AND+'2'+LIKE+'1 --> 页面显示空白

这里没什么特别的地方,就是一个常见的 SQL 注入测试,但随后问题来了:

1. 手工测试表明存在 SQL 盲注漏洞

2. 但扫描器/SQLMap 不起作用

3. 好像使用了存储过程方法(不确定)

我尝试了多种方法提供 POC 但没有一种能够成功,再进一步研究后发现,应用程序只会对用户权限提交的整数值进行响应。

对此我一点办法也没有,直到发现了 v1d0q 提供的一个方法 https://rdot.org/forum/showthread.php?t=826 (ps:俄语,小编表示看不懂啊(ノ=Д=)ノ┻━┻)

一个罕见的MSSQL注入漏洞案例

 

当时这对我来说是种全新的方法,但令人惊讶的是这样真的管用!

http://bounty/yadayada.asp?id=8888'+AND+(@@TEXTSIZE>@@LANGID)+AND+'1'+LIKE+'1 --> 页面正常加载

http://bounty/yadayada.asp?id=8888'+AND+(@@LANGID>@@TEXTSIZE)+'1'+LIKE+'1 --> 页面显示空白

进一步阅读后发现,我实际上是在尝试查询 MSSQL 里是否存在 Transact-SQL 其返回类型为 int 或 smallint。通常,返回类型都有自己自身的值。例如:

@@LANGID 默认通常为 0 (英语)

@@TEXTSIZE 可能比 1000 大

继续进行测试,我尝试使用其他 Transact-SQL 语句来确保结果不为假,的确最终大部分的查询语句都返回为真:)

在提交了这个有限的 POC 给网站的所有者后,非常幸运的他们确认了这个漏洞并给予奖励!

一个罕见的MSSQL注入漏洞案例

 

下面是在一台测试服务器上进行的实验:

一个罕见的MSSQL注入漏洞案例 

一个罕见的MSSQL注入漏洞案例 

一个罕见的MSSQL注入漏洞案例 

一个罕见的MSSQL注入漏洞案例

声明:我仍然没有理解这到底是为什么,还需要在后续花一些时间进行研究以找到原因:)

责任编辑:蓝雨泪 来源: FreeBuf
相关推荐

2016-10-20 15:27:18

MySQLredo死锁

2018-03-29 10:16:04

2023-02-07 10:40:30

gRPC系统Mac

2010-09-16 15:57:00

PPPoA配置

2022-07-22 15:40:26

Atlassian服务器漏洞

2023-04-17 16:21:20

JavaScriot前端开发

2016-10-19 09:00:57

漏洞邮箱秘密

2015-02-10 14:32:37

XSS漏洞XSS

2021-03-08 10:49:11

漏洞攻击网络安全

2013-05-24 11:06:53

大数据行为数据

2021-07-27 12:29:11

谷歌SQL漏洞

2022-09-15 12:22:25

cookieDOS 漏洞网络攻击

2023-06-28 08:16:50

Autofac应用程序

2010-10-22 15:18:18

SQL注入漏洞

2014-07-21 10:25:12

ENode开发论坛

2024-02-22 16:55:13

2011-03-31 11:15:52

网页设计Web

2011-09-08 10:46:12

Widget

2024-01-15 11:03:41

2013-04-17 17:07:40

点赞
收藏

51CTO技术栈公众号