Блог | ONELAB веб-студиясы
+7 (700) 700 71 77 info@oneit.kz

1С-Битрикстің әлсіз тұстарын талдау және оларды жою жолдары

27.09.2021

Бастапқыда мақалада 1С-Битрикс CRM жүйесінің қауіпсіздік құралдары қарастырылмақ болды. Алайда зерттеу барысында осы қауіпсіздікке қатысты бірнеше нәзік жайттар анықталды. Пайдаланушылардың сұрақтары статистикасына сенсек, бұл тақырып әлі де өзекті болып табылады.

Жүйені әзірлеушілер Bitrix-тің жоғары деңгейдегі қорғанысын мәлімдесе де, пайдаланушылар теріс нәтижелерге әкелуі мүмкін бірнеше мәселеға тап болады және оларды шешу қажет.

Мәселенің мәнін қарайық — яғни eCommerce ресурстары үшін қосымша қорғанысты талап ететін Bitrix-тің осал тұстары.

Маңызды! Төменде талқыланатын шешімдер Bitrix-әзірлеушілерге пайдалы болады. Оларды енгізу үшін CRM құрылысының ерекшелігін түсіну қажет. Егер өзіңізге сенімді болмасаңыз, профильді мамандарға жүгінуді ұсынамыз. Кодтағы ең кішкентай қателік те ауыр салдарға және қажетсіз шығындарға әкелуі мүмкін.

XSS-атака

001

Bitrix Hub зерттеу нәтижелеріне сенсек, XSS-шабуылдар (кросс-скриптинг) — «1С-Битрикс: Веб-сайтты басқару» веб-жобаларына ең кең тараған мәселе. Бұл интернет-ресурс кодында айнымалыларды шақыру арқылы потенциалды зиянды әрекеттерді орындауға хакерлерге мүмкіндік беретін скрипттердің болуы туралы.

Мәселенің себебі неде?

Әдетте мұндай сценарий скрипттер оқитын параметрлердің болмауы немесе жеткіліксіз сенімді сүзгіден өтуі салдарынан туындайды. Басқаша айтқанда, браузер пайдаланушы енгізген деректерді алдын ала сүзбестен «таза» күйінде қабылдайды.

Қандай салдарлары болуы мүмкін?

XSS-шабуыл қорғалмаған ресурс беттерінің HTML-көрінісін мақсатты келушінің браузер контексінде өзгертуге, COOKIE деректерінің ағып кетуіне және пайдаланушы сессиясына араласуға әкелуі мүмкін. Яғни, шабуылдаушы оның есеп жазбасына қол жеткізе алады.

Мұндай проблема тек Bitrix-те ғана емес, кез келген CMS-та кездесуі мүмкін — бұл көбінесе пайдаланушы жазған кодтың сапасына байланысты. Сайтты басқаруды тек сенімді мамандарға сеніп тапсыру ұсынылады, өйткені мәселені және оның салдарын жоюға кететін шығындар айтарлықтай болуы мүмкін.

Қалай шешуге болады?

Ресурсты рұқсат етілмеген кибершабуылдардан қорғау үшін htmlspecialchars функциясын қолдану ұсынылады. Динамикалық мәндері бар тегтерді шектеу үшін — қос тырнақшаларды пайдалану қажет. Қажет болған жағдайда href/src тегтерін конфигурациялағанда http протоколын қосыңыз.

Кросс-скриптингтің мақсаттары

Бұл әдіс хакерге пайдаланушы cookie-леріне кіріп алу үшін кірістірілген скрипт арқылы қажетті деректерді алуға мүмкіндік береді. Бұл cookie-лер кейінгі шабуылдар мен бұзуларда қолданылады.

Шабуыл тікелей пайдаланушыға жасалмайды — ол зиянды JavaScript бар сайттың осал жерлерін пайдаланады. Шолғышта бұл скрипт сайттың органикалық бөлігі ретінде жасырылған болуы мүмкін.

XSS-шабуыл серверге тікелей қауіп төндірмейді, бірақ егер шабуылдаушы әкімші cookie-лерін қолға түсірсе, ол әкімшілік бөлімге оңай кіре алады.

Осалдықты іздеу керек жерлер — сайттың байланыс формалары. Потенциалды қауіп бар-жоғын тексеру үшін формаға келесі сұранысты енгізсе жеткілікті:

<script>alert("cookie: "+document.cookie)</script>

Айта кетерлігі, Bitrix-тің базалық орнатуы және дайын шешімдері мұндай мәселенің пайда болуын көбіне болдырмайды. Көбінесе осалдық қосымша доработкалар мен функционал енгізілген кезде, Bitrix стандарттары мен қауіпсіздік ережелері сақталмаған жағдайда пайда болады.

Бұл қатардағы жолды GET-параметр ретінде де енгізуге болады — мысалы, беттерді генерациялайтын парақтарда (каталогтардың пагинациясы немесе онлайн-дүкендердің фильтрлері).

http(s)://{ваш_домен}/catalog?p=2 (мұндағы 2 орнына басқа сан)

Егер бет осал болса, скрипт орындалады.

Мұндай факторлардан қорғану үшін кіріс және шығыс ақпаратқа арналған сүзгілерді дұрыс баптау қажет: символдарға экран қою тәсілі және арнайы символдарды HTML форматына түрлендіру критерийлері. PHP үшін арнайы функциялар қарастырылған: htmlspecialchars()/htmlentities()/strip_tags().

Бірнеше мысал келтірейік:

$name = htmlspecialchars($_POST['name'], ENT_QUOTES);

$name = strip_tags($_POST['name']);

Bitrix-те басқару кезінде CDatabase::ForSql әдісін де қолдануға болады.

Мысалы:

$name = CDatabase::ForSql($_POST['name'])

Беттің кодировкасы нақты көрсетілуі тиіс:

Header("Content-Type: text/html; charset=utf-8")

Тағы бір жолы — формалар арқылы тырнақша мен жақшалардың берілуіне тыйым салу (осы символдарды қара тізімге қосу). Алайда мұндай шара заңды сұрауларды бұғаттауға әкелуі мүмкін, егер оларда осы таңбалар қажет болса.

Бұл осалдық кез келген CMS пайдаланушылары арасында кездеседі және нақты түрде тек Bitrix-ке тән емес.

Мұнда кез келген жүйеге тән басқа да кең тараған мәселелердің тізімі:

  • деректерге брутфорс (подбор) арқылы қол жеткізу;
  • код мазмұнындағы логикалық сәйкессіздіктер;
  • жүйелік командаларды орындау;
  • файл атауын өзгерту;
  • SQL-инъекциялар;
  • CSRF сұраныстарын жалғандату;
  • фишинг және т.б.

Жеңіл перенаправления: click.php / rk.php / redirect.php

 001

Ашық перенаправления (open redirect) мәселесі көптеген Bitrix қолданушыларына таныс. Ресми әзірлеушілер форумында бұл тақырып 2014 жылдан бері белсенді талқыланып келеді және бүгінгі күнге дейін өзектілігін сақтап отыр.

001

Осалдықтың мәні неде?

Хостинг-провайдер MySQL-ге түсетін жүктеменің айтарлықтай өскені туралы хабар жіберді.

001

001

Мұндай мәселе бір пайдаланушы үшін төрт күн ішінде 30 000 сұраным түсуінен туындады. Сұранымдар келесі түрде көрінді:

/bitrix/rk.php?=goto=http...

goto-дан кейін көбіне күдікті сайттардың URL-дары тұрды.

Аналитика жүйелерінде де осыған ұқсас көріністер тіркелді — сілтемелер (ішкі және сыртқы) дәл осындай URL түрінде көрсетілді.

Бұл конструкция — ашық перенаправление. Ол шабуылдаушыға кез келген URL орнатып, пайдаланушыны зиянды ресурсқа бағыттауға мүмкіндік береді.

Bitrix үшін бұл осалдық көбінесе келесі жүйелік файлдардан туындайды:

  • php;
  • php;
  • php.

Мысалы:

{домен_жертва}/bitrix/rk.php

?id=17&site_id=s1

&event1=banner&event2=click

&goto= {домен_цель}/

Кімдікі және қандай салдары болуы мүмкін?

Бірінші мақсат — трасттық сілтемелер жасау. Бірнеше жыл бұрын бұл құрал индексация көрсеткіштерін (цитирование индексін) арттыру үшін кеңінен қолданылды.

Справка: трасттық сайттар — Google және Yandex іздеу алгоритмдері сенімді және беделді деп танитын ресурстар. Мұндай сайттар жоғары рейтингке ие болғандықтан іздеу нәтижелерінде алдынғы қатарға шығады. Алайда бұл көрсеткіш көбіне жасанды түрде «өстіріледі».

001

001

Сонымен қатар, көптеген SEO-оптимизаторлар осы ашық осалдықты пайдаланады.

001

Сілтемелерді индексациялау және оларды жаппай тарату жөніндегі нұсқаулықтар ашық қолжетімді. Яғни, кез келген адам бұл тактиканы қолдана алады. Агрессивті оптимизаторлар осал сайттарға сұраныстарды көбейту қызметін ұсынады.

Барлық осы факторлар сайтқа негізсіз түрде үлкен жүктеме түсуіне себеп болады.

Көрнекі мысал келтірейік:

001

Бұл 2017 жылғы деректер, бірақ көптеген редиректілер әлі де табысты жұмыс істеп тұр.

Редиректтер туралы сұрақтар Bitrix аудиториясында тек 2018 жылы белсенді талқылана бастады, себебі мәселе жаппай сипат алды.

Екінші мақсат — фишинг. Қолданушыларды шабуылдаушылардың сайттарына апаратын сілтемелер жиі e-mail таралымдарда және мессенджерлерде кездеседі. Оған өту кезінде хакерлер байланыс ақпаратына, төлем деректеріне және т.б. қол жеткізе алады.

Тағы бір мақсат — спам, нәтижесінде сайттың іздеу жүйелеріндегі беделі төмендейді. Күдікті ресурстарға бағытталған сілтемелердің көптігі іздеу алгоритмдері тарапынан теріс бағаланады. Сайтты спамдық белсенділіктен кейін қалпына келтіру — ұзақ әрі еңбекті қажет ететін процесс, сондықтан мәселені алдын алу әлдеқайда тиімді.

Бұл қалай жұмыс істейді?

Бұл рекламалық баннерлер мен сілтемелерге басулар мен өту статистикасын қалыптастыратын Bitrix жүйелік файлдарымен байланысты. Веб-ресурсты күдікті перенаправлениялардың «посредникі» ретінде пайдалану коробкалық нұсқада да болуы мүмкін.

Қалай шешуге болады?

Пайдаланушылардың пікірлеріне сүйенсек, бұл проблема жиі кездеседі. Форумда бірнеше талқылаулар бар, бірақ жүйелік шешім әлі табылған жоқ.

Әзірлеушілер проактивті қорғаныс баптауларында максималды қауіпсіздікті орнатуды және редиректтер үшін HTTP тақырыптарын тексеруді конфигурациялауды ұсынады.

Дегенмен, көрсетілген шешімдердің ешқайсысы фишингтен 100% қорғаныс беретіндігіне кепілдік бермейді. Сол сияқты үшінші тарап құралдары да толық қорғаныс кепілдемейді. Қайталану жағдайында осалдық қайнар көзін жою мақсатында жүйелік файлдарды жою ұсынылады.

001

Бұл шешім күлкілі көрінуі мүмкін, бірақ ол шынымен де жұмыс істейді. Осы әрекеттен кейін әкімші баннер сілтемелері мен редиректтер бойынша басу статистикасын бақылау мүмкіндігін жоғалтады.

rk.php/click.php файлдары advertising (жарнама және баннерлер) жүйелік модуліне жатады. Егер бұл модуль пайдаланылмаса, оны алып тастауға — тіпті міндетті түрде — болады. Файлдардың жойылуы автоматты түрде жүзеге асады.

Әзірлеушілер форумында .htaccess файлына арналған тағы бір шешім бар:

001

Бұл әмбебап әдіс емес, бірақ редиректтер мен аталған файлдарды пайдаланбайтындар үшін пайдалы.

Тағы да бір тармақталған код бар:

001

Бірақ ол да click.php файлын ескермейді.

restore.php

Бұл осалдық пенетрациялық тексеру кезінде анықталды. Оның мәнін қысқаша қарастырайық.

Ашық порттардың жиынтығы Bitrix виртуалдық машинасының (VM) қоғамдық IP бойынша орнатылғанын көрсетті.

ip_addr:80 бойынша өтуге жауап ретінде шолғыш жүйенің бастапқы конфигурация беті мен қалпына келтіру көшірмесін жүктеу ұсынылған сілтемені ашты. Оған басқаннан кейін резервтік көшірмені жүктеу ұсынылатын restore.php модулі іске қосылды.

001

Мұндай сценарий ресурсты және VMBitrix виртуалдық жүйесін әкімші тарапынан толық бапталмауымен түсіндірілуі мүмкін. Көріністе зиянсыз сияқты байқалатын бұл қате бұзылуға әкелуі мүмкін.

restore.php файлдары файлдарды тексеру, жүктеу және резервтік көшірмелерді орналастыру функциясын атқарады. Шабуылдаушы бұл модульді резервтік көшірмеге емес, phpinfo.php сияқты қауіпті файлға қол жеткізу үшін пайдалана алады. Талдау нәтижелері көрсеткендей, файлдық тексеріс дұрыс жұмыс істемеді және компьютерден скрипт веб-қосымшаға жүктелді.

Ұқсас сценарий зертханалық жағдайда Bitrix 7.2 виртуалдық машинасы көмегімен қайталанған.

Қашықтағы көзден бекапты жүктеу функциясы арқылы скриптті жүктеу әрекеті кезінде жүйе тексеруді бастады.

restore.php сәйкес кодты қамтиды:

001

Алайда бірінші тексеруді айналып өту мүмкін болды. Тест cmd.php скриптімен жүргізілді. CLI арқылы идентификациялайтын символдар (cmd.php файл мазмұны) берілді.

Жаңа файл cmd_boom.php:

echo -e "x1fx8bn$(cat cmd.php)" > cmd_boom.php

Оның кестелік көрінісі:

001

Файл жүктелгеннен кейін оның сілтемесі restore.php-ке берілді, сол арқылы бар-жүктеу (bar-upload) басталды. Одан кейін хабарлама пайда болды:

001

Осыған қарамастан файл түпкі қалтадан жойылмады және іске қосуға дайын күйінде қалды.

001

«Пропустить» опциясын таңдағаннан кейін қайтадан әрекет жасалды. Осы жолы локальды резервтік көшірмені және қызметтік скрипттерді бірге жою опциясы пайда болды. Барлық файлдардың жойылуы батырманы басқаннан кейін орындалды.

Үй каталогынан restore.php/bitrixsetup.php скрипттері және cmd_boom.php файлы жойылды. Бұл файлмен ешқандай әрекет жасау мүмкін емес: егер резервтік көшірме қалпына келтірілмесе, жаңадан орнату жүзеге асырылмайды.

Теориялық тұрғыда cmd.php файлының атын index.php деп өзгертуге немесе оны ішкі каталогқа жылжытуға болады.

Bitrix техподдержкасына жіберілген хабарландыру нәтижесіз болды. Мамандар restore.php-те осал жер іздеу мағынасыз екенін жауаптады, себебі скрипттің функциясы — php-файлдарды ресурска жүктеу.

Орнатуды және баптауды аяқтау қажеттілігі логикалық түрде түсінікті. Алайда бұл мәселе кең таралған. Жылдам беттік тексеру нәтижелері бойынша VM қолданатын сайттар саны жүздегенге жуық болды.

Мәселенің көп көлемде болуы жасаушыларды анықталған учаскенің қорғанысын күшейту жолдарын іздеуге мәжбүр етуі керек. Қазіргі уақытта пайдаланушылар сақ болуға, жобаны серверге орналастыруға дейін VM орналастырмауға тиісті. Сонымен қатар барлық жалпы қолжетімді беттер мен ресурстарды тұрақты түрде тексеріп тұру маңызды.

Ерікті тіркеу (Произвольная регистрация)

Бұл осалдық шамамен бір жыл бұрын анықталды. 2020 жылдың басында әзірлеушілер пайдаланушылардың жаппай тіркеліп жатқаны, капчаны айналып өтіп спам тарата бастағаны туралы хабарлар ала бастады.

Бұл фактор Bitrix сайттарына боттардың жаппай енуімен байланысты. Оқиғалар журналын қарасаңыз, тіркелу мекені ретінде /auth/?register=yes көрсетілгенін байқайсыз. Бұндай ресурстарда /auth/ бөлімі немесе тіркелу формасы мүлде болмауы мүмкін.

001

Айта кетерлігі, осындай жағдайлар тіркелуі жоқ жобаларда (лендингтер, визиткалар) да байқалды. Боттар сондай-ақ main.register арқылы немесе Bitrix API негізінде қолмен жазылған тіркелу кодымен, recaptcha, валидация ережелері мен міндетті толтырылатын өрістер тізімі бар сайттарға да енді.

Мәселе неде?

Бар мәселе — ескірген компоненттерде:

  • auth.registration;
  • auth.authorize;
  • auth.forgotpasswd;
  • auth.changepasswd.

Олар беттерде NEED_AUTH константасының мәні true болған жағдайда көрсетіледі:

define("NEED_AUTH", true)

Ерекшелігі сонда, константа орнатылмаған жағдайларда да ескірген компоненттер тиісті POST сұрауына жауап беріп жұмыс істейді. Бұл кез келген бетке, тіпті тіркелу формасы жоқ бетке де пайдаланушыдан тіркелу сұранысын алуға мүмкіндік береді.

Postman қызметкері зерттеу жүргізу үшін әмбебап сұраныс құрастырды:

001

Осы сұраныс тіркелу мүмкіндігі жоқ сайттарда да капчаны айналып өтіп жұмыс істеді. Яғни, шабуылдаушылар ресурсты өз мүдделері үшін пайдалану процесін ұйымдастыра алады.

Қалай шешуге болады?

Бұл осалдықты бірнеше жолмен шешуге болады:

1. Егер өзіңіз жазған тіркелу жүйесі қолданылса, негізгі модульдің баптауларына (Авторизация бөлімі) кіріп, пайдаланушылардың өздігінен тіркелу опциясының жанығындағы құсбелгіні алып тастау ұсынылады. Сол жерде капчаны қолдануды қосыңыз. Бұл боттардың белсенділігін азайтады. Бұл әдіс SMS арқылы тіркеу қолданатын ресурстарға сәйкес келмеуі мүмкін.

001

2. Жаңа пайдаланушыларды тіркеуден кейін OnBeforeUserAdd оқиға өңдегіші арқылы өрістерді тексеріңіз. Бұл тіркелу процесі мүмкін болатын кодта валидацияның қайталануынан бас тартуға мүмкіндік береді.

3. system.auth компоненттері үшін дұрыс баптауларды орнатыңыз.

Bitrix қолдау қызметі бұл мәселені біледі, бірақ әзірлеушілер тек капчаны орнату туралы бір ғана ұсыныс айтады. Мүмкін, мәселені шешу уақытты талап етеді. Қазіргі таңда жалғыз қалатын жол — өз күшіңізге сеніп шара қолдану.

Сайтты тексеру құралдары

Егер сізге веб-жоба скрипттері мен кодтарының сапалы тексерісі қажет болса, біздің мамандарға жүгініңіз. Біз осал тұстарды анықтауға, өнімділік ақауларын табуға және ресурс құралдарының жұмыстағы ықтимал қатені анықтауға көмектесеміз. Кешенді тәсіл сайттың жұмысын оңтайландыру және оның әрі қарай гүлдену жолдарын табуға мүмкіндік береді.

Ескеріңіз: егер сіздің жобаңыз шабуылдаушылардың назарында болса, олар бұзуға арналған құралдар кешенін пайдалана алады. Қымбат ақпаратты жоғалтпау үшін резервтік көшіруді ұмытпаңыз және әсіресе өз қолымен жазылған кодтардың сапасын қадағалаңыз.

Қорытындылайық

Көптеген осал тұстар болуына қарамастан, Bitrix оларды жою мүмкіндіктерін ұсынады. Бұл CMS сайтты хакерлік шабуылдардан қорғауды күшейтуге қажетті барлық құралдарға ие. Ірі жобалар үшін бұл жүйе сенімді бағыттардың бірі болып саналады.

Естен шығармаңыз:

  • CMS-ті уақытылы жаңартып отыру (соңғы релиздерді орнату);
  • әзірлемелер мен доработкалардың сапасына көңіл бөлу (кодтар мен скрипттер CMS канондарына сай жазылуы тиіс).

Негізгі CMS жүйесінде тәуекелдер дерлік жоққа тең. Көбі мәселелер біліктілігі төмен араласулар мен беттерді, опцияларды, шаблондарды программистер дұрыс жазбауынан туындайды.

Веб-сферадағы қауіпсіздік мәселелері қазіргі уақытта аса маңызды. Таңдалған CMS қаншалықты танымал болса, хакерлік шабуылдар қаупі соншалықты жоғары болады. Оған ешкім де толықтай сақтандырылмаған.

Сіздің жобаны қорғауға көмектесетін ұсыныстар:

  • CMS-ті уақытылы жаңартып отырыңыз (ескірген компоненттер маңызды зиян келтіруі мүмкін);
  • білікті мамандармен жұмыс істеңіз (адамдық қатеге байланысты қателер ресурс осалдығын арттыруы мүмкін);
  • тұрақты түрде бекап жасаңыз (резервтік көшіру маңызды ақпараттың жоғалуын болдырмайды);
  • анықталған мәселелерді дер кезінде табу және жою;
  • сайттың қорғалуын мерзімді түрде тексеріп отыру (кемінде үш айда бір рет).

Сұрақтарыңыз қалса — біз жауап табуға көмектесеміз!

Возврат к списку