漏洞概要
关注数(24)
关注此漏洞
漏洞标题:华为某智能报表系统(C/S结构)存在特殊的SQL注入,可直接控制服务
提交时间:2014-11-16 12:23
修复时间:2015-02-14 12:24
公开时间:2015-02-14 12:24
漏洞类型:远程代码执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-11-16: 细节已通知厂商并且等待厂商处理中
2014-11-20: 厂商已经确认,细节仅向厂商公开
2014-11-23: 细节向第三方安全合作伙伴开放
2015-01-14: 细节向核心白帽子及相关领域专家公开
2015-01-24: 细节向普通白帽子公开
2015-02-03: 细节向实习白帽子公开
2015-02-14: 细节向公众公开
简要描述:
华为某智能报表系统(C/S结构)存在特殊的SQL注入,可直接控制服务
详细说明:
系统就是叫华为智能报表系统
这里测试了下面截图上的两个版本(服务器端应该也是有一个对应的版本号的),一个是oracle数据库,一个是mssql
客户端的截图如下:
在软件中可以直接配置代理地址(必须这样配置,否则可能改包会比较困难,还好有这个功能……真人性化啊)
登录也是走的http,但是传输的数据会做一些内部转换和unicode编码:
从上图可以看出他带有一个userid字段和一个password字段,只是相关字符是使用的unicode编码,另外把一般web里面的等号和&做了另外一个转换,跟着他的规则走即可。
服务器端返回的其中一种结果如下:
漏洞证明:
在服务器端处理userid这个参数的时候没有做好过滤,客户端检测到单引号’的时候会自动转换然后再提交到服务器,所以我们可以直接改数据包即可,比如我发送以下数据包过去(这里就用16进制视图了):
http://1.1.1.1:8988/RptServlet?rptSessionId=&packageId=RptLogin&action=Login&TaskId=12
很明显可以看出是mssql的注入语句,返回的数据包如下:
里面明显包含有一些错误信息,再看看客户端解码后的截图:
明显爆出了mssql的版本号!
上面是mssql的版本,再提供一个oracle数据库的:
Userid插入以下数据即可:
所以只要适当改造,就有办法拿到权限了,下面给出mssql版开启cmdshell的数据包
按上面的规则提交之后,就开启了cmdshell
接着提供添加用户及添加用户组的数据包(看测试代码吧哈哈,其实根据上面也可以改出来了)
登录到系统后的数据库截图(数据库名一般都是BAM)
管理表截图
Mssql的用这个方法一共拿下四台主机。
为了避嫌就不发更多的截图了
修复方案:
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:8
确认时间:2014-11-20 09:55
厂商回复:
感谢白帽子对华为公司的关注和支持,经调查含有漏洞的系统已经处于EOS(End of Service),华为已提供了其他替代产品,建议用户使用新的产品。
最新状态:
暂无