继续上篇的tab$被清空(ORA-600 16703故障解析—tab$表被清空),导致数据库启动异常的case
ORA-600 16703报错


数据库日志分析
数据库open成功同时报ORA-7445 kokeicbegin和ORA-600 kzrini:!uprofile错误


再次启动数据库直接报ORA-600 16703错误


这里有一个其他现象,就是数据库在open成功的同时(同一秒内),开始报异常.重启之后直接报
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [16703], [1403], [20], [], [], [], [], [], [], [], [], []
根据10046分析结果

=====================
select rowcnt,blkcnt,empcnt,avgspc,chncnt,avgrln,nvl(degree,1), nvl(instances,1) from tab$ where obj# = :1
END OF STMT
PARSE #140048443935120:c=0,e=390,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905161433
=====================
select blevel, leafcnt, distkey, lblkkey, dblkkey, clufac,        nvl(degree,1), nvl(instances,1) from ind$ where bo# = :1 and obj# = :2
END OF STMT
PARSE #140048443934176:c=1000,e=601,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905162088
=====================
PARSING IN CURSOR #140048443933232 len=70 dep=1 uid=0 oct=3 lid=0 tim=1499185905162444 hv=3377894161 ad='84f13d70' sqlid='32d4jrb4pd4sj'
select charsetid, charsetform from col$  where obj# = :1 and col# = :2
END OF STMT
PARSE #140048443933232:c=0,e=294,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905162443
=====================
PARSING IN CURSOR #140048443932288 len=52 dep=1 uid=0 oct=3 lid=0 tim=1499185905247020 hv=429618617 ad='84f0f2d0' sqlid='4krwuz0ctqxdt'
select ctime, mtime, stime from obj$ where obj# = :1
END OF STMT
PARSE #140048443932288:c=0,e=549,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905247019
BINDS #140048443932288:
select blevel, leafcnt, distkey, lblkkey, dblkkey, clufac,        nvl(degree,1), nvl(instances,1) from ind$ where bo# = :1 and obj# = :2
END OF STMT
PARSE #140048443934176:c=1000,e=601,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905162088
=====================
PARSING IN CURSOR #140048443933232 len=70 dep=1 uid=0 oct=3 lid=0 tim=1499185905162444 hv=3377894161 ad='84f13d70' sqlid='32d4jrb4pd4sj'
select charsetid, charsetform from col$  where obj# = :1 and col# = :2
END OF STMT
PARSE #140048443933232:c=0,e=294,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905162443
=====================
PARSING IN CURSOR #140048443932288 len=52 dep=1 uid=0 oct=3 lid=0 tim=1499185905247020 hv=429618617 ad='84f0f2d0' sqlid='4krwuz0ctqxdt'
select ctime, mtime, stime from obj$ where obj# = :1
END OF STMT
PARSE #140048443932288:c=0,e=549,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905247019
BINDS #140048443932288:Bind#0oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00oacflg=00 fl2=0001 frm=00 csi=00 siz=24 off=0kxsbbbfp=7f5f91b87bd0  bln=22  avl=02  flg=05value=20
EXEC #140048443932288:c=2000,e=2686,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=1218588913,tim=1499185905249810
WAIT #140048443932288: nam='db file sequential read' ela= 6205 file#=1 block#=337 blocks=1 obj#=36 tim=1499185905256132
WAIT #140048443932288: nam='db file sequential read' ela= 3739 file#=1 block#=338 blocks=1 obj#=36 tim=1499185905266704
WAIT #140048443932288: nam='db file sequential read' ela= 4966 file#=1 block#=241 blocks=1 obj#=18 tim=1499185905271761
FETCH #140048443932288:c=0,e=21976,p=3,cr=3,cu=0,mis=0,r=1,dep=1,og=4,plh=1218588913,tim=1499185905271820
STAT #140048443932288 id=1 cnt=1 pid=0 pos=1 obj=18 op='TABLE ACCESS BY INDEX ROWID OBJ$ (cr=3 pr=3 pw=0 time=21993 us)'
STAT #140048443932288 id=2 cnt=1 pid=1 pos=1 obj=36 op='INDEX RANGE SCAN I_OBJ1 (cr=2 pr=2 pw=0 time=16923 us)'
CLOSE #140048443932288:c=0,e=63,dep=1,type=0,tim=1499185905271941
BINDS #140048443935120:Bind#0oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0kxsbbbfp=7f5f91c07de8  bln=22  avl=02  flg=05value=20
EXEC #140048443935120:c=1000,e=795,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=2970138452,tim=1499185905272802
WAIT #140048443935120: nam='db file sequential read' ela= 3197 file#=1 block#=169 blocks=1 obj#=3 tim=1499185905276069
WAIT #140048443935120: nam='db file sequential read' ela= 3459 file#=1 block#=170 blocks=1 obj#=3 tim=1499185905404084
WAIT #140048443935120: nam='db file sequential read' ela= 6358 file#=1 block#=145 blocks=1 obj#=4 tim=1499185905410548
FETCH #140048443935120:c=999,e=137805,p=3,cr=3,cu=0,mis=0,r=0,dep=1,og=4,plh=2970138452,tim=1499185905410635
STAT #140048443935120 id=1 cnt=0 pid=0 pos=1 obj=4 op='TABLE ACCESS CLUSTER TAB$ (cr=3 pr=3 pw=0 time=137810 us)'
STAT #140048443935120 id=2 cnt=1 pid=1 pos=1 obj=3 op='INDEX UNIQUE SCAN I_OBJ# (cr=2 pr=2 pw=0 time=131330 us)'*** 2017-07-05 00:31:46.094
Incident 176395 created, dump file: /oracle/diag/rdbms/orcl/orcl2/incident/incdir_176395/orcl_ora_51261_i176395.trc
ORA-00600: internal error code, arguments: [16703], [1403], [20], [], [], [], [], [], [], [], [], []

以及以往恢复经验和mos,基本上可以确定是由于tab$和obj$记录不匹配导致该问题.而且是obj#=20的记录在tab$和obj$中不匹配.

分析tab$和obj$记录

Data UnLoader: 11.2.0.1.5 - Internal Only - on Wed Jul 05 01:28:53 2017
with 64-bit io functions and the decompression optionCopyright (c) 1994 2017 Bernard van Duijnen All rights reserved.Strictly Oracle Internal Use OnlyFound db_id = 1334610369
Found db_name = orcl
DUL> unload table TAB$( OBJ# number, DATAOBJ# number,2      TS# number, FILE# number, BLOCK# number,3      BOBJ# number, TAB# number, COLS number, CLUCOLS number,4      PCTFREE$ ignore, PCTUSED$ ignore, INITRANS ignore, MAXTRANS ignore,5      FLAGS ignore, AUDIT$ ignore, ROWCNT ignore, BLKCNT ignore,6      EMPCNT ignore, AVGSPC ignore, CHNCNT ignore, AVGRLN ignore,7      AVGSPC_FLB ignore, FLBCNT ignore,8      ANALYZETIME ignore, SAMPLESIZE ignore,9      DEGREE ignore, INSTANCES ignore,10      INTCOLS ignore, KERNELCOLS number, PROPERTY number)11      cluster  C_OBJ#(OBJ#)12      storage ( tablespace 0 segobjno 2 tabno 1 file 1 block 144);
. unloading table                      TAB$       0 rows unloaded
DUL> unload table OBJ$( OBJ# number, DATAOBJ# number, OWNER# number,2      NAME clean varchar2(30), NAMESPACE ignore, SUBNAME clean varchar2(30),3      TYPE# number, CTIME ignore, MTIME ignore, STIME ignore,4      STATUS ignore, REMOTEOWNER ignore, LINKNAME ignore,5      FLAGS ignore, OID$ hexraw)6      storage ( tablespace 0 segobjno 18 file 1 block 240);
. unloading table                      OBJ$   89804 rows unloaded
DUL>

这里可以明确表示tab$无记录,obj$有记录,从而启动的过程出现ORA-600 16703错误可以很好解释.由于数据库启动成功和报错几乎同时进行,以及上面看到的tab$记录不存在的情况,初步怀疑是有startup触发器清空tab$表记录
工具分析触发器表trigger$

这里果然看到一个after startup on database的触发器,名字为DBMS_SUPPORT_DBMONITOR,而它调用的是DBMS_SUPPORT_DBMONITORP存储.

工具分析pl/sql表source$


对wraped加密的程序进行解密


这里可以明确的看到DBMS_SUPPORT_DBMONITORP存储过程备份tab$表到orachk中然后delete tab$表,现在已经明确是由于DBMS_SUPPORT_DBMONITOR触发器在数据库重启之后开始执行调用DBMS_SUPPORT_DBMONITORP程序,如果判断数据库创建时间大于等于300天,便干掉tab$表,实现数据库破坏.

查找DBMS_SUPPORT_DBMONITOR等程序源头
分析相关程序创建时间,通过obj$表的ctime和name来判断


这里可以看出来DBMS_SUPPORT_DBMONITOR和DBMS_SUPPORT_DBMONITORP的创建时间基本上和数据库核心对象的创建时间相差无几,我们可以大概排除掉,是由于pl sql等工具连接数据库导致该发问题(类似:plsql dev引起的数据库被黑勒索比特币实现原理分析和解决方案),很可能是在dbca创建库的过程中就已经带有了DBMS_SUPPORT_DBMONITOR等程序,如果这样那很可能是由于数据库的安装介质被破坏导致该问题.

分析DBMS_SUPPORT_DBMONITOR来源


这里已经很清晰,由于prvtsupp.plb被人注入了恶意脚本从而使得数据库被创建了DBMS_SUPPORT_DBMONITOR的触发器和DBMS_SUPPORT_DBMONITORP的存储过程,从而实现了对数据库的而易破坏.

确定破坏文件prvtsupp.plb来源于介质


这里比较明显,文件就是来源database\stage\Components\oracle.rdbms.dbscripts\11.2.0.4.0\1\DataFiles\filegroup2.jar\rdbms\admin\prvtsupp.plb文件被修改导致


通过md5码对比,可以确定是有人对软件的安装介质进行了破坏,从而实现了恶意代码的注入,从而实现了数据库300天之后重启之后无法正常启动而是出现类似ORA-00600: internal error code, arguments: [16703], [1403], [20], [], [], [], [], [], [], [], [], []的错误.

温馨提示
各位一定要从官方途径下载oracle安装介质,如果是从其他互联网途径下载一定要验证md5,确保文件没有被人恶意篡改,造成无可挽回的损坏.如果真的不幸遇到这类问题,请保护现场联系我们
Tel:13429648788    Q Q:107644445    E-Mail:dba@xifenfei.com
我们可以通过使用bbed对tab$表数据数据进行恢复实现数据库正常启动,实现数据0丢失,最大限度抢救您的数据和减少业务恢复时间

转载于:https://www.cnblogs.com/xifenfei/p/10023409.html

ORA-600 16703--oracle介质被注入恶意脚本相关推荐

  1. dbf如何导入oracle_Oracle软件的安装介质被注入恶意程序事件分析与防御

    No.1 声明 由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任. 雷神众测拥有对此文章的修改和解释权.如欲转载或传播此文 ...

  2. 修改jar 注入_ORA00600[16703]安装介质注入型勒索病毒恢复案例

    早期客户数据库软件被注入恶意代码,导致数据库无法启动,报错ORA-00600: internal error code, arguments:[16703], [1403], [20],由于恶意攻击, ...

  3. 开源项目event-stream被注入恶意代码,盗取区块链钱包助记词

    我是今天上午朋友说的时候才发现的这个问题, 这篇推文及其附带的 GitHub 链接大体是说每周 npm 下载量超过 200 万的 package 被注入了恶意代码,黑客利用该恶意代码访问热门 Java ...

  4. php server script name,$_SERVER[SCRIPT_NAME]变量可值注入恶意代码

    $_SERVER['SCRIPT_NAME']变量在路由传参时,可引入恶意代码,从而导致xss以及恶意代码注入. PS:本文仅做技术讨论与分享,严禁用于任何非法用途. $_SERVER['SCRIPT ...

  5. Oracle12081,【Oracle介质】Oracle 12C Linux x86-64 最新OPatch patch 6880880 12.2.0.1.7

    天萃荷净 Linux x86-64 补丁程序6880880: OPatch patch of version 12.2.0.1.7 for Oracle software releases 12.1. ...

  6. oracle报错注入的一些函数

    oracle 报错注入select dbms_xmltranslations.extractxliff((select banner from sys.v_$version where rownum= ...

  7. 周下载量过200万的npm包被注入恶意代码,Vue、Node项目恐受影响

    今天上午,小编在Twitter上刷出了这条推文,再翻看国内一些论坛,开发者已经有所讨论,小编在这里给大家整理一下. 这篇推文及其附带的GitHub链接大体是说上周npm下载量超过200万的packag ...

  8. oracle防止sql注入proc,解密:Oracle怎么防SQL注入

    昨天我们说了怎么绕过waf进行sql注入,今天我们继续这个话题,说说Oracle数据库本身在防sql注入方面做了哪些工作. Oracle从8i开始PL/SQL中涌现出了大量SQL注入漏洞,直至11.2 ...

  9. inotifypropertychanged接受不执行_scp客户端现多个漏洞,可执行恶意脚本

    0x00概述 根据国外安全人员披露,基于ssh文件传输软件scp暴露了多个漏洞,影响windwos.Linux等多个平台的SCP客户端.可以通过恶意scp服务器,可以未经授权的更改目标目录和客户端输出 ...

最新文章

  1. FhqTreap的区间翻转
  2. 开发者的实用 Vim 插件(一)
  3. Windows消息机制详解-2
  4. VS2003使用后的一点心得
  5. 使用Directory.EnumerateFiles进行批处理
  6. 【NOI2019模拟2019.7.4】朝夕相处 (动态规划+BM)
  7. tomcat 之 tomcat实例配置
  8. 居民安装光伏系统常会碰壁 怎么样做才能少走弯路?
  9. 暴增14倍!这家港股最大基金公司,1年净利20亿,竟是因为这个!
  10. 二分搜索 POJ 1064 Cable master
  11. linux文件系统ext2\ext3\ext4\xfs详解
  12. Linux虚拟机中安装vim(超详细)
  13. ECharts学习--雷达图
  14. Kernel wmb/mb宏的作用
  15. cocos2dx 3.2 学习篇之六(精灵运动,自定义运动轨迹(太极八卦))
  16. python click 函数
  17. c# 傅里叶变换 频域_C# 傅里叶变换 逆变换 调用MathNet包
  18. Task 2: Word Vectors and Word Senses (附代码)(Stanford CS224N NLP with Deep Learning Winter 2019)
  19. 微信小程序相关一、模仿京东静态登录页面
  20. 视频教程-微信小程序全集-微信开发

热门文章

  1. 进制转换 和 正数负数——原码,反码,补码
  2. 企业托管服务器有什么优势
  3. Nginx无法启动 遇见unknown directive if(!-f in E:\xiangmu\nginx-1.14.0/conf/nginx.conf:28
  4. 为什么感觉期货交易越做越难?
  5. 微信android 7.0版本下载地址,微信7.0官方版本下载,微信7.0官方版本下载 v7.0.15-安卓乐园安卓软件网...
  6. MyBatis简单的增删改查
  7. 一阶微分方程的物理意义_微分方程建模课堂讨论之一_利用导数的几何及物理意义建模....
  8. 基于图像去雾处理的雾霾污染程度评估(任务书+lunwen+翻译及原文+答辩PPT)
  9. 书评:薛定谔猫与生物学鸽子:《生命是什么?》出版75周年记
  10. Hystrix熔断器简介