ld.so privesc exploit example
Підготовка середовища
У наступному розділі ви знайдете код файлів, які ми будемо використовувати для підготовки середовища
Створіть ці файли на вашій машині в тій же папці
Скомпілюйте бібліотеку:
gcc -shared -o libcustom.so -fPIC libcustom.c
Скопіюйте
libcustom.so
до/usr/lib
:sudo cp libcustom.so /usr/lib
(root привілеї)Скомпілюйте виконуваний файл:
gcc sharedvuln.c -o sharedvuln -lcustom
Перевірте середовище
Перевірте, що libcustom.so завантажується з /usr/lib і що ви можете виконати двійковий файл.
Exploit
У цьому сценарії ми будемо припускати, що хтось створив вразливий запис всередині файлу в /etc/ld.so.conf/:
Вразлива папка - /home/ubuntu/lib (де у нас є можливість запису). Завантажте та скомпілюйте наступний код у цій папці:
Тепер, коли ми створили шкідливу бібліотеку libcustom всередині неправильно налаштованого шляху, нам потрібно почекати перезавантаження або щоб користувач root виконав ldconfig
(якщо ви можете виконати цей бінар як sudo або у нього є suid біт, ви зможете виконати його самостійно).
Після цього перевірте знову, звідки виконується sharevuln
, завантажуючи бібліотеку libcustom.so
:
Як ви можете бачити, він завантажується з /home/ubuntu/lib
і якщо будь-який користувач виконає його, буде виконано оболонку:
Зверніть увагу, що в цьому прикладі ми не підвищили привілеї, але модифікуючи команди, що виконуються, і чекаючи, поки root або інший привілейований користувач виконає вразливий бінарний файл, ми зможемо підвищити привілеї.
Інші неправильні налаштування - Така ж вразливість
У попередньому прикладі ми створили ілюзію неправильного налаштування, де адміністратор встановив непривабливу папку в конфігураційному файлі в /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
, ви можете експлуатувати ту ж вразливість.
Last updated