Универсален софтуер за оптични салони, офталмологични клиники, кабинети за контактна корекция. Универсален софтуер за оптични салони, офталмологични клиники, кабинети за контактна корекция Компютърна програма

В Joomla, след успешна регистрация, потребителите по подразбиране се пренасочват към a страница за вход(ако акаунтът не трябва да бъде активиран). Оттам (след влизане) потребителите се пренасочват към потребителски профилстраница. Това се случва дори ако пренасочването за влизане е зададено на нещо друго Модул за форма за вход.

За да промените това поведение, можете да пренасочите потребителите след регистрация към всяка друга страница на вашия уебсайт.
За да направите това, трябва да редактирате основен Joomla файл. Имайте предвид, че вашите промени може да бъдат презаписани от актуализация на Joomla. Винаги документирайте промените, които правите в основните файлове на Joomla, за да можете бързо да ги направите отново, ако е необходимо.

Отворете файла:
components/com_users/controllers/registration.php

Превъртете надолу до най-долу. Започвайки ред 162 или така ще имате течащ код:

if ($return === "adminactivate" ) ( $this -> setMessage (JText:: _() ) ; $this -> setRedirect (JRoute:: _(, false ) ) ; ) else if ($return == = "useractivate" ) ( $this -> setMessage (JText::_() ); $this -> setRedirect (JRoute::_( "index.php?option=com_users&view=registration&layout=complete", невярно ) ; ) else ( $this -> setMessage (JText::_() ); $this -> setRedirect (JRoute::_( "index.php?option=com_users&view=login", невярно ) ; )

В този раздел имате 3 връзки, започващи с index.php?

  • Първият () се изпълнява след регистрация на потребител, ако акаунтът трябва да бъде активиран от администратор
  • Второ ( index.php?option=com_users&view=registration&layout=complete), ако акаунтът трябва да бъде активиран от потребителя
  • Трето ( index.php?option=com_users&view=login), ако не се изисква активиране на акаунта.

Заменете връзките в зависимост от вида на регистрацията, която използвате, с ПЪЛНИЯ URL на вашата страница за пренасочване и сте готови.
Например, ако не се изисква потребителско активиране на моя уебсайт и искам да пренасоча потребителите след регистрация към http://www.mywebsite.com/welcome-regактуализираният код ще бъде:

// Пренасочване към екрана на профила. if ($return === "adminactivate" ) ( $this -> setMessage (JText::_( „COM_USERS_REGISTRATION_COMPLETE_VERIFY“) ) ; $this -> setRedirect(JRoute::_( "index.php?option=com_users&view=registration&layout=complete", невярно ) ; ) else if ($return === "useractivate" ) ( $this -> setMessage (JText::_( „COM_USERS_REGISTRATION_COMPLETE_ACTIVATE“) ) ; $this -> setRedirect(JRoute::_( "index.php?option=com_users&view=registration&layout=complete", невярно ) ; ) else ( $this -> setMessage (JText::_( „COM_USERS_REGISTRATION_SAVE_SUCCESS“) ) ; $this -> setRedirect(JRoute::_( "http://www.mywebsite.com/welcome-reg" , невярно ) ; )

Независимо към коя страница на вашия уебсайт пренасочвате, системното съобщение " Благодаря, че се регистрирахте..." все още ще се показва. Ако не искате това съобщение, премахнете пълния ред над вашия URL адрес за пренасочване. напр. $this->setMessage(JText::_("COM_USERS_REGISTRATION_SAVE_SUCCESS"));

Ако не изисквате активиране на акаунт (Активиране на нов потребителски акаунт, зададено на Нито един) това е всичко, от което се нуждаете, за да избягвате страницата с потребителски профил. Въпреки това, ако потребителят трябва да активира акаунт чрез имейл (Активиране на акаунт, зададено на себе си) това може да не е достатъчно. Веднага след регистрацията потребителят ще бъде пренасочен към уеб страница, която сте предоставили в кода, както се очаква. Въпреки това, когато потребител кликне върху връзка в имейла за активиране, той ще бъде отведен до споменатия по-горе формуляр за влизане и ако го използва за влизане, ще стигне до страницата на потребителския профил. За да предотвратите това, можете напълно да деактивирате страницата с потребителски профил и вместо това да пренасочвате потребителите към всяка страница, която искате. Прочетете тази статия, за да разберете как.

Joomla 1.6
Joomla 1.7
Joomla 2.5

Днес ще разгледаме експлоатацията на критична 1-дневна уязвимост в популярната CMS Joomla, която избухна в интернет в края на октомври. Ще говорим за уязвимостите с числа CVE-2016-8869, CVE-2016-8870И CVE-2016-9081. И трите произлизат от едно парче код, който изнемогва в дълбините на рамката в продължение на пет дълги години, чакайки своето време, само за да се освободи и да донесе със себе си хаос, хакнати сайтове и сълзите на невинни потребители на тази Joomla. Само най-храбрите и смели разработчици, чиито очи са червени от светлината на мониторите и чиито клавиатури са осеяни с трохи от хляб, успяха да предизвикат бушуващите зли духове и да положат главите си на олтара на поправките.

ВНИМАНИЕ

Цялата информация е предоставена само за информационни цели. Нито редакторите, нито авторът носят отговорност за евентуални вреди, причинени от материалите на тази статия.

Откъдето започна всичко

На 6 октомври 2016 г. Демис Палма създаде тема в Stack Exchange, в която попита: защо всъщност във версия 3.6 на Joomla има два метода за регистриране на потребители с едно и също име register()? Първият е в контролера UsersControllerRegistration, а вторият е в контролера UsersControllerUser. Деймис искаше да разбере дали методът UsersControllerUser::register() е бил използван някъде, или това е просто еволюционен анахронизъм, останал от старата логика. Неговата загриженост беше, че дори ако този метод не се използва от нито един изглед, той може да бъде извикан от изработена заявка. На което получих отговор от разработчик под псевдонима itoctopus, който потвърди: проблемът наистина съществува. И изпрати доклад до разработчиците на Joomla.

Тогава събитията се развиха най-бързо. На 18 октомври разработчиците на Joomla приеха доклада от Damis, който по това време беше изготвил PoC, който ще позволи регистрация на потребители. Той публикува бележка на своя уебсайт, където говори в общи линии за проблема, който е открил, и мислите си по този въпрос. На същия ден излиза нова версия на Joomla 3.6.3, която все още съдържа уязвим код.

След това Davide Tampellini завърта грешката до степен да регистрира не обикновен потребител, а администратор. И на 21 октомври нов случай пристига при екипа по сигурността на Joomla. Там вече се говори за увеличаване на привилегиите. В същия ден на уебсайта на Joomla се появява съобщение, че във вторник, 25 октомври, ще бъде пусната следващата версия със сериен номер 3.6.3, която коригира критична уязвимост в ядрото на системата.

25 октомври Joomla Security Strike Team открива последния проблем, създаден от парчето код, открито от Damis. След това ангажимент от 21 октомври с невзрачното име Prepare 3.6.4 Stable Release се вкарва в главния клон на официалното хранилище на Joomla, което поправя злополучния бъг.

След това излизане много заинтересовани лица се присъединяват към общността на разработчиците - те започват да популяризират уязвимостта и да подготвят експлойти.

На 27 октомври изследователят Хари Робъртс качва готов експлойт в хранилището на Xiphos Research, който може да качи PHP файл на сървър с уязвима CMS.

Подробности

Е, предисторията приключи, нека да преминем към най-интересната част - анализ на уязвимостта. Инсталирах Joomla 3.6.3 като тестова версия, така че всички номера на редове ще бъдат подходящи за тази версия. И всички пътища до файловете, които ще видите по-долу, ще бъдат посочени спрямо корена на инсталирания CMS.

Благодарение на откритието на Damis Palma знаем, че има два метода, които извършват регистрация на потребители в системата. Първият се използва от CMS и се намира във файла /components/com_users/controllers/registration.php:108. Вторият (този, който ще трябва да извикаме) живее в /components/com_users/controllers/user.php:293. Нека го разгледаме по-отблизо.

286: /** 287: * Метод за регистриране на потребител. 288: * 289: * @return boolean 290: * 291: * @since 1.6 292: */ 293: public function register() 294: ( 295: JSession::checkToken("post") или jexit(JText::_ ("JINVALID_TOKEN")); ... 300: // Вземете данните от формуляра 301: $data = $this->input->post->get("user", array(), "array"); . .. 315: $return = $model->validate($form, $data); 316: 317: // Проверка за грешки 318: if ($return === false) 319: ( ... 345: / / Завършете регистрацията 346: $return = $model->register($data);

Тук оставих само интересни редове. Пълната версия на уязвимия метод може да се види в репозитория на Joomla.

Нека да разберем какво се случва по време на нормална потребителска регистрация: какви данни се изпращат и как се обработват. Ако регистрацията на потребител е активирана в настройките, формулярът може да бъде намерен на http://joomla.local/index.php/component/users/?view=registration.


Законната заявка за регистрация на потребител изглежда като следната екранна снимка.


Компонентът com_users отговаря за работата с потребителите. Обърнете внимание на параметъра на задачата в заявката. Той има формат $controller.$method. Нека да разгледаме файловата структура.

Имената на скриптовете в папката контролерисъответстват на имената на извиканите контролери. Тъй като нашата заявка сега съдържа $controller = "registration", файлът ще бъде извикан регистрация.phpи неговия метод register().

Внимание, въпрос: как да прехвърлите обработката на регистрацията на уязвимо място в кода? Вероятно вече се досещате. Имената на уязвимите и реалните методи са еднакви (register), така че просто трябва да променим името на извикания контролер. Къде се намира нашият уязвим контролер? Точно така, във файла user.php. Оказва се, че $controller = "user" . Събирайки всичко заедно, получаваме task = user.register. Сега заявката за регистрация се обработва по метода, от който се нуждаем.


Второто нещо, което трябва да направим, е да изпратим данните в правилния формат. Тук всичко е просто. Legitimate register() очаква от нас масив, наречен jform, в който предаваме регистрационни данни - име, вход, парола, имейл (вижте екранната снимка със заявката).

  • /components/com_users/controllers/registration.php: 124: // Вземете потребителските данни. 125: $requestData = $this->input->post->get("jform", array(), "array");

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

  • /components/com_users/controllers/user.php: 301: // Вземете данните от формуляра. 302: $data = $this->input->post->get("user", array(), "array");

Затова променяме имената на всички параметри в заявката от jfrom на потребител.

Нашата трета стъпка е да намерим валиден CSRF токен, тъй като без него няма да има регистрация.

  • /components/com_users/controllers/user.php: 296: JSession::checkToken("post") или jexit(JText::_("JINVALID_TOKEN"));

Изглежда като MD5 хеш и можете да го вземете например от формуляра за оторизация на сайта /index.php/component/users/?view=login.


Сега можете да създавате потребители, като използвате желания метод. Ако всичко се получи, тогава поздравления - току-що сте използвали уязвимост CVE-2016-8870„Липсва проверка на разрешение за регистриране на нови потребители.“

Ето как изглежда в „работещия“ метод register() от контролера UsersControllerRegistration:

  • /components/com_users/controllers/registration.php: 113: // Ако регистрацията е деактивирана - Пренасочване към страницата за вход. 114: if (JComponentHelper::getParams("com_users")->get("allowUserRegistration") == 0) 115: ( 116: $this->setRedirect(JRoute::_("index.php?option=com_users&view=) вход", невярно)); 117: 118: връщане невярно; 119: )

И така в уязвими:

  • /components/com_users/controllers/user.php:

Да, няма начин.

За да разберем втория, много по-сериозен проблем, нека изпратим заявката, която създадохме, и да видим как се изпълнява в различни части на кода. Ето частта, която отговаря за валидирането на подадените от потребителя данни в работния метод:

Продължението е достъпно само за членове

Вариант 1. Присъединете се към общността на сайта, за да прочетете всички материали на сайта

Членството в общността в рамките на посочения период ще ви даде достъп до ВСИЧКИ хакерски материали, ще увеличи личната ви кумулативна отстъпка и ще ви позволи да натрупате професионален рейтинг на Xakep Score!

Универсален софтуер, създаден специално за оптични салони, офталмологични клиники, QC кабинети и офталмолози.
Качествено ново ниво на работа за оптични салони и офталмолози.

Компютърна програма "АРМО плюс"

(Медицинско счетоводство и търговия)

  • Единно клиентско досие във всички работни места и клонове.
  • Гъвкава система от отстъпки, работа с карти за отстъпки.
  • Поддържане и осчетоводяване на продажби на едро и дребно, услуги по производство и ремонт на очила, медицински услуги.
  • Бързо въведете и търсете информация по име, като използвате кодове, чрез скенер за баркод.
  • Оптимизиране на заявки за доставка на стоки с помощта на шаблони. Минимизиране на инвентара.
  • Автоматизирано въвеждане на данни от медицински прегледи и генериране на медицински бележки.
  • Издаване на рецепти и автоматизиране на оформянето на поръчки за очила. Счетоводно отчитане на услугите на лекар и магистър.
  • Целенасочена доставка на оперативна информация чрез SMS съобщения за покана на клиенти за час за консултация или планирана смяна на лещи; информиране за акции на дружеството.
  • Обобщени и подробни справки за парични и стокови движения, клиентопотоци, работа с персонала, финансови резултати.
  • Възможност за изтегляне на данни за последваща употреба в 1C: Счетоводство, онлайн магазин и други програми.
  • Следене на индивидуалната дейност на служителите (продажби, насочване за прегледи, предоставяне на отстъпки на клиенти и др.).
  • Конфигуриране на потребителски достъп до функциите на програмата.
  • Автоматизиран обмен на данни между отдалечени работни станции (клонове).
  • Висока степен на защита срещу неоторизиран достъп и копиране на информация. Автоматично архивиране на база данни.

"АРМО плюс" е система, използваща технологии за разпределени бази данни

Проектиран за автоматизация:

Извършване на продажби на едро и дребно;

Приложения за доставка на стоки, контрол на движението на стоки и оставащи стоки на работните места;

Поддържане на електронно клиентско досие с данни от офталмологични прегледи, дневници на консултативни прегледи, издаване на рецепти и поръчки за очила;

Формиране и отпечатване на данни от медицински прегледи;

Генериране на отчети за движението на пари и стоки, клиентските потоци и резултатите от техните проучвания.

За организиране на надеждна и безопасна работа, програмата предоставя разделение на роли, които определят правата на потребителите и техния достъп до информация. Технологии разпределена база даннипозволяват да провеждате експлоатация на мрежа от оптични магазини и офталмологични кабинети.

Указатели и документи

За съхраняване и систематизиране на данни, бързо попълване на документи, справки, пациентски досиета и др. предоставени справочници. Директориите имат удобен интерфейс и работата с тях е интуитивна С помощ документивъвежда се информация за бизнес и финансови транзакции, правят се заявки за стоки, въвеждат се салда Достъпът до директории и документи се определя от администратора на програмата,присвояване на специфични „права“ на потребителите

Възможност за едновременно изпълнение на различни операции

Клиентски файл

Специална роля в ARMO Plus се отделя на поддръжкатаелектронен клиентски файл. Единно клиентско досие съдържа информация за първични данни, анамнеза, диагноза, посещения, дневник за прегледи и офталмологични изследвания, рецепти, поръчки за очила, данни за покупки, заявки и аванси на клиента. Програмата генерира отчети за продажби, поръчки и заявки от клиенти и извлечения от офталмологични прегледи. Създадена е гъвкава схема за отстъпки за клиентите. Има система за известяване чрез SMS и e-mail съобщения.


Основни отчети в ARMO Plus

  • обобщени и подробни справки за приходи, разходи, салда, оборот
  • отчети за приходи
  • предварителни отчети по документи и досиета
  • отчети за контрол на цените на консумативите
  • отчети по заявки и поръчки за очила
  • доклади за срок на годност
  • доклади за документи
  • доклади за клиенти, очаквани посещения, източници на клиенти
  • отчети за клиентски отстъпки
  • обобщени и подробни отчети за персонала

В допълнение към функциите за счетоводство и анализ, отчетите се използват за наблюдение на работата на персонала, продажбите и клиентските потоци.

Разпределена база данни и обмен на данни

Технологията на разпределената база данни позволява работата на географски отдалечени оптики, офталмологични кабинети и филиали. Информацията се предава един на друг чрез електронни пакети за обмен. Благодарение на това се постига синхронизиране на данни на отдалечени работни станции. Така се образува единно пациентско досиеи база данни със справочна и документална информация Фирмите, работещи с ARMO Plus, могат да обменят данни помежду си по електронен път.


Услуга за администриране на база данни

Надеждността на работа се осигурява с помощта на запазванеБаза данни Запазените данни винаги могат да бъдат Възстанови. За компресиране на базата данни е предвидено разтоварване и почистване на данни. ARMO плюс може качване на данни в програмата 1C:Enterprise, Excel, онлайн магазин.



Последни материали в раздела:

Универсален софтуер за оптични салони, офталмологични клиники, кабинети за контактна корекция Компютърна програма
Универсален софтуер за оптични салони, офталмологични клиники, кабинети за контактна корекция Компютърна програма

В Joomla, след успешна регистрация, потребителите по подразбиране се пренасочват към страница за вход (ако акаунтът не трябва да бъде активиран). Оттам...

Тест: Имате ли воля?
Тест: Имате ли воля?

Вие сами знаете, че имате проблеми с волята. Понякога сте неуравновесени и нестабилни в емоционалните прояви, но въпреки това,...

Пълна биография на Джон Гриндер
Пълна биография на Джон Гриндер

Получава класическо образование в йезуитско училище. Джон Грийндър завършва психология в университета в Сан Франциско в началото на 60-те години и...