Все, что вам нужно знать о UID в Linux
Эта статья по основам Linux научит вас всему важному, связанному с UID в Linux.
Что такое UID в Linux?
UID обозначает идентификатор пользователя. UID — это номер, назначенный каждому пользователю Linux. Это представление пользователя в ядре Linux.
UID используется для идентификации пользователя в системе и для определения того, к каким системным ресурсам пользователь может получить доступ. Вот почему идентификатор пользователя должен быть уникальным.
Вы можете найти UID в файле /etc/passwd. Это тот же файл, который можно использовать для составления списка всех пользователей в системе Linux.
Используйте команду Linux для просмотра текстового файла, и вы увидите различную информацию о пользователях, присутствующих в вашей системе.
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin andreyex:x:1000:1000:Andrey. /home/helder:/bin/bash davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin
Третье поле здесь представляет идентификатор пользователя или UID.
Обратите внимание, что в большинстве дистрибутивов Linux UID 1-500 обычно зарезервирован для системных пользователей. В Ubuntu и Fedora UID для новых пользователей начинаются с 1000.
Например, если вы используете команду useradd или adduser для создания нового пользователя, он получит следующий доступный номер после 1000 в качестве своего UID.
Корневой пользователь
В Linux UID — 0 и GID — 0 зарезервированы для пользователя root.
Как найти UID пользователя в Linux?
Вы всегда можете положиться на файл /etc/passwd, чтобы получить UID пользователя. Это не единственный способ получить информацию UID в Linux.
Команда id в Linux отобразит UID, GID и группы, к которым принадлежит ваш текущий пользователь:
id uid=1000(andreyex) gid=1000(andreyex) groups=1000(andreyex),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),127(kvm)
Вы также можете указать имена пользователей с помощью команды id, чтобы получить UID любого пользователя Linux:
id standard uid=1001(standard) gid=1001(standard) groups=1001(standard)
Как изменить UID пользователя в Linux?
Предположим, у вас было несколько пользователей в вашей системе Linux. Вы должны были удалить пользователя, потому что он/она покинул организацию. Теперь вы хотите, чтобы его UID был занят другим пользователем, уже находящимся в системе.
Вы можете изменить UID, изменив пользователя с помощью команды usermod следующим образом:
usermod -u 1004 user_2
Вы должны иметь привилегию суперпользователя для выполнения вышеуказанной команды.
Вы помните концепцию прав доступа и владения файлами в Linux? Право собственности на файл определяется UID пользователя-владельца.
Когда вы обновляете UID пользователя, что происходит с файлами, принадлежащими этому пользователю? В то время как все файлы в домашнем каталоге user_2 изменят свой связанный UID, вам придется вручную обновить связанный UID других файлов вне домашний каталог.
Что вы можете сделать, это вручную обновить владельца файлов, связанных со старым UID пользователя_2.
find / -user old_uid_of_user_2 -exec chown -h user_2 <> \;
Вот и все. Мы надеемся, что теперь у вас есть лучшее представление об UID в Linux. Не стесняйтесь задавать свои вопросы, если таковые имеются.
Как профессиональный пользователь Linux, если вы думаете, что мы пропустили какое-то важное понятие об UID, пожалуйста, дайте мне знать в разделе комментариев.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Команда id — найти UID пользователя или GID
Чтобы найти UID пользователя (ID пользователя) или GID (идентификатор группы) и другую информацию в Linux/Unix-подобных операционных системах, используйте команду id.
Эта команда полезна для поиска следующей информации:
- Получить имя пользователя и реальный идентификатор пользователя
- Найти UID конкретного пользователя
- Перечислите все группы, к которым принадлежит пользователь
- Показать UID и все группы, связанные с пользователем
- Отображение контекста безопасности текущего пользователя
- Эффективное имя пользователя Linux или Unix и эффективный идентификатор пользователя (UID)
- Имя действующей группы пользователей Linux или Unix и идентификатор эффективной группы (GID)
Цель
Отображает системные идентификаторы указанного пользователя.
синтаксис команды id
id id [UserNameHere] id [параметры] id [параметры] [имя_пользователя]
По умолчанию команда id показывает имена пользователей и групп и числовые идентификаторы вызывающего процесса, то есть текущего пользователя, который запускает команду id на экране. Если имя пользователя или идентификатор пользователя ([UserNameHere]) указаны в командной строке, отображаются идентификаторы пользователя и группы этого пользователя.
Показать свой собственный UID и GID
uid=1000(vasia) gid=1000(vasia) группы=1000(vasia),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),130(sambashare),132(libvirtd),134(lxd)
Как найти UID конкретного пользователя?
В этом примере найдите UID пользователя vasia, введите:
id -u id -u vasia
Как найти GID конкретного пользователя?
В этом примере найдите GID пользователя vasia, запустите:
id -g id -g vasia
Как увидеть UID и все группы, связанные с именем пользователя?
В этом примере найдите UID и все группы, связанные с пользователем с именем «root», введите:
id id root
uid=0(root) gid=0(root) группы=0(root)
Как узнать все группы, к которым принадлежит пользователь…
В этом примере отобразите UID и все группы, связанные (вторичные группы) с пользователем с именем «vasia», запустите:
id -G id -G vasia
1000 20 12 61 79 80 81 98 33 100 204 398 399
Отображать имя вместо UID / GID
По умолчанию команда id отображает число для опций -G, -g и -u. Вы можете заставить команду id отображать имя UID или GID вместо номера для опций -G, -g и -u, передав опцию -n следующим образом:
id -ng id -nu id -nG id -nG vasia
vasia adm cdrom sudo dip plugdev lpadmin sambashare libvirtd lxd
Как отобразить реальный идентификатор вместо эффективного идентификатора для указанного пользователя?
Вы можете показать действительный идентификатор для параметров -g, -G и -u вместо эффективного идентификатора, передав опцию -r:
id -r -g id -r -u ### [NOTE]########################### ### -r and -G only works on Linux ### ##################################### id -r -G id -r -u vasia
Параметры команды id
Опция | Назначение | OS |
-g | Показать только эффективный идентификатор группы | ALL |
-G | Показать все идентификаторы группы | ALL |
-u | Показать только эффективный идентификатор пользователя | ALL |
-n | Показать имя вместо числа, для -u или -g | ALL |
-r | Показать действительный идентификатор вместо действующего, с -u или -g | ALL |
-Z | Показать только контекст безопасности текущего пользователя SELinux | SELinux |
-A | Показать идентификатор пользователя аудита процесса и другие свойства аудита процесса | Только Unix-like. |
Смотрите также
man id — Страница руководства по команде id
Похожие статьи на сайте
- Методы монтирования дисков в Linux
- Введение в диспетчер логических томов (LVM)
- Локальное туннелирование с помощью SSH: несколько примеров
- Альтернативы SSH, которые в некоторых случаях лучше оригинала
- Полный набор лучших и современных консольных программ для Linux
- Установка ZoneMinder на Ubuntu 22.04 (Linux Mint 21) и nginx
- Устанавливаем GIMP в Ubuntu 22.04 (Linux Mint 21)
- Устанавливаем qBittorrent в Linux Ubuntu/Mint
- Исправляем ошибку — network unreachable resolving ‘./NS/IN’: 2001:503:c27::2:30#53
- Установка remmina из ppa в Ubuntu 22.04 или Mint 21
- Исправляем: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg)
- Что такое зомби-процесс в Linux?
- Хитрости командной строки Bash, которые помогут вам работать быстрее
- Команда ls в Linux — подробно и с примерами
- Команда mkdir в Linux — подробно и с примерами
- Список непечатаемых символов Linux, MacOS или Windows
- Команда chmod в Linux — подробно и с примерами
- Команда cat и примеры её использования в Linux
- Как установить приложение Yarock Music Player
- Запуск нескольких команд Linux одной составной командой
- Файловый менеджер nnn
- Версия системы и версия ядра Ubuntu/Mint
- Запуск команд на удаленном сервере через SSH
- Цветовые схемы и внешний вид MC (midnight commander)
- Переключение кодировок в MC
- Шпаргалка по горячим клавишам для файловых панелей MC (midnight commander)
- Ошибка NO_PUBKEY. Как найти GPG-ключ и добавить его в базу apt системы Ubuntu
- Установка драйвера wifi Asus wl-167g v3 (rtl8192) для Ubuntu 16.04 и 18.04
- Как настроить wifi из командной строки в Ubuntu
- Изменение имени сетевого интерфейса в Ununtu/Mint
- nmon — удобный инструмент для мониторинга Linux систем
- Ошибка: 502 bad gateway — connect() to unix:/run/php/php-fpm.sock failed (11: Resource temporarily unavailable)
- Команда history или работа с историей введенных команд
- Шпаргалка по архиватору 7z (7-Zip) в Linux Ubuntu/Mint
- Преобразование видео от 1080p до 720p с наименьшими потерями с использованием ffmpeg
- Как посмотреть все доступные шрифты в терминале (CLI)?
- Команда id — найти UID пользователя или GID
- Лучшие рекомендации по повышению безопасности для серверов OpenSSH
- Разрешения файлов директории .SSH
- Настройка Nginx FastCGI Cache для сокращения времени отклика сервера WordPress
- Как получить реальный IP-адрес пользователя в nginx за обратным прокси-сервером nginx
- Чем отличается прямой прокси от обратного прокси
- Руководство по iptables (Iptables Tutorial 1.1.19)
- Настройка автозапуска скриптов в Linux Ubuntu/Mint
- Устанавливаем оболочку bash про умолчанию
- SOCS5 прокси сервер DANTE — установка и настройка
- Сервис online настройки параметров сервера nginx
- nmblookup — аналог команды Windows nbtstat для Linux.
- Inxi — программа вывода информации о системе и железе в Linux
- dnstop — мониторинг и анализатор DNS-трафика
Linux 1. Какой uid у пользователя sit2? В какие группы он входит? 2. Почему попытка удалить пользователя не удалась, и
Откройте два терминала (в серверных Linux для переключения между терминалами (tty)
обычно используется сочетание клавиш Alt+F[1-5]). В одном из них получите права
суперпользователя используя команду sudo su:
Изучите как создать пользователя с домашним каталогом с помощью команды useradd
из справочной документации man
Используя useradd создайте пользователя «sit2» c домашним каталогом «sit2».
Установите пароль для нового пользователя «sit2» с помощью команды passwd sit2
Выйдите из суперпользователя командой exit
Войдите под первым терминалом в пользователя «sit», во втором в пользователя «sit2».
Посмотрите какой идентификатор получил пользователь «sit» и пользователь «sit2»
используя команду id
Посмотрите права доступа на домашний каталог пользователей «sit» и «sit2», используя
команду ls
Создайте файл под пользователем «sit2» с маской 0077 используя umask
Попробуйте прочитать его содержимое под пользователем «sit» используя команду cat
Измените права доступа на файл так, чтобы пользователь «sit» мог записывать в файл,
но не читать его.
Запишите текстовую информацию в файл из под пользователя «sit» используя
консольный текстовый редактор vi или nano
Проверьте права на файл, и прочитайте его содержимое из под пользователя «sit2»
Создайте каталог из под пользователя «sit2»
Установите права записи для группы пользователей на данный каталог
Добавьте пользователя «sit» в группу «sit2» с помощью команды usermod
Проверьте в какие группы входит пользователь «sit»
Создайте несколько файлов в каталоге, который был создан пользователем «sit2» из под
пользователя «sit».
Ознакомьтесь как удалить пользователя вместе с содержимым его домашнего каталога
из справочной документации
Удалите пользователя «sit2» вместе с его домашним каталогом.
1. Какой uid у пользователя sit2? В какие группы он входит?
2. Почему попытка удалить пользователя не удалась, и что нужно сделать для его удаления?
3. Какие права доступа установлены на домашний каталог пользователя «sit»?
4. Как рекурсивно изменить права доступа на файлы в каталоге?
5. Как можно осуществлять переключение между пользователями в рамках одного терминала?
Приручение черного дракона. Этичный хакинг с Kali Linux. Часть 6. Пост-эксплуатация. Способы повышения привилегий
Приветствую тебя, дорогой читатель, в шестой части серии статей «Приручение черного дракона. Этичный хакинг с Kali Linux».
Полный список статей прилагается ниже, и будет дополняться по мере появления новых.
Приручение черного дракона. Этичный хакинг с Kali Linux:
В прошлой статье мы рассмотрели основные методы эксплуатации уязвимостей в Linux и Windows системах при помощи модулей фреймворка Metasploit. Поговорили о таких вещах как типы полезной нагрузки, кодирование полезной нагрузки, а так же рассмотрели варианты соединения bind и reverse сессий. Однако, получение доступа к целевой системе, это лишь начальный этап проникновения, за которым следует пост-эксплуатация — процесс связанный с повышением привилегий, получения доступа к сторонним службам и закрепления в скомпрометированной системе. С учетом обширности данной темы, мы разобьем ее на несколько частей. В этот раз мы поговорим о способах повышения привилегий в скомпрометированной системе на примере Linux. Так что, дорогой читатель, заваривай чайку покрепче, усаживайся поудобнее в кресло и мы начнем.
По сути, вся эта тема с повышением привилегий в Linux/Unix системах (все же, большая часть сервисов в Enterprise работает именно на Linux/Unix подобных системах. Пользовательский сегмент не берем в расчет), держится на двух основных способах:
1) Использование уязвимостей компонентов самой системы (например, ее ядра)
2) Использование битов SUID/GUID
И если в случае с первым способом, мы говорим об уже знакомых нам эксплоитах, то второй способ заключается в поиске файлов с некорректно выставленными правами. Поэтому тут мы немного задержимся и изучим этот вопрос подробнее, для того чтобы лучше понимать, как это работает.
Для назначения прав во всех Unix-подобных системах используются три группы флагов, первая определяет права для владельца, вторая — права для основной группы пользователя, третья — для всех остальных пользователей в системе.
Для назначения прав файлам и каталогам используются флаги rwx: r — разрешает чтение из файла; w — разрешает запись в файл; x — разрешает выполнение файл.
Стоит отметить такой важный момент, что для каталогов, флаги rwx имеют несколько отличный смысл: r — позволяет читать только имена файлов в каталоге; x — позволяет иметь доступ к самим файлам и их атрибутам (но не именам); w имеет смысл только в сочетании с x, и позволяет (в дополнение к x) манипулировать с файлами в каталоге (создавать, удалять и переименовывать). w без x — не имеет никакого эффекта.
Ниже прилагается таблица распределения прав на файлы и каталоги в Linux (взято с https://help.ubuntu.ru
Для администрирования часто удобнее использовать не буквенное представление прав, а цифровое, в восьмеричном представлении. Так, например, права на файл всем и вся, соответствуют записи 777 (что аналогично символьному представлению rwxrwxrwx).
Существуют также специальные биты, такие как SUID, SGID и Sticky-бит. SUID, SGID влияют на запуск файла, а Sticky влияет на определение владельца объектов в каталоге. При их применении необходимо использовать не три восьмеричных цифры, а 4. Зачастую, в различной технической литературе права обозначаются именно 4-мя цифрами, например 0744.
Флаги прав доступа setuid и setgid позволяют запускать исполняемые файлы с правами владельца или группы исполняемого файла (как правило root пользователя). Такие исполняемые файлы, запущенные с повышенными привилегиями, могут получать доступ к более привилегированной информации. Пример таких программ vim, nmap, nano, cp, find, bash, less, more, ping.
И так, с теорией покончено, переходим к практике. И сегодня мы попрактикуемся немного в CTF, взломав машину под названием Happycorp1 (ссылки для скачивания всех тестовых машин я оставлял в самой первой статье).
Первым делом, запускаем arp-scan либо netdiscover для обнаружения всех хостов в локальной сети.
Видим адрес некой машины VMware. Он нам и нужен. Запускаем nmap с ключом -sV
и смотрим, что тут у нас есть.
Открытых портов на данной машине не много. Всего 4. Есть веб-сервер, и, обычно, если рассматривать машины заточенные под CTF, я начинаю поиски с исследования исходного кода стартовой html страницы (авторы частенько оставляют подсказки в виде закоментированных строк), а так же сканирую при помощи утилит nikto и dirb. Однако, у данной машины тут нет ничего интересного, за что можно было бы зацепиться. А вот порт 2049 очень даже интересен, поскольку на нем работает служба NFS (Network File System), представляющая из себя протокол сетевого доступа к файловым системам. Данная служба позволяет подключать (монтировать) удалённые файловые системы через сеть и позволяет работать с файлами на удаленном хосте так же, как и с локальными. В Linux системах есть на такие случаи специальная команда, которая поможет нам посмотреть список всех удаленных клиентов которые выполняли удаленное монтирование файловой системы на данной машине — showmount. Данная информация поставляется сервером mountd и сохраняется в файле /etc/rmtab. Если аргумент host не указан, используется имя, возвращаемое hostname.
Команда выглядит следующим образом: showmount -e 192.168.1.4
Отлично. Теперь мы знаем, что на целевой машине создан пользователь karl и у него есть свой домашний каталог внутри /home. Попробуем создать директорию и примонтировать к ней через службу NFS этот каталог.
Мы примонтировали каталог к созданной директории и можем вывести список его содержимого. К сожалению, просмотреть отдельные файлы у нас нет возможности ввиду отсутствия соответствующих прав. А теперь внимание, вспоминаем то, о чем я писал ранее и внимательно смотрим на список. Он состоит из нескольких колонок. В первой слева отображаются права на файлы и папки, а вот дальше идут те самые параметры GID и UID (идентификатор группы и пользователя), где мы видим значение 1001. Первое, что приходит в голову, это попробовать создать в локальной системе (на нашей машине с Kali) пользователя с UID 1001 и добавить его в группу с GID 1001. Так и поступим. Заморачиваться с именем пользователя я не стану и пусть его зовут так же karl, а группу назовем nfs. При желании созданного пользователя и группу в которую он входит всегда можно удалить командами deluser delgroup .
И так, мы создали группу присвоив ей нужное значение GID, и создали пользователя с домашним каталогом /home/karl и пользовательским идентификатором 1001.
Выведем список пользователей нашей системы и посмотрим, что у нас тут есть
В прошлой статье мы уже заглядывали в этот файл, в этот раз разберемся подробнее с его содержимым. Для начала обратимся к технической документации и выясним, что значит каждое из полей разделенных двоеточиями.
Username: первое поле представляет имя пользователя. Длина поля имени пользователя определяется от 1 до 32 символов.
Password: второе поле содержащее в себе символ «x» означает, что пароль хранится в зашифрованном виде в файле /etc/shadow. В ранних версиях Linux-систем он хранился тут же в зашифрованном виде. С учетом того, что шифрование MD5 не есть безопасно, позже схема хранения паролей была усовершенствована. В файле shadow к хэшированному паролю добавляется дополнительная строка символов для смешения в функции хеширования называемая соль.
User ID (UID): в третьем поле хранится идентификатор пользователя, который назначается каждому пользователю. Нулевой UID назначается пользователю root, а идентификаторы пользователей от 1 до 99 назначаются предопределенным или стандартным учетным записям. Дальнейшие UID от 100 до 999 назначаются системным административным учетным записям или группам.
Group ID (GID): четвертое поле представляет собой идентификатор группы. GID хранится в файле /etc/group.
Information about User ID: пятое поле предназначено для комментариев. В этом поле мы можем указать полное имя пользователя, либо оставить его пустым.
Home directory: в шестом поле отображается расположение домашнего каталога, назначенного текущему пользователю.
Command shell: последнее поле содержит путь к оболочке используемой для входа в систему.
Самое время проверить сработает ли это. Попробуем переключиться в консоли на пользователя karl и зайти от его имени в каталог .ssh в примонтированном разделе
Отлично! Получив соответствующие права мы смогли зайти в недоступный нам ранее каталог. В нем хранится текстовый файл user.txt внутри которого мы обнаружим первый флаг, а так же авторизованный, публичный и приватный ключи для доступа по SSH. Исследуем каждый из элементов.
Внутри authorized_keys и id_rsa.pub мы видим в конце имя пользователя который создавал сессию karl. С учетом, того, что этот Карл по неосторожности оставил нам в этой папке закрытый ключ, мы можем с помощью него получить доступ к целевой машине по SSH следующей командой ssh -i
Однако, тут нас будет ждать неудача. Ключ защищен парольной фразой, без которой подключиться не получится. Что же делать в этом случае? Тут нам на помощь приходит замечательный парень которого зовут Джон! John (он же John the Ripper) — мощнейший инструмент брутфорса паролей по их хэшам. Он способен создавать словари любой сложности, а также извлекать хеш из файла, что является одной из самых сильных сторон john по сравнению с аналогичными программами.
Для начала вернемся к нашему приватному ключу и скопируем его содержимое
от места ——BEGIN RSA PRIVATE KEY—— до места ——END RSA PRIVATE KEY—— после чего вставим в созданный редактором vim либо nano файл на нашей локальной машине.
В моем примере я создал файл для ключа с именем rsa-key в домашнем каталоге пользователя karl. После того, как мы вставили скопированный ключ, жмем Ctrl + X и на вопрос Save modified buffer? — отвечаем y (yes) File name to write – жмем Enter.
Далее, нам необходимо найти в программах Kali коллекцию предустановленных парольных словарей, и запустить процесс распаковки таких как rockyou (именно он нам понадобится).
Храниться все они будут в каталоге /usr/share/wordlists
После этого нам необходимо преобразовать файл ssh-ключа в удобный для работы с john формат. Для этого в его составе имеется специальный конвертер под названием ssh2john. Найти его и все остальные модули для Джона можно в каталоге /usr/share/john
Переместимся в эту директорию и запустим процесс конвертации командой
python ssh2john.py /home/karl/rsa-key > /home/karl/ssh2john.txt
После этого можно смело приступать к процессу брутфорса. Команда будет следующая:
john —wordlist=/usr/share/wordlists/rockyou.txt /home/karl/ssh2john.txt
Ждем несколько секунд и готово! Парольная фраза ключа sheep. Теперь-то мы точно готовы к подключению. Возвращаемся к учетке Карла и переходим в директорию /mnt/happycorp/.ssh где лежит оригинальный ЗАЩИЩЕННЫЙ ключ (наш скопированный для работы с john не является защищенным и поэтому от него уже толку нет никакого. Свою роль он выполнил).
И так, вроде мы подключились но тут вместо привычного удаленного терминала нас встречает rbash (restricted shell bash), командная оболочка операционной системы семейства Linux/Unix, которая может ограничивать некоторые действия пользователей. Вот же зараза! Придется нам переподключаться с возможностью использования удаленного псевдотерминала (вариант с запуском python pty внутри rbash не работает, поскольку мы получаем уже на старте ограниченную shell-оболочку). Вспоминаем скрипт на python:
python -c ‘import pty; pty.spawn(«/bin/sh»)’
Отсюда нам при создаваемом ssh соединении понадобится /bin/sh
Команда будет выглядеть так:
Ну, вот! Совсем другое дело! Мы успешно подключились к целевой машине, но под пользователем с ограниченными правами. Соответственно, мы не можем выполнять никаких действий требующих повышенных прав и полномочий (создание новых групп и пользователей, редактирование системных файлов и т. д.). И вот тут мы подходим к тому самому моменту, ради которого выполнялись все предыдущие действия — повышение привилегий. И помогут нам в этом те самые файлы и утилиты которые запускаются с привилегированными правами от root, но при этом могут использоваться и обычными пользователями (например, команда ping). Для того, чтобы найти такие файлы в системе необходимо ввести следующую команду:
find / -perm -u=s -type f 2>/dev/null
Перед нами появится следующий список, в котором присутствуют различные файлы, в том числе файл команды cp, которая позволит нам копировать что угодно и откуда угодно не смотря на наши ограниченные права пользователя в данной системе! А это значит, что мы можем, к примеру, методом копирования заменить файл passwd в директории /etc/ на свой отредактированный вариант. Что ж, это будет весьма интересно. Приступим!
Для начала откроем содержимое файла /etc/passwd, и, скопировав его, создадим редактором nano новый файл с точно таким же названием в директории /var/www/html.
И тут нам необходимо вспомнить важный момент касаемо того, как устроен файл passwd (я писал об этом ранее в начале статьи). Вместо знака x в ранних версиях Linux тут стояли зашифрованные пароли. Значит, нам необходимо добавить строку для нового пользователя с правами как у root, соблюдая все правила форматирования данного файла и вместо x подставить зашифрованный в MD5 пароль этого пользователя. В этом деле нам поможет такая утилита как mkpasswd
Параметров у нее не так уж и много, нам понадобится следующий вариант команды
Я создал пароль «bingo» и его закодированный в MD5 вариант я подставлю в то самое поле вместо значения x
Отлично! У меня есть пользователь demigod с правами суперпользователя root (я просто скопировал строку с параметрами пользователя root и отредактировал первые два значения), а значит, остается лишь подменить мой отредактированный файл на целевой машине.
Подготовим среду, для обмена файлами между нашей машиной с Kali и атакуемой машиной. Не будем изобретать велосипед и воспользуемся проверенным способом из прошлой статьи — веб-сервер на базе Apache. Запустим его и проверим состояние:
systemctl start apache2.service
systemctl status apache2.service
Далее, при помощи команды wget скачиваем с нашего веб-сервера отредактированный файл passwd
Замечательно! Остается лишь подменить файл на исходный в каталоге /etc/ и попробовать сменить пользователя на demigod
Бинго. Мы получили заветную решетку root пользователя в терминале. Самое главное, помнить, что подобные эксперименты можно проводить лишь на собственных ресурсах либо с письменного соглашения тестируемой стороны. В противном случае, можно попасть под статью в уголовном кодексе о неправомерном доступе к компьютерной информации и «получить» совершенно другую решетку. Остается забрать последний флаг в папке /root
Подводя итоги темы касаемо повышения привилегий в любой системе, при ее обслуживании и конфигурации, стоит помнить о двух ключевых моментах:
1) Если даже система работает стабильно годами, это вовсе не значит, что она совершенна и ее ни в коем случае нельзя трогать. Именно любимое правило многих сисадминов «Если работает — не трогай!» приводит чаще всего к тому, что с годами в этой сверхстабильной системе накапливаются дыры в безопасности, и в конечном итоге, в один прекрасный день ты осознаешь, что твой сервер уже и не принадлежит тебе…
2) Когда в системе создается какой-либо пользователь или добавляется «для удобства работы» какой-либо сервис, убедись в том, что настройки этого сервиса и права данные этому пользователю не позволят в будущем привести к печальным и необратимым последствиям.
На этой ноте я прощаюсь с тобой, мой дорогой читатель, до новых встреч, в цикле статей «Приручение черного дракона. Этичный хакинг с Kali Linux”. И самое главное, помни всегда, что.