Cron
Утилита cron — это стандартный планировщик задач в Unix-подобных операционных системах, который позволяет автоматически выполнять команды или скрипты по заданному расписанию. Работает как фоновый сервис (демон), который регулярно проверяет конфигурационные файлы и запускает задания в нужное время. Расписание задается с помощью специальных выражений в файле crontab, где указываются минуты, часы, дни месяца, месяцы и дни недели. Cron широко используется для автоматизации системного администрирования, например для резервного копирования, очистки логов, обновления данных и выполнения периодических задач без участия пользователя.
Wildcard-атаки через cron используют глобальные шаблоны в запланированных задачах Unix/Linux. Чтобы не перечислять конкретные файлы в папке, админ может использовать *, [ или ?. Звездочка * обозначает любое сочетание символов. Классический пример уязвимой записи в cron:
* * * * * cd /var/www/html && tar -czf /backup/html.tgz *
Оболочка перейдет в директорию / и выполнит архивирование всех вложенных файлов и папок. В архив попадет все, что есть в папке и к чему есть доступ у пользователя, создавшего задачу.
Часто, чтобы избежать проблем с правами, скрипты бэкапов запускают от имени пользователя с высокими привилегиями, вплоть до root. Неопытные админы не видят в этом проблемы, потому что команда кажется безопасной.
Более тонкую настройку позволяет выполнить знак вопроса ?. Вопросительный знак — это один любой символ. Например, под шаблон ?. подходят текстовые файлы, название которых состоит только из одного символа.
Если нужно жестче ограничить рамки, можно использовать квадратные скобки [. Внутри скобок указываем диапазон: под шаблон [ подходят имена файлов, состоящие из одной цифры: 0., 7. и так далее. Чем строже рамки, тем сложнее провести атаку.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Проблемы glob
В атаке роль cron сводится к запуску от имени пользователя с повышенными привилегиями. Например, при создании бэкапа может потребоваться архивировать файлы, к которым пользователь www-data не имеет доступа.
Основную работу выполняет glob — один из элементов оболочки Linux.
Glob
Glob — это механизм сопоставления строк с шаблонами, широко используемый в Unix-подобных системах и языках программирования для поиска файлов и обработки путей. Он позволяет задавать шаблоны с использованием специальных символов, таких как *, ? и диапазоны в квадратных скобках, чтобы выбирать группы файлов по имени. Glob-шаблоны проще регулярных выражений и ориентированы именно на сопоставление имен файлов и путей.
Перед выполнением системной команды с шаблоном, например *, shell передает работу glob. Glob сканирует директорию и возвращает готовый набор файлов.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
