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

2016-03-03 +10 409832人围观 ,发现 15 个不明物体 数据安全漏洞

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

MSSQL.jpg

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

目标网站使用了微软 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:俄语,小编表示看不懂啊(ノ=Д=)ノ┻━┻)

1.png

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

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 其返回类型为 intsmallint。通常,返回类型都有自己自身的值。例如:

@@LANGID 默认通常为 0 (英语)
@@TEXTSIZE 可能比 1000 大

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

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

2.JPG

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

3.JPG

4.JPG

5.JPG

6.JPG

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

*原文地址:c0rni3sm,FB小编xiaix编译,转自须注明来自FreeBuf黑客与极客(FreeBuf.COM)

更多精彩
相关推荐

这些评论亮了

  • evil7 (6级) 入梦落樱满熏香,梦醒犹记四月谎 回复
    查了一下,作者博客在blogspot,但是访问时候跳到的香港节点,不过国内还是上不了。
    博客肯定是想给更多人看的嘛,辣莫如果是国人,一定不会丢到墙角的。
    所以,原文作者应该是个日本人或者生活在日本的歪果仁吧!
    (原谅我没见过英文这么6的日本人)为什么说是生活在日本呢?
    ```
    http://bounty/yadayada.asp?id=8888'+AND+'1'+LIKE+'1 --> 页面正常显示
    http://bounty/yadayada.asp?id=8888'+AND+'2'+LIKE+'1 --> 页面显示空白
    ```
    yadayada ? 讨厌讨厌? (ノω<。)ノ☆yada~
    如此可爱的打码方式……看来国外也不缺逗逼的灰阔啊…… (。˘• 3•˘。)
    如果是个国人……辣一定是个b站老湿机了吧……
    )14( 亮了
发表评论

已有 15 条评论

取消
Loading...

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php