powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дыра в INHERIT PRIVILEGES
7 сообщений из 7, страница 1 из 1
Дыра в INHERIT PRIVILEGES
    #39473283
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
SQL> connect scott/tiger
Connected.
SQL> drop user u1 cascade
  2  /
 
User dropped.
 
SQL> create user u1 identified by u1
  2  default tablespace users
  3  quota unlimited on users
  4  /
 
User created.
 
SQL> grant create session,
  2        create any index,
  3        create procedure
  4    to u1
  5  /
 
Grant succeeded.
 
SQL> drop table tbl purge
  2  /
 
Table dropped.
 
SQL> create table tbl(
  2                  txt varchar2(30)
  3                  )
  4  /
 
Table created.
 
SQL> connect u1/u1
Connected.
SQL> create or replace
  2    function echo(
  3                  p_str varchar2
  4                )
  5      return varchar2
  6      authid current_user
  7      deterministic
  8      is
  9      begin
10
11          -- Here user u1 could place code to save
12          -- table scott.tbl data somewhere u1 can
13          -- access it. I'll use dbms_output.put_line
14
15          dbms_output.put_line(p_str);
16          return p_str;
17  end;
18  /
 
Function created.
 
SQL> create index tbl_idx1
  2    on scott.tbl(
  3                echo(txt)
  4                )
  5  /
 
Index created.
 
SQL> connect scott/tiger
Connected.
SQL> set serveroutput on
SQL> insert
  2    into tbl
  3    values(
  4          'you just got hacked'
  5          )
  6  /
you just got hacked
 
1 row created.
 
SQL> -- And this is NOT addressed by 12C where INHERIT PRIVELEGES privilege was introduced:
 
SQL> select  u1.echo('test')
  2    from  dual
  3  /
 
U1.ECHO('TEST')
-----------------
test
 
test
SQL> revoke inherit privileges
  2    on user scott
  3    from public
  4  /
 
Revoke succeeded.
 
SQL> select  u1.echo('test')
  2    from  dual
  3  /
select  u1.echo('test')
        *
ERROR at line 1:
ORA-06598: insufficient INHERIT PRIVILEGES privilege
ORA-06512: at "U1.ECHO", line 1
 
SQL> -- As you can see we can't run function U1.ECHO as invoker SCOTT,
SQL> -- however FBI with U1.ECHO still leaves that security gap open:
 
SQL> insert
  2    into tbl
  3    values(
  4          'you just got hacked'
  5          )
  6  /
you just got hacked
 
1 row created.
 
SQL>



SY.
...
Рейтинг: 0 / 0
Дыра в INHERIT PRIVILEGES
    #39473318
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
Код: plsql
1.
create any index

isSY
Код: plsql
1.
security gap
...
Рейтинг: 0 / 0
Дыра в INHERIT PRIVILEGES
    #39473348
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE ANY INDEX конечно плохо, но суть-то в том что FBI херит INHERIT PRIVILEGES .

SY.
...
Рейтинг: 0 / 0
Дыра в INHERIT PRIVILEGES
    #39473364
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYCREATE ANY INDEX конечно плохо, но суть-то в том что FBI херит INHERIT PRIVILEGESХЕЗ. Any посильнее чего-либо пообъектного.
...
Рейтинг: 0 / 0
Дыра в INHERIT PRIVILEGES
    #39473740
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
Код: plsql
1.
2.
3.
4.
5.
SQL> create index tbl_idx1
  2    on scott.tbl(
  3                echo(txt)
  4                )
  5  /

Кстати, возможность создать такой индекс появилась лишь в 12cR2. А до:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
U1@elic12>; grant execute on echo to scott;
U1@elic12>;
U1@elic12>; create index tbl_idx1
U1@elic12>;   on scott.tbl(
U1@elic12>;               echo(txt)
U1@elic12>;               )
U1@elic12>; /
              echo(txt)
              *
ERROR at line 3:
ORA-00904: "ECHO": invalid identifier
...
Рейтинг: 0 / 0
Дыра в INHERIT PRIVILEGES
    #39473742
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соломон, во-первых, чтобы "хакнуть" передаваемое в функцию значение вовсе не нужен authid current_user. А без него от (не)грантов Скотта ничего не зависит.
Во-вторых, даже если в функции разместить dml, он будет всё равно исполняться от имени владельца функции, а не от Скотта и по-настоящему хакнуть не выйдет:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
U1@elic122>; create table tbl(txt varchar2(30));
U1@elic122>; insert into tbl values('But it''s still u1''s table :|');
U1@elic122>; create function echo(p_str varchar2) return varchar2
U1@elic122>;     authid current_user
U1@elic122>;     deterministic
U1@elic122>; is
U1@elic122>;   x varchar2(1000);
U1@elic122>; begin
U1@elic122>;   select min(txt) into x from tbl;
U1@elic122>;   dbms_output.put_line(p_str||'='||x);
U1@elic122>;   return p_str;
U1@elic122>; End;
U1@elic122>; /

...

U1@elic122>; connect scott/tiger
Connected.

Scott@elic122>; set serveroutput on
Scott@elic122>; insert into tbl values('you just got hacked');
you just got hacked=But it's still u1's table :|

Т.е. никакого сабжа вовсе нет.
...
Рейтинг: 0 / 0
Дыра в INHERIT PRIVILEGES
    #39473787
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс, был неправ. Дыры нет. Я создал индекс в U1 а надо-было в SCOTT (плюс grant execute on echo to scott). Тогда hack есть до 12C, а в 12C тaки решается черeз INHERIT PRIVILEGES.

SY.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дыра в INHERIT PRIVILEGES
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]