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 сканирует директорию и возвращает готовый набор файлов.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
