漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2016-0168803
漏洞标题:某市营运车辆综合性能检测联网联控信息管理系统Getshell
相关厂商:cncert
漏洞作者: xyang
提交时间:2016-01-13 16:50
修复时间:2016-02-27 11:49
公开时间:2016-02-27 11:49
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2016-01-13: 细节已通知厂商并且等待厂商处理中
2016-01-15: 厂商已经确认,细节仅向厂商公开
2016-01-25: 细节向核心白帽子及相关领域专家公开
2016-02-04: 细节向普通白帽子公开
2016-02-14: 细节向实习白帽子公开
2016-02-27: 细节向公众公开
简要描述:
泄露-审计源码-绕过后台-传shell
详细说明:
1、泄露
下载下来后发现是个完整的web站点,但不是**.**.**.**/,于是我翻了下文件看能不能发现点什么,很快定位到一个文件/WEB/Frame/Login.aspx,看到底部有信息
google一把
好了,目标出现了
2、审计源码
当我访问网址的时候,发现需要登录的,既然源码在手,那就审计下咯。
前端登录页面:/WEB/Frame/Login.aspx,表单里面没看到提交到后台的地址,那么一定写在js里面的
定位js文件,发现前台表单传递给了这个文件:/WEB/DAL/Frame/Login.ashx,并且还带了个参数Flag=Q
/WEB/DAL/Frame/Login.ashx部分代码审计:
这里主要是获取Flag的值
还记得刚刚前面除了传递表单内容外还传了Flag参数,值为Q,结合注释,即为查询操作,于是跟踪DataQuery函数
这条sql语句犯了处理登录情况的典型错误,将用户名和密码直接同时拼接在查询语句中,程序员的逻辑是希望where语句的YHDH字段和MM字段同时校验成功的情况下,才能select出数据,而这恰恰造成了SQL注入。于是我就可以不用知道管理员的密码就能构造用户名绕过登录机制了
这样原来的sql语句就变成了select xxx from xxx where U.YHDH='admin'--' AND U.MM='md5xxxx'
--符号在oracle数据库中表示单行注释,所以此时的sql语句逻辑已经变成了只要数据库中存在admin名称的用户,就能select出信息了
就这样绕过了后台的登录验证。
3、传webshell
在后台找到文件管理,有个上传功能,试了下任意文件都可上传,免去了我审计劳动,getshell
密码:admin
看了下密码,感觉有点简单的,而且还有sa账户
夜深了,撸不动了
仅证明问题,未做任何破坏活动
漏洞证明:
如上
修复方案:
1、全面修复sql注入问题,漏洞证明里面说的很详细了,不要拼接!不要拼接!不要拼接!
2、虽然是后台,但是上传文件后缀还是限制下
3、删除test.aspx马(/UploadFiles/Files/20160110013649test.aspx)
版权声明:转载请注明来源 xyang@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:10
确认时间:2016-01-15 15:36
厂商回复:
CNVD确认未复现所述情况,已经转由CNCERT下发给辽宁分中心,由其后续协调网站管理单位处置.
最新状态:
暂无