0
Другие записи за это число:
2013/09/12 - ошибки корпоративной сети
<< предыдущая заметкаследующая заметка >>
12 сентября 2013
Добро пожаловать в ботнет!

За последний месяц мне пришло сразу несколько предложений установить на сайте рекламный блок с автоматически ротирующимися SEO-ссылками. Но моя рекламная политика до сих пор позволяла устанавливать ссылки только вручную — мне казалось, что именно здесь проходит грань между честной рекламой и SEO-накруткой. Я понял, что у меня нет четкого понимания и написал письмо в Яндекс с просьбой пояснить, где проходит грань между рекламой и накруткой. За две недели Яндекс ничего мне не ответил, и тогда я сформулировал (в UPD) свои принципы, по которым рекламный блок ссылок нельзя считать накруткой лишь на том основании, что ссылки вписаны не руками, а механизмом рекламной сети.

А вот с самим механизмом, который мне предложили (21 файл PHP общим объемом 256кб), обнаружились проблемы.

Date: Thu, 12 Sep 2013 17:02:40 +0400
From: Leonid Kaganov <lleo@lleo.me>
To:   *****
Subj: Re: Сотрудничество.

*****, добрый день.

Получил архив с кодом. Очень много файлов, очень велик общий объем кода, очень много времени и сил потребуется на его аудит.

Но даже беглый взгляд показывает, что пакет содержит, например, систему теневых самообновлений:

// ЗАГРУЗКА ОБНОВЛЕНИЙ. МОЖЕМ ОБНОВИТЬ ЛЮБЫЕ ФАЙЛЫ
if(move_uploaded_file($_FILES['updateLinkatorFile']['tmp_name'],$fileName)) {

На моем сайте это недопустимо, потому что он является не только моей собственностью, но и движком-маткой, с которого происходят обновления (хотя и не теневые) всех остальных сайтов, где установлен мой движок.

Грубо говоря, если ваш сайт будет взломан хакерами, то они получат мгновенный доступ не только к вашему серверу, но и к моему. А это уже поставит под угрозу и все остальные сервера, где используется мой
движок (если их админ решит сделать апгрейд, не зная, что мой сервер захвачен).

Кроме того, вообще не факт, что ваш обширный пакет заработает с моим движком — они могут конфликтовать, потому что оба претендуют на работу с .htaccess и остальными ресурсами.

Варианта я вижу два:

1. Вы присылаете мне один короткий PHP-файл, который занимается только связью с вашей базой и выдачей блока ссылок, и не содержит ни руткитов, ни теневых самообновлений. Наверняка у вас такой простой вариант есть. Все остальное я сделаю сам.

2. Вы устанавливаете ваш могучий самообновляющийся пакет на собственном сервере, а мне даете код iframe-окна, куда будет подгружаться блок ссылок. И я его вставляю в код своей страницы.

Надеюсь на понимание.

Как видите, я написал мягко, но вообще остался в некотором шоке. А что, господа админы, вы реально ставите на свой сайт внешний код без аудита?

И второй вопрос: что, это теперь нормально предлагать для установки PHP-код, который умеет САМООБНОВЛЯТЬСЯ в произвольный момент без ведома админа? Если я когда-нибудь сделаю в движке возможность его обновить по инициативе извне — застрелите меня, пожалуйста.

А потом мы удивляемся, откуда получаются ботнеты.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Linux Firefox
 Санкт-Петербург
3
0
SunChaser
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
какой-то из линуксовых драйверов прославился тем, что добавлял
%users ALL=(ALL) NOPASSWD: ALL
в sudoers

еще прикол в том, что провести аудит у многих не хватит квалификации
Linux Firefox
 Москва
2
0
Леонит Каганофф
В смысле, любой юзер сможет сделать sudo? Это неаккуратненько, да. Но для личного компа не так критично.

А вот сверлить дыру, через которую в любой момент на сервер можно залить произвольный код - это за гранью, мне кажется ;)
Linux Firefox
 Санкт-Петербург
1
0
SunChaser
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
я не помню что это был за драйвер, но если так убдет действовать драйвер сетевухи — уязвимой окажется куча серваков. к счастью, у сетевух-то практически все дрова в ядре
Linux Firefox
 Москва
1
0
Леонит Каганофф
Кажется, я помню ;) Драйвер USB-свистка?
Windows Firefox
 Израиль
0
0
braintunic
Это не городская легенда?
Что-то я не припомню такую историю.
Разве что это был какой-то самодельный патч в какой-то "локализованной" Линукс версии?
Linux Firefox
 Москва
1
0
Леонит Каганофф
Да нет, вроде даже у меня в блоге обсуждалось:

См коммент:

http://lleo.me/dnevnik/2012/06/25_megafon.html#119813

С ссылкой на источник:

http://habrahabr.ru/post/131302/
Windows Firefox
 Израиль
0
0
braintunic
Да, спасибо, вижу - USB/3G модем от Huawei и гадкий самодельный скрипт к нему...
Кошмар, дыра размером с орбиту Юпитера))
Linux Firefox
 Москва
1
1
Леонит Каганофф
А почему вы это называете дырой? Вон Windows вообще живет без разделения прав - и ничего. Да и у меня, честно сказать, на личном ноутбуке для удобства всегда sudo разрешено. Понятно, что без ведома юзера это делать неэтично, но "дыра размером с орбиту Юпитера" - это перебор.

Кстати, если вы такой специалист в sudo, скажите: вот я на Убунте случайно убрал галочку с правом администрирования у основного моего юзера. Это всё теперь, переставлять Убунту заново? Других способов восстановить доступ нет?
Windows Firefox
 Израиль
2
0
braintunic
Почему дыра?
Да потому что теперь ЛЮБОЙ юзер, любым способом попавший на эту систему (вот скажем, юзер 'mysql'), может запустить, скажем, команду "sudo rm -rf /", и тем самым удалить все до единого файлы со всех дисков.
Любой юзер - теперь суперюзер, нет вообще никакой защиты.
Надеюсь, что на вашем личном ноуте вы разрешаете sudo только для себя (для одного юзера, имеющего пароль), а не для всех.

На Windows такого размера дыра будет в случае отсутствия пароля администратора.

Ваш вопрос про право администрирования. Не совсем понял, что значит "убрал галочку" - убралась нужная строчка из sudoers? или юзер удален из группы?
Я не специалист в Убунту, тем более через UI. Но в любом случае, если это ваш личный компьютер, то вы должны знать пароль суперюзера. Тогда делаете логин как суперюзер, и восстанавливаете права вашего юзера.
Если не знаете пароль суперюзера, можно попробовать загрузиться с флешки (если BIOS разрешит), подмонтировать диск, и исправить проблему. В крайнем случае, вынуть диск и присобачить его к другому компьютеру, и там исправить.
Linux Firefox
 Москва
0
1
Леонит Каганофф
И что же это за таинственный "юзер", который так свободно попадет на личный ноутбук? :)

По поводу второго - видимо, вы действительно не специалист по Убунте, это особый Линукс. Насколько я понял, там вообще нет суперюзера. По крайней мере пароль для root при установке не создавался и мне неизвестен.
Windows Firefox
 Израиль
2
0
braintunic
Первое. Линукс (в отличие от Windows) система многопользовательская по умолчанию.
Даже если вы не подключены ни к какой directory service (типа NIS или LDAP), всегда есть локальные юзеры, определенные в /etc/passwd, такие как mail, backup, irc, ntp, sshd и т.д. Под аккаунтом этих юзеров бегут процессы-сервисы (демоны), и некоторые из этих процессов умеют запускать командную строку в соответствии с указаниями клиентов с других машин - поэтому предоставление им прав суперюзера потенциально смертельно.

Второе. Хоть я и не специалист в Убунту, у меня есть доступ к нескольким Убунту машинам. Что я вижу:

# head -1 /etc/issue /etc/passwd
== /etc/issue ==
Ubuntu 12.04.2 LTS
== /etc/passwd ==
root:x:0:0:root:/root:/bin/bash

То есть, root юзер таки существует.
Неужели возможна установка Убунту без root юзера? Странно, это уже как-бы и не Юникс выходит :)
Linux Firefox
 Москва
0
1
Леонит Каганофф
Приведите конкретный пример: как я могу запустить командную строку от имени mail, backup, irc, ntp или sshd с посторонней машины без знания паролей своего ноутбука. Если такого примера нет - то разговор ни о чем. Если есть - то это и будет вселенская дыра.

По поводу Убурнты: если вы ее попробуете ради интереса установить, вы увидите, что там в принципе не предусмотрено момента установки пароля для root.
Windows Firefox
 Израиль
2
0
braintunic
Про пароль для root:

http://www.thegeekstuff.com/2009/09/ubuntu-tips-how-to-login[...]

Выходит, такое архитектурное решение приняли в Убунту - root юзер существует, но по умолчанию без пароля и с запрещенным логином.
Windows Firefox
 Израиль
0
0
braintunic
Ну что же, если вы действительно используете вашу машину, как однопользовательскую, не позволяя никому никогда делать логин в вашу систему, то я беру назад свои слова про "дыру размером с Юпитер" (для данного случая).
Система, тем не менее, уязвима. Хоть хакеру и придется найти конкретный exploit для взлома, но теперь (с открытым для всех sudo) эта задача на порядок проще.
Windows Firefox
 Израиль
1
0
braintunic
Думаю, вот эта статья, насчет Command Injection Vulnerabilities, релевантна вопросу "как я могу запустить командную строку с посторонней машины":
https://www.golemtechnologies.com/articles/shell-injection
Linux Firefox
3
0
mail/ivn86
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
По приведённой же Вами ссылке
ALL ALL=(ALL) NOPASSWD:ALL
-- это выполнение ЛЮБЫМ пользователем ЛЮБОЙ команды суперпользователя без требования пароля. Т.е. фактически уровень безопасности WinXP с админским автологином.
>>И что же это за таинственный "юзер", который так свободно попадет на личный ноутбук? :)
Запустите sudo cat /etc/passwd | grep sh
Вы всех этих товарищей знаете в лицо? А у них есть право входа в систему (оболочки bash,sh), в том числе удалённого через SSH. Поставили Вы себе Steam, и теперь он админ на Вашем буке, круто, правда? Как правило любой демон и драйвер (HPLIP, например) создают собственного пользователя (в большинстве случаев nologin, но чем чёрт не шутит). Если у Вас на буке стоИт Apache, то есть пользователь www-data, любезно открывающий к себе доступ по HTTP и выполняющий php exec().
>> Убунту особый Линукс
root в нём есть, но вход под ним выпилен, а все полномочия делегированы первому пользователю, т.е. Вам. Но подняться до root можно через sudo su -
Linux Ubuntu Firefox
 Челябинск
3
0
sapa
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> Запустите sudo cat /etc/passwd | grep sh

sudo не нужен, /etc/passwd и так всем доступен для чтения. cat (в связке с пайпом) тоже не нужен, вместо него придумали значок < . Впрочем и значок < не нужен, просто файл в котором искать передайте вторым аргументом в grep.
Mac Safari
 Израиль
0
0
braintunic
Ну если уж придираться по полной программе, то поиск шелл должен быть только в конце строки, в последнем поле, вот так:
grep 'sh$' /etc/passwd
(а иначе будут найдены несколько нерелевантных аккаунтов)
Linux Firefox
0
0
Л. Янукович
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> sudo su -

Правильно: sudo -i
Linux Firefox
0
0
Л. Янукович
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> Да потому что теперь ЛЮБОЙ юзер, любым способом попавший на эту систему (вот скажем, юзер 'mysql'), может запустить, скажем, команду "sudo rm -rf /", и тем самым удалить все до единого файлы со всех дисков.

Ужас какой.

%users - это члены системной группы users, в которую принято прописывать учетные записи _людей_, которые этой системой пользуются. Пользователей mysql, daemon и даже root (sic!) в этой группе в нормальных условиях быть не должно.

То есть, остается путь входа только через то, что запущено пользователем, что уже значительно меньше Юпитера. Еще и подключатся другие механизмы защиты типа requiretty, но об этом не будем.

Да, и чтобы два раза не вставать, rm -rf / уже не работает. Работает или rm -rf --no-preserve-root /, или rm -rf /* - на ваше усмотрение. И неважно, sudo или не sudo, вшито в coreutils уже скоро десять лет как.

PS Хотя, конечно же, писать в sudoers без спроса, да еще и такие спорные вещи, нехорошо. Лучше было бы вместо %users вписать %root, %wheel или %sudo (в зависимости от принятых в дистрибутиве традиций), и вместо ALL вписать только то, что нужно.
Mac Safari
 Израиль
1
0
braintunic
Вы наверное не посмотрели настоящий код этой гадости (по ссылке от Лео, на Хабре).
Там вовсе не %users используется в первом поле, а ALL, то есть именно любой юзер становится суперюзером, без всякой защиты.
Кстати, это гадкий установочный скрипт также отключает механизм защиты по requiretty.
Linux Firefox
0
0
Vshmuk
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Дописать в grub: init=/bin/bash, загрузиться, перемонтировать корень в rw, сменить пароль или группу пользователя

UPD: А, ну Sappa уже ответил, да
Windows Firefox
2
1
Dmitry X
Все актуальные ОС Windows построены на ядре NT и имеют нормальное разделение прав. То, что пользователь сидит под админской учетной записью потому, что его раздражает вводить пароль при каждом внесении изменений в конфигурацию системы — проблемы данного конкретного пользователя. Некоторые даже UAC отключают, потому что для запуска программы в привилегированном режиме надо (о ужас!) целых три лишних щелчка мышкой сделать.
Windows Firefox
1
0
Dmitry X
Это «наследственная болезнь» Windows. Приучили программистов к плохому, а пользователь наслаждается последствиями.
Windows Firefox
3
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Об этом и речь. Даже если в теории «ядро NT имеет нормальное разделение прав», на практике вся помойка вокруг него не позволяет это разделение эффективно использовать. И это действительно «наследственная болезнь» ОС, а не просто «проблемы данного конкретного пользователя».
Windows Firefox
1
1
Dmitry X
В общей идее (про «наследственную болезнь»), вы правы. Однако утверждать, что компания Microsoft целиком и полностью ответственна за такое положение дел не корректно. Разработчик платформы — не нянька для разработчиков пользовательского ПО. Ни в Linux, ни в Mac, ни в Windows, ни в какой другой экосистеме. То, что MS иногда идет на уступки (SimCity) не отменяет общего принципа.

Разделение прав появилось достаточно давно и с тех пор вышло много новых версий программных продуктов (если ваш программный продукт — не экскременты динозавра времен Win95). Кто помешал разработчикам пользовательских приложений внимательно прочитать гайдлайны и модифицировать свои продукты для поддержки Windows XP? Вспоминается холивар 2011 года (гуглить по ключевым словам adobe flash glibc memcpy memmove).

Лично я в таких вопросах поддерживаю позицию разработчика платформы, отраженную в официальной документации. Массовое использование недокументированных возможностей без необходимости — программерская ересь и при сопутствующем обломе виноват не разработчик платформы (он в документации как раз все предусмотрел и объяснил), а горе-разработчик пользовательского приложения. Только если недокументированная возможность приносит больше пользы, чем вреда можно рассуждать об исключении из правила.

Но даже если принять позицию разработчика пользовательского приложения, то все равно использование новых функций безопасности получается выгоднее с точки зрения безопасности. Нужны разрешения на запись в %ProgramDir%, но нельзя? OK, вот вам UAC Virtualization, пользуйтесь на здоровье. Не устраивает — используйте сторонние продукты для виртуализации приложений. У меня сравнительно старый MicroCap запускается и работает в среде Xenocode без единого чиха (не считая классического глюка с отображением кириллицы, но он появляется и в обычной среде). Не получается — используйте виртуальную машину.

В повседневной работе я пользуюсь учетной записью обычного пользователя с максимальным уровнем безопасности UAC и мне очень редко требуется вводить пароль администратора. Резидентный антивирус отсутствует, есть антивирусный сканер, которым регулярно проверяются диски. За два года не было обнаружено ни одного вируса.

Единственный на 100% заслуженный упрек в сторону Windows — это то, что настройки системы безопасности «из коробки» слабоваты и их надо дорабатывать напильником, а это, по понятным причинам, непродвинутому пользователю не по силам.
Windows IE
3
1
D.iK.iJ
Посылайте лесом этих гениев. Советую работать с sape.ru. Крупнейшая биржа. 7 лет уже работаю и зарабатываю с ними. А большинство остальных - даже внимания не стоят. В лучшем случае - посредники. В худшем - вы просто не знаете стоимость 1 ссылки. :)
Кстати, код у них из своей папки никогда никуда не вылазит и обновляет только свой файлик с данными.
Linux Firefox
3
1
andruxa
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
lleo, скрипт прислали малолетние долбоёбы, независимо от их возраста, общественного положения и т.д.

аргументирую:
1. Скрипты на php. Это далеко не быдлоязык, как принято считать, просто не все, хотя и большинство вебсерверов его используют, там может быть и python, и asp, и какой-нибудь парсер Лебедева (утрирую).
2. На сайте уже установлены скрипты, со своей логикой, разграничением прав для пользователей по ролям, шаблонизаторами, и многим другим. Предлагать внедрить туда свой скрипт, в надежде, что всё состыкуется на 100% без конфликтов - это слабоумие и отвага.
3. Большой объём кода. Чтобы организовать ротацию ссылок, он не нужен.

Всё вышесказанное говорит о том, что скрипт тебе прислали люди, у которых дури в руках, которыми они набирают код, значительно больше, чем мозгов, чтобы задуматься "Зачем я это делаю?".
Это малолетние долбоёбы, lleo, без вариантов.

Ставить себе на сервер скрипты от малолетних долбоёбов - дело хозяйское, конечно.

Автоматическое обновление оставлю без комментариев.

По уму, такой сервис должен по определенной ссылке с авторизацией по секретному ключу, отдавать либо готовый html, который ты вставляешь в определенную область страницы (менее предпочтительно, т.к. вёрстка у всех разная и несколько сложнее контролировать, что там пришло в этом html), либо возвращать данные в каком-нибудь JSON, который ты разбираешь у себя на сервере и формируешь из него необходимый блок html.

Как-то так.
Linux Firefox
 Москва
1
0
Леонит Каганофф
У меня не было времени изучить, но возможно это какое-то подобие микро-CMC с дополнительным функциями - типа организации логов, фильтрации нежелательных тематик и т.п.

В общем, у меня нет оснований быть излишне категоричным и прибегать к ругательным терминам, я не изучал код. Быть может, там и обновления не самовольные, а подчиняются какому-то закону. Не могу сказать наверняка.

Я запросил пояснения, но мне пока не ответили. Если вам интересно возиться - могу прислать zip для изучения.
Linux Firefox
3
1
andruxa
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
тут вопрос не столько в чистоте и правильности кода, сколько в его наличии вообще

не должно быть никакого php-кода, совсем:
- на сервере может не оказаться php-интерпретатора. Маловероятно, но тем не менее.
- даже если он там имеется, нет никаких гарантий, что скрипт правильно заработает: начиная от конфликтов с уже имеющимися скриптами, и заканчивая конфликтами версий php и установленных расширений.

опыт, сын ошибок трудных, подсказывает, что если люди не задумались о таких примитивных вещах, то ничего хорошего от их кода ждать не стоит
"малолетние д...бы", в данном случае, это не ругательство, увы
за категоричность приношу извинения, немного накипело

перечитал топик - айфрейм не подойдёт: профит ведь в скармиливании ссылок поисковым ботам, они должны быть именно на странице твоего сайта

а ещё просьба не расценивать обращение на ты как фамильярность, и обращаться ко мне тоже на ты
а не то я завыкаю в ответ )

код можно отправить на почту, указанную в регистрации, гляну
Windows Safari Chrome
1
0
Корякин Сергей
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
move_uploaded_file не такая и страшная вещь. Запись файлов идет от имени юзера, который запускает сервер, обычно ему запрещено писать куда угодно. Обычно такому пользователю разрешены конкретные каталоги (upload) и все. Обновить-уронить всю систему не так и просто.
Вероятно, в этой системе имеется возможность подкачивать банеры и картинки для удобства ротации рекламы?

260к в архиве или суммарно. Для микро-смс не так и много.
Windows Safari Chrome
1
0
Корякин Сергей
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Хм... почему окно отправки сообщения не пропадает после нажатия на кнопку?
Windows Safari Chrome
0
1
Корякин Сергей
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
move_uploaded_file не такая и страшная вещь. Запись файлов идет от имени юзера, который запускает сервер, обычно ему запрещено писать куда угодно. Обычно такому пользователю разрешены конкретные каталоги (upload) и все. Обновить-уронить всю систему не так и просто.
Вероятно, в этой системе имеется возможность подкачивать банеры и картинки для удобства ротации рекламы?

260к в архиве или суммарно. Для микро-смс не так и много.
Windows Safari Chrome
0
1
Корякин Сергей
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
move_uploaded_file не такая и страшная вещь. Запись файлов идет от имени юзера, который запускает сервер, обычно ему запрещено писать куда угодно. Обычно такому пользователю разрешены конкретные каталоги (upload) и все. Обновить-уронить всю систему не так и просто.
Вероятно, в этой системе имеется возможность подкачивать банеры и картинки для удобства ротации рекламы?

260к в архиве или суммарно. Для микро-смс не так и много.
Mac
0
0
Max Otto von Stierlitz
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Явно ребята зарабатывают продажей "антивирусов" и виагры. Кстати, айфрейм вас то защитит, но не спасет юзеров, не ведитесь. Особенно если девайс который его увидит с шестой Явой или не дай бог с ХР. Вам не ответят кстати, не ждите))) как только скамер понимает, что админ или владелец не лох, он забивает на таргет.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Ну да, мне не ответили вообще ;)
А что касается iframe - тут моя позиция четкая: я не могу защитить юзера от всех дыр его операционки. Я защищаю только свою зону ответственности.

всего комментариев: 49

<< предыдущая заметка следующая заметка >>