Се­год­ня раз­берем на при­мере ту самую ситу­ацию, ког­да админ, нас­тра­ивая бэкапы или пар­синг, исполь­зовал в cron шаб­лоны под­ста­нов­ки и, не подоз­ревая нелад­ного, открыл хакерам пря­мой путь к рут‑дос­тупу.

Cron

Ути­лита cron — это стан­дар­тный пла­ниров­щик задач в Unix-подоб­ных опе­раци­онных сис­темах, который поз­воля­ет авто­мати­чес­ки выпол­нять коман­ды или скрип­ты по задан­ному рас­писанию. Работа­ет как фоновый сер­вис (демон), который регуляр­но про­веря­ет кон­фигура­цион­ные фай­лы и запус­кает задания в нуж­ное вре­мя. Рас­писание зада­ется с помощью спе­циаль­ных выраже­ний в фай­ле crontab, где ука­зыва­ются минуты, часы, дни месяца, месяцы и дни недели. Cron широко исполь­зует­ся для авто­мати­зации сис­темно­го адми­нис­три­рова­ния, нап­ример для резер­вно­го копиро­вания, очис­тки логов, обновле­ния дан­ных и выпол­нения пери­оди­чес­ких задач без учас­тия поль­зовате­ля.

Wildcard-ата­ки через cron исполь­зуют гло­баль­ные шаб­лоны в зап­ланиро­ван­ных задачах Unix/Linux. Что­бы не перечис­лять кон­крет­ные фай­лы в пап­ке, админ может исполь­зовать *, [] или ?. Звез­дочка * обоз­нача­ет любое сочета­ние сим­волов. Клас­сичес­кий при­мер уяз­вимой записи в cron:

* * * * * cd /var/www/html && tar -czf /backup/html.tgz *

Обо­лоч­ка перей­дет в дирек­торию /var/www/html и выпол­нит архи­виро­вание всех вло­жен­ных фай­лов и папок. В архив попадет все, что есть в пап­ке и к чему есть дос­туп у поль­зовате­ля, соз­давше­го задачу.

Час­то, что­бы избе­жать проб­лем с пра­вами, скрип­ты бэкапов запус­кают от име­ни поль­зовате­ля с высоки­ми при­виле­гиями, вплоть до root. Неопыт­ные адми­ны не видят в этом проб­лемы, потому что коман­да кажет­ся безопас­ной.

Бо­лее тон­кую нас­трой­ку поз­воля­ет выпол­нить знак воп­роса ?. Воп­роситель­ный знак — это один любой сим­вол. Нап­ример, под шаб­лон ?.txt под­ходят тек­сто­вые фай­лы, наз­вание которых сос­тоит толь­ко из одно­го сим­вола.

Ес­ли нуж­но жес­тче огра­ничить рам­ки, мож­но исполь­зовать квад­ратные скоб­ки []. Внут­ри ско­бок ука­зыва­ем диапа­зон: под шаб­лон [0-9].txt под­ходят име­на фай­лов, сос­тоящие из одной циф­ры: 0.txt, 7.txt и так далее. Чем стро­же рам­ки, тем слож­нее про­вес­ти ата­ку.

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

 

Проблемы glob

В ата­ке роль cron сво­дит­ся к запус­ку от име­ни поль­зовате­ля с повышен­ными при­виле­гиями. Нап­ример, при соз­дании бэкапа может пот­ребовать­ся архи­виро­вать фай­лы, к которым поль­зователь www-data не име­ет дос­тупа.

Ос­новную работу выпол­няет glob — один из эле­мен­тов обо­лоч­ки Linux.

Glob

Glob — это механизм сопос­тавле­ния строк с шаб­лонами, широко исполь­зуемый в Unix-подоб­ных сис­темах и язы­ках прог­рамми­рова­ния для поис­ка фай­лов и обра­бот­ки путей. Он поз­воля­ет задавать шаб­лоны с исполь­зовани­ем спе­циаль­ных сим­волов, таких как *, ? и диапа­зоны в квад­ратных скоб­ках, что­бы выбирать груп­пы фай­лов по име­ни. Glob-шаб­лоны про­ще регуляр­ных выраже­ний и ори­енти­рова­ны имен­но на сопос­тавле­ние имен фай­лов и путей.

Пе­ред выпол­нени­ем сис­темной коман­ды с шаб­лоном, нап­ример *, shell переда­ет работу glob. Glob ска­ниру­ет дирек­торию и воз­вра­щает готовый набор фай­лов.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии