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

info

Пол­ный текст этой статьи дос­тупен без под­писки бла­года­ря спон­сору — ком­пании RUVDS, одно­му из самых передо­вых хос­тинг‑про­вай­деров VPS/VDS-сер­веров. RUVDS пред­лага­ет вир­туаль­ные сер­веры в десяти дата‑цен­трах уров­ня TIER3 и выше по все­му миру, низ­кие цены от 30 руб­лей в месяц, удоб­ный мар­кет­плейс и уста­нов­ку популяр­ных обра­зов в один клик.

 

Фишинг

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

Из­дав радос­тный боевой клич, ты перехо­дишь по ссыл­ке и толь­ко тут, если повезет, замеча­ешь что‑то нелад­ное. Да, пись­мо выг­лядит безобид­но: оно офор­мле­но в точ­ности так же, как офи­циаль­ные сооб­щения от тво­его хос­тера, текст наб­ран тем же шриф­том, адрес отпра­вите­ля — вер­ный. И даже в «под­вале» на сво­ем закон­ном мес­те рас­положе­ны ссыл­ки на полити­ку кон­фиден­циаль­нос­ти, пра­вила обра­бот­ки пер­сональ­ных дан­ных и про­чую лабуду, которую ник­то никог­да не чита­ет. Толь­ко вот URL стра­ницы авто­риза­ции в адми­нис­тра­тор­ской панели нем­ного отли­чает­ся от нас­тояще­го, да и SSL-сер­тификат на сай­те вызыва­ет подоз­рения и у тебя, и у анти­виру­са. Ой, а не фишинг ли это?

Фишинговое окошко входа в cPanel
Фи­шин­говое окош­ко вхо­да в cPanel

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

Что­бы получить обра­зец кор­поратив­ного пись­ма, дос­таточ­но зарегис­три­ровать­ся на сай­те про­вай­дера или заказать тес­товый хос­тинг, который мно­гие ком­пании бес­плат­но пред­лага­ют на огра­ничен­ный срок. Даль­ше такое пись­мо мож­но обра­ботать в любом HTML-редак­торе, поменяв содер­жимое. Нет­рудно най­ти и все исполь­зуемые про­вай­дером диапа­зоны IP-адре­сов: для этой цели соз­дано мно­жес­тво сер­висов, нап­ример xseo.in. Ну а затем мож­но получить спи­сок сай­тов на каж­дом из IP-адре­сов shared-хос­тинга, нап­ример здесь, здесь или тут. Проб­лемы могут воз­никнуть толь­ко с про­вай­дерами, которые пря­чут­ся за Cloudflare, но на каж­дый хит­рый винт, как извес­тно, най­дет­ся гай­ка с левой резь­бой.

Поиск сайтов на одном IP
По­иск сай­тов на одном IP

Ос­танет­ся толь­ко прой­тись по сай­там и соб­рать адре­са email или сге­нери­ровать спи­сок рас­сылки под­ста­нов­кой зна­чений admin, administrator, contact, info к каж­дому domain.tld — куда‑нибудь да попадем. Потом этот спи­сок мож­но почис­тить, исклю­чив из него несущес­тву­ющие адре­са. При­чем весь про­цесс нет­рудно авто­мати­зиро­вать с помощью нес­ложно­го скрип­та на питоне либо вос­поль­зовать­ся одной из прог­рамм авто­мати­чес­кого сбо­ра email, которым скар­мли­вают спи­сок URL для пос­леду­юще­го пар­синга (не ста­нем рек­ламиро­вать их в этой статье, пос­коль­ку прак­тичес­ки весь подоб­ный софт плат­ный). Ну а счас­тли­вые юзе­ры Kali могут исполь­зовать для этих целей theHarvester, слег­ка повозив­шись с нас­трой­ками.

theHarvester — тулза для сбора email-адресов
theHarvester — тул­за для сбо­ра email-адре­сов

По­хожие «пись­ма счастья» зачас­тую при­лета­ют адми­нис­тра­торам доменов, осо­бен­но если их дан­ные не скры­ты за ано­нимай­зером Private Person. Здесь для пар­синга адре­сов элек­трон­ной поч­ты исполь­зуют­ся пуб­личные базы Whois.

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

Вот такие письма рассылают жулики администраторам доменов — это типичное фишинговое сообщение было получено буквально на днях
Вот такие пись­ма рас­сыла­ют жулики адми­нис­тра­торам доменов — это типич­ное фишин­говое сооб­щение было получе­но бук­валь­но на днях
А вот куда ведет кнопка: за домен xakep.ru жулик просил аж целых 4800 рублей
А вот куда ведет кноп­ка: за домен xakep.ru жулик про­сил аж целых 4800 руб­лей

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

 

Самый цимес

Кто в наше вре­мя не исполь­зует CMS? Все исполь­зуют CMS! Мно­гие про­вай­деры пред­лага­ют услу­гу быс­тро­го раз­верты­вания наибо­лее популяр­ных движ­ков, вро­де WordPress, Joomla, Drupal, Bitrix, из кон­тей­нера: нажал кноп­ку в панели управле­ния хос­тингом, и готово. Но некото­рые уни­кумы поль­зовате­ли пред­почита­ют ста­вить CMS вруч­ную, ска­чав дис­три­бутив с сай­та раз­работ­чика и залив его на сер­вер через FTP — потому что так при­выч­нее, надеж­нее и по фэн­шую. При этом они иног­да забыва­ют уда­лить инстал­ляци­онные скрип­ты и слу­жеб­ные пап­ки.

О Google Dorks мы уже не­однократ­но рас­ска­зыва­ли, но акту­аль­ность опи­сан­ных при­емов от это­го не умень­шает­ся. Нап­ример, всем извес­тно, что инстал­ляци­онный скрипт WordPress при уста­нов­ке движ­ка рас­полага­ется по адре­су wp-admin/install.php. Давай пос­мотрим, сколь­ко резуль­татов с таким URL най­дет для нас великий Гуголь при исполь­зовании коман­ды inurl.

Количество найденных ссылок с командой inurl и пример одного из найденных сайтов
Ко­личес­тво най­ден­ных ссы­лок с коман­дой inurl и при­мер одно­го из най­ден­ных сай­тов

Бе­зус­ловно, выдача будет силь­но замусо­рен­ной, ведь сре­ди лин­ков отоб­ража­ется мно­го ссы­лок на форумы с обсужде­нием глю­ков WordPress. Но, хорошень­ко покопав­шись в этой куче, мож­но отыс­кать и рабочие вари­анты, поз­воля­ющие нам поменять нас­трой­ки сай­та, — один из них показан на кар­тинке выше. Фокус удас­тся, если, конеч­но, взлом­щик суме­ет подоб­рать валид­ные дан­ные базы. Мож­но, нап­ример, попытать счастья с исполь­зовани­ем коман­ды intext:DB_PASSWORD, ука­зав вто­рой дирек­тивой инте­ресу­ющий нас URL, или исполь­зовать тра­дици­онный брут­форс.

Пос­мотреть струк­туру скрип­тов в WordPress мож­но с помощью зап­роса inurl:repair.php?repair=1. Еще есть шанс узнать мно­го инте­рес­ного, поис­кав забытые скрип­ты phpinfo() зап­росом inurl:phpinfo.php.

Один из обнаруженных на просторах интернета файлов с phpinfo()
Один из обна­ружен­ных на прос­торах интерне­та фай­лов с phpinfo()

Отыс­кать рабочие скрип­ты инстал­ляции популяр­ного движ­ка Joomla мож­но, нап­ример, с исполь­зовани­ем харак­терно­го заголов­ка веб‑стра­ницы: для это­го подой­дет коман­да вро­де intitle:Joomla! Web installer. Один из резуль­татов поис­ка по такому зап­росу показан на иллюс­тра­ции ниже.

Инсталлятор Joomla, доступный для всех желающих
Ин­стал­лятор Joomla, дос­тупный для всех жела­ющих

В общем, если гра­мот­но исполь­зовать спе­циаль­ные режимы поис­ка, мож­но най­ти залитые на хос­тинг дис­три­бути­вы сис­тем управле­ния кон­тентом с незавер­шенной инстал­ляци­ей или забыты­ми слу­жеб­ными скрип­тами и помочь незадач­ливому вла­дель­цу закон­чить уста­нов­ку. Заод­но зарегис­три­ровав в CMS нового адми­на. Бороть­ся с подоб­ным нес­ложно: нуж­но все­го лишь при­бирать за собой в пап­ках на сер­вере или исполь­зовать кон­тей­нериза­цию — обыч­но она более безопас­на.

 

Мисконфигурейшн

Из пре­дыду­щего раз­дела логич­но вытека­ет еще одна воз­можность поис­ка уяз­вимос­тей на вир­туаль­ных хос­тах с пре­дус­танов­ленной CMS: изъ­яны в нас­трой­ке и исполь­зование кон­фигура­ции по умол­чанию. И в WordPress, и в Joomla, и в дру­гих движ­ках обыч­но при­сутс­тву­ет огромное количес­тво пла­гинов, име­ющих извес­тные уяз­вимос­ти с нас­трой­ками по умол­чанию.

В пер­вую оче­редь ата­кующие обыч­но пыта­ются выяс­нить вер­сию CMS, уста­нов­ленную на хос­те, — в слу­чае с WordPress это мож­но сде­лать, нап­ример, пос­мотрев в код веб‑стра­ницы и поис­кав там метате­ги вро­де <meta name="generator" content="WordPress 5.3.6" />. Вер­сию шаб­лона под­ска­жут строч­ки наподо­бие https://site-url/wp-content/themes/theme_name/css/main.css?ver=5.8.1.

За­тем мож­но поис­кать вер­сии инте­ресу­ющих взлом­щика пла­гинов: мно­гие из них име­ют в сво­ем сос­таве тек­сто­вые фай­лы readme, дос­тупные по адре­су вро­де https://site-url/wp-content/plugins/plugin_name/readme.txt. Подоб­ные фай­лы луч­ше при­бивать сра­зу пос­ле уста­нов­ки пла­гинов, не оставляя их на хос­тинге для любопыт­ных иссле­дова­телей. Выяс­нив вер­сии ядра движ­ка, шаб­лона и пла­гинов, хакер может попытать­ся заюзать извес­тные уяз­вимос­ти.

Кро­ме это­го, на некото­рых сай­тах с WordPress мож­но попытать­ся выяс­нить имя адми­нис­тра­тора, добавив к URL стро­ку вида /?author=1. С нас­трой­ками по умол­чанию дви­жок вер­нет в URL валид­ное наиме­нова­ние учет­ки пер­вого поль­зовате­ля, зачас­тую име­юще­го пра­ва адми­на. Оста­нет­ся толь­ко сбру­тить пароль. Эта воз­можность зависит от нес­коль­ких фак­торов — исполь­зуемой темы, уста­нов­ленных пла­гинов, нас­тро­ек веб‑сер­вера. Если перечис­ление поль­зовате­лей не отклю­чено, мож­но переб­рать ID всех юзе­ров WordPress и соб­рать таким нехит­рым спо­собом спи­сок логинов для бру­та. Отклю­чить воз­можность перебо­ра поль­зовате­лей мож­но, отре­дак­тировав соот­ветс­тву­ющим обра­зом functions.php или .htaccess. Нап­ример, так:

functions.php
if ( ! is_admin() ) {
if ( preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING']) ) die();
add_filter( 'redirect_canonical', 'check', 10, 2 );
}
function check( $redirect, $request ) {
if ( preg_match('/\?author=([0-9]*)(\/*)/i', $request) ) die();
else return $redirect;
}
.htaccess
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* http://yoursite.com/? [L,R=302]
</IfModule>

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

  • /wp-content/;
  • /wp-content/plugins/;
  • /wp-content/themes/;
  • /wp-content/uploads/files/;
  • /images/.

Оче­вид­но, что делать там пос­торон­ним совер­шенно нечего, пос­коль­ку в таких пап­ках может хра­нить­ся кри­тич­ная информа­ция, в том чис­ле доволь­но‑таки кон­фиден­циаль­ная.

Содержимое папки /uploads/files/ одной государственной больнички
Со­дер­жимое пап­ки /uploads/files/ одной государс­твен­ной боль­нич­ки

Зап­ретить дос­туп к слу­жеб­ным пап­кам мож­но, опять же уста­новив соот­ветс­тву­ющий шаб­лон, или самым прос­тым спо­собом — помес­тить в кор­не каж­дой дирек­тории пус­той файл index.html (либо добавить в .htaccess сай­та строч­ку Options All -Indexes). У мно­гих хос­тинг‑про­вай­деров эта опция про­писа­на по умол­чанию, но далеко не у всех, в чем ты при желании можешь убе­дить­ся самос­тоятель­но.

Кро­ме того, нуж­но осмотри­тель­но обра­щать­ся с коман­дой chmod, осо­бен­но при раз­даче прав куче вло­жен­ных дирек­торий на запись и выпол­нение скрип­тов. Пос­ледс­твия таких необ­думан­ных дей­ствий могут быть самыми неожи­дан­ными.

 

Забытые учетки

Од­нажды к авто­ру этих строк за помощью обра­тилась одна зна­комая ком­пания, сайт которой ежед­невно падал без видимых на то при­чин. Вос­ста­нов­ление содер­жимого сер­верной пап­ки из резер­вной копии помога­ло ненадол­го — в какой‑то совер­шенно неп­рогно­зиру­емый момент все пов­торялось вновь. Поиск уяз­вимос­тей и бэк­доров в скрип­тах тоже ничего не дал. Сисад­мин кон­торы пил вед­рами кор­валол и бил­ся головой о сер­верную стой­ку.

Толь­ко вдум­чивое курение логов помог­ло отыс­кать нас­тоящую при­чину. Ею ока­зал­ся «бро­шен­ный» FTP-дос­туп, соз­данный дав­ным‑дав­но кем‑то из уво­лен­ных сот­рудни­ков, знав­ших пароль от панели управле­ния хос­тингом. Видимо, не удов­летво­рив­шись раз­мером выход­ного пособия, ново­испе­чен­ный без­работ­ный решил отом­стить сво­ему быв­шему началь­ству таким вот незамыс­ловатым спо­собом. Пос­ле уда­ления всех «лиш­них» FTP-акка­унтов и про­филак­тичес­кой сме­ны паролей про­казы «барабаш­ки» наконец пол­ностью прек­ратились.

 

Выводы

Глав­ное ору­жие вла­дель­ца интернет‑ресур­са в борь­бе за безопас­ность — осто­рож­ность, осмотри­тель­ность и вни­матель­ность. Мож­но и нуж­но поль­зовать­ся услу­гами про­верен­ного про­вай­дера, одна­ко поговор­ку «доверяй, но про­веряй» при­дума­ли нег­лупые люди. Какими бы надеж­ными ни казались решения «из короб­ки», для пущей уве­рен­ности нуж­но про­верить наибо­лее харак­терные «узкие мес­та» в кон­фигура­ции сай­та самос­тоятель­но.

А потом переп­роверить еще раз. Прос­то на вся­кий слу­чай.

2 комментария

  1. Аватар

    Dmitry Morozov

    11.11.2020 в 03:05

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

  2. Аватар

    zorg1331

    12.11.2020 в 01:49

    может стоит замазать домен сайта «одной государс­твен­ной боль­нич­ки» на соответствующей иллюстрации? 🙂
    файлы то всё еще там.

Оставить мнение