本篇内容主要讲解“Oracle数据库实现SQL注入模拟与恢复”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle数据库实现SQL注入模拟与恢复”吧!
从网上下载感染病毒的介质,在数据库实例创建时SQL注入脚本被执行并创建了相应的触发器和加密存储过程。这种注入方式由于在数据库实例创建时用SYS账号运行了被感染的脚本文件因此不需要依赖数据库中的DBA权限的用户。这种注入方式通过在$ORACLE_HOME/rdbms/admin下的prvtsupp.plb文件中添加一个加密的过程和一个触发器的创建脚本,在用户创建实例时会执行prvtsupp.plb该文件从而达到入侵的目的。通过对prvtsupp.plb文件中的过程进行解密后的内容如下:另外一种注入方式就是网上下载了被病毒感染的免费云主机域名PL/SQL或Toad客户端工具,如果用户登陆这些工具时使用具有dba权限的用户,则工具会在后台执行执行相应的病毒脚本并创建上面的过程和触发器。该触发器在每次数据库重启后执行存储过程,而存储过程执行时会判断当前时间距数据库创建时间是否大于指定的天数 (我这次遇到的是300天),如果大于指定的天数则在数据库重启后将数据库字典基表TAB$备份后并清空。在TAB$表被清空后如果数据库不再重启的话,数据库后台alert日志在报一系列ORA-00600后会一直会报错ORA-00604和ORA-00957
模拟直接执行原加密的存储过程,如下:
执行存储过程后关闭数据库再次启动发现报错ORA-00600提示bootstrap核心对象损坏。本次模拟修复采用shell脚本调用bbed批量修改tab$表对应的块,来恢复tab$表删除的记录。由于只修改了tab$对应的簇表块并没有修复索引(索引可以禁用,不建议修复)。所以在修复后只能通过exp将用户数据导出后进行重建数据库来恢复数据。将受损的基表对应的SYSTEM表空间数据文件上传到linux平台执行相应的恢复脚本进行恢复如下:
修复完成后将文件拷贝回windows平台,然后启动数据库(建议以read only方式打开数据库,我这里是测试环境懒的执行了)导出对应的用户数据
对于生产库建议定期进行病毒特征排查,如何及时发现并且数据库没有重启且select * form tab$查询不为空,则可以通过手动drop对应的存储过程和触发器(通过以下语句来检查数据库是否已感染相应的SQL注入病毒)。select ‘drop ‘ || object_type || ‘ ‘ || owner || ‘.’ || object_name || ‘;’ from dba_objectswhere object_name in (‘DBMS_SUPPORT_DBMONITOR’, ‘DBMS_SUPPORT_DBMONITORP’);其次可以对用同版本数据库正常的prvtsupp.plb文件来替换$ORACLE_HOME/rdbms/admin/prvtsupp.plb感染病毒的文件,防止后续数据库新建议实例时再次感染病毒。到此,相信大家对“Oracle数据库实现SQL注入模拟与恢复”有了更深的了解,不妨来实际操作一番吧!这里是百云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
这篇文章主要介绍了redis为什么会出现异常,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让免费云主机域名小编带着大家一起了解一下。异常出现的原因:liunx服务器的防火墙没有把6379的端口给外网访问解决方案:感谢你能够…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。