我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle数据库实现SQL注入模拟与恢复

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle数据库实现SQL注入模拟与恢复

本篇内容主要讲解“Oracle数据库实现SQL注入模拟与恢复”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle数据库实现SQL注入模拟与恢复”吧!


1.      Oracle SQL注入过程

1.1.SQL注入方式

从网上下载感染病毒的介质,在数据库实例创建时SQL注入脚本被执行并创建了相应的触发器和加密存储过程。这种注入方式由于在数据库实例创建时用SYS账号运行了被感染的脚本文件因此不需要依赖数据库中的DBA权限的用户。这种注入方式通过在$ORACLE_HOME/rdbms/admin下的prvtsupp.plb文件中添加一个加密的过程和一个触发器的创建脚本,在用户创建实例时会执行prvtsupp.plb该文件从而达到入侵的目的。通过对prvtsupp.plb文件中的过程进行解密后的内容如下:

Oracle数据库实现SQL注入模拟与恢复

另外一种注入方式就是网上下载了被病毒感染的PL/SQL或Toad客户端工具,如果用户登陆这些工具时使用具有dba权限的用户,则工具会在后台执行执行相应的病毒脚本并创建上面的过程和触发器。

1.1.SQL注入行为

该触发器在每次数据库重启后执行存储过程,而存储过程执行时会判断当前时间距数据库创建时间是否大于指定的天数 (我这次遇到的是300天),如果大于指定的天数则在数据库重启后将数据库字典基表TAB$备份后并清空。

在TAB$表被清空后如果数据库不再重启的话,数据库后台alert日志在报一系列ORA-00600后会一直会报错ORA-00604和ORA-00957

Oracle数据库实现SQL注入模拟与恢复

Oracle数据库实现SQL注入模拟与恢复

2.      Oracle SQL注入过程模拟

模拟直接执行原加密的存储过程,如下:

Oracle数据库实现SQL注入模拟与恢复

执行存储过程后关闭数据库再次启动发现报错ORA-00600提示bootstrap核心对象损坏。

Oracle数据库实现SQL注入模拟与恢复

3.      应急修复过程测试

本次模拟修复采用shell脚本调用bbed批量修改tab$表对应的块,来恢复tab$表删除的记录。由于只修改了tab$对应的簇表块并没有修复索引(索引可以禁用,不建议修复)。所以在修复后只能通过exp将用户数据导出后进行重建数据库来恢复数据。

将受损的基表对应的SYSTEM表空间数据文件上传到linux平台执行相应的恢复脚本进行恢复如下:

Oracle数据库实现SQL注入模拟与恢复

Oracle数据库实现SQL注入模拟与恢复

Oracle数据库实现SQL注入模拟与恢复

Oracle数据库实现SQL注入模拟与恢复

Oracle数据库实现SQL注入模拟与恢复

Oracle数据库实现SQL注入模拟与恢复

Oracle数据库实现SQL注入模拟与恢复

Oracle数据库实现SQL注入模拟与恢复

修复完成后将文件拷贝回windows平台,然后启动数据库(建议以read only方式打开数据库,我这里是测试环境懒的执行了)

Oracle数据库实现SQL注入模拟与恢复

导出对应的用户数据

       Oracle数据库实现SQL注入模拟与恢复

4.      日常预检查、处理

对于生产库建议定期进行病毒特征排查,如何及时发现并且数据库没有重启且select * form tab$查询不为空,则可以通过手动drop对应的存储过程和触发器(通过以下语句来检查数据库是否已感染相应的SQL注入病毒)。

select 'drop ' || object_type || ' ' || owner || '.' || object_name || ';'

  from dba_objects

 where object_name in ('DBMS_SUPPORT_DBMONITOR', 'DBMS_SUPPORT_DBMONITORP');

其次可以对用同版本数据库正常的prvtsupp.plb文件来替换$ORACLE_HOME/rdbms/admin/prvtsupp.plb感染病毒的文件,防止后续数据库新建议实例时再次感染病毒。

到此,相信大家对“Oracle数据库实现SQL注入模拟与恢复”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle数据库实现SQL注入模拟与恢复

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle数据库ODBC连接与数据备份恢复最佳实践

Oracle数据库连接和数据备份恢复是数据库管理中非常重要的方面,以下是一些Oracle数据库ODBC连接和数据备份恢复的最佳实践:使用ODBC连接:ODBC(Open Database Connectivity)是一种标准数据库访问接口,
Oracle数据库ODBC连接与数据备份恢复最佳实践
2024-07-16

PHP怎么实现MySQL数据库备份与恢复

这篇“PHP怎么实现MySQL数据库备份与恢复”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP怎么实现MySQL数据库备
2023-07-06

Oracle使用RMAN进行数据库恢复的实现步骤

目录1. 准备工作2. 启动 RMAN3. 恢复整个数据库1. 关闭数据库2. 启动到装载模式3. 恢复控制文件(如果需要)4. 恢复数据文件5. 应用归档日志和联机重做日志6. 打开数据库4. 恢复特定数据文件5. 恢复表空间6. 恢复时
Oracle使用RMAN进行数据库恢复的实现步骤
2024-09-08

如何实现Oracle数据库的备份和恢复策略

要实现Oracle数据库的备份和恢复策略,可以遵循以下步骤:备份策略:定期进行完整数据库备份:使用Oracle提供的工具如RMAN(Recovery Manager)或第三方备份软件进行完整数据库备份,保留备份文件以便在需要时进行恢复操作
如何实现Oracle数据库的备份和恢复策略
2024-04-09

Python中如何对MySQL数据库进行备份和恢复操作?(通过Python如何实现MySQL数据库的备份与恢复?)

本文介绍了如何使用PythonMySQLdb库对MySQL数据库进行备份和恢复。备份涉及导出数据库到文件,而恢复涉及从文件导入数据库。自动化过程可以使用调度器(如cron)来安排定期备份和恢复。本文提供了详细的步骤和代码示例,使读者能够轻松地实施这些操作,确保数据的安全性和完整性。
Python中如何对MySQL数据库进行备份和恢复操作?(通过Python如何实现MySQL数据库的备份与恢复?)
2024-04-02

编程热搜

目录