ld.so privesc exploit example
Підготовка середовища
У наступному розділі ви знайдете код файлів, які ми збираємося використовувати для підготовки середовища
Файл **libcustom.h** містить власні бібліотеки, які можуть бути використані для розширення функціональності програми. У цьому файлі можна визначити власні функції та змінні, які будуть доступні для використання в програмі. Рекомендується уважно контролювати доступ до цього файлу, оскільки недостатні обмеження можуть призвести до можливості використання його для зловмисних цілей.
Створіть ці файли на своєму комп'ютері в тій самій папці
Скомпілюйте бібліотеку:
gcc -shared -o libcustom.so -fPIC libcustom.c
Скопіюйте
libcustom.so
до/usr/lib
:sudo cp libcustom.so /usr/lib
(root privs)Скомпілюйте виконуваний файл:
gcc sharedvuln.c -o sharedvuln -lcustom
Перевірте середовище
Переконайтеся, що libcustom.so завантажується з /usr/lib і що ви можете виконати бінарний файл.
Використання
У цьому сценарії ми будемо припускати, що хтось створив вразливий запис всередині файлу в /etc/ld.so.conf/:
Вразлива папка - /home/ubuntu/lib (де у нас є права на запис). Завантажте та скомпілюйте наступний код всередині цього шляху:
Тепер, коли ми створили зловмисну бібліотеку libcustom всередині неправильного шляху, нам потрібно зачекати на перезавантаження або на виконання користувачем root команди ldconfig
(у випадку, якщо ви можете виконати цей бінарний файл як sudo або він має suid біт, ви зможете виконати його самостійно).
Після цього перевірте знову, звідки виконується sharevuln
виконуваний файл, що завантажує бібліотеку libcustom.so
з:
Як ви можете побачити, він завантажує його з /home/ubuntu/lib
і якщо будь-який користувач виконає його, буде виконано оболонку:
Зверніть увагу, що в цьому прикладі ми не підвищили привілеї, але, змінивши виконувані команди та чекаючи, коли корінь або інший користувач з підвищеними привілеями виконає вразливий бінарний файл, ми зможемо підвищити привілеї.
Інші помилки конфігурації - Та ж вразливість
У попередньому прикладі ми симулювали помилкову конфігурацію, де адміністратор встановив непривілейовану теку всередині файлу конфігурації всередині /etc/ld.so.conf.d/
.
Але є інші помилки конфігурації, які можуть призвести до тієї ж вразливості, якщо у вас є права на запис в деякому файлі конфігурації всередині /etc/ld.so.conf.d/
, у теки /etc/ld.so.conf.d
або у файл /etc/ld.so.conf
, ви можете налаштувати ту ж вразливість та експлуатувати її.
Експлойт 2
Припустимо, у вас є привілеї sudo для ldconfig
.
Ви можете вказати ldconfig
звідки завантажувати файли конфігурації, тому ми можемо скористатися цим, щоб змусити ldconfig
завантажувати довільні теки.
Тож, створимо файли та теки, необхідні для завантаження "/tmp":
Тепер, як вказано в попередньому використанні, створіть зловісну бібліотеку всередині /tmp
.
І нарешті, давайте завантажимо шлях та перевіримо, звідки завантажується бібліотека:
Як ви можете побачити, маючи привілеї sudo над ldconfig
, ви можете використати цю ж вразливість.
Я не знайшов надійного способу використання цієї вразливості, якщо ldconfig
налаштований з бітом suid. З'являється наступна помилка: /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
References
Dab machine in HTB
Last updated