Bahay Pag-iwas Pangkalahatang software para sa mga optical salon, klinika ng ophthalmology, contact correction room. Pangkalahatang software para sa mga optical salon, klinika ng ophthalmology, contact correction room Patuloy na magagamit t

Pangkalahatang software para sa mga optical salon, klinika ng ophthalmology, contact correction room. Pangkalahatang software para sa mga optical salon, klinika ng ophthalmology, contact correction room Patuloy na magagamit t

Pangkalahatang software na partikular na idinisenyo para sa mga optical salon, klinika ng ophthalmology, mga opisina ng QC, at mga ophthalmologist.
Isang qualitatively bagong antas ng trabaho para sa mga optical salon at ophthalmologist.

Programa sa kompyuter "ARMO plus"

(Medical accounting at kalakalan)

  • Isang pinag-isang file ng customer sa lahat ng lugar ng trabaho at sangay.
  • Flexible na sistema ng mga diskwento, gumana sa mga discount card.
  • Pagpapanatili at pag-account para sa pakyawan at tingi na pagbebenta, paggawa ng baso at mga serbisyo sa pagkumpuni, serbisyong medikal.
  • Mabilis na magpasok at maghanap ng impormasyon ayon sa pangalan, gamit ang mga code, sa pamamagitan ng isang barcode scanner.
  • Pag-optimize ng mga kahilingan para sa supply ng mga kalakal gamit ang mga template. Pagbawas ng imbentaryo.
  • Awtomatikong pagpasok ng data mga medikal na pagsusuri at paghahanda ng mga medikal na tala.
  • Pag-isyu ng mga reseta at pag-automate ng pagbuo ng mga order para sa baso. Accounting para sa mga serbisyo ng isang doktor at isang master.
  • Naka-target na paghahatid ng impormasyon sa pagpapatakbo gamit ang mga mensaheng SMS upang anyayahan ang mga kliyente sa isang appointment sa konsultasyon o naka-iskedyul na pagpapalit ng lens; nagpapaalam tungkol sa pagbabahagi ng kumpanya.
  • Buod at detalyadong mga ulat sa mga paggalaw Pera at mga kalakal, daloy ng customer, pagganap ng tauhan, mga resulta sa pananalapi.
  • Posibilidad ng pag-download ng data para sa kasunod na paggamit sa 1C: Accounting, online na tindahan, at iba pang mga programa.
  • Pagsubaybay sa indibidwal na aktibidad ng mga empleyado (mga benta, mga referral para sa mga pagsusuri, pagbibigay ng mga diskwento sa mga kliyente, atbp.).
  • Pag-configure ng access ng user sa mga function ng program.
  • Awtomatikong pagpapalitan ng data sa pagitan ng mga malalayong workstation (mga sangay).
  • Mataas na antas ng proteksyon laban sa hindi awtorisadong pag-access at pagkopya ng impormasyon. Awtomatikong pag-archive ng database.

Ang "ARMO plus" ay isang sistema na gumagamit ng mga teknolohiyang distributed database

Idinisenyo para sa automation:

Pagsasagawa ng pakyawan at tingi na pagbebenta;

Mga aplikasyon para sa supply ng mga kalakal, kontrol sa paggalaw ng mga kalakal at natitirang mga kalakal sa mga lugar ng trabaho;

Pagpapanatili ng isang electronic client file na may data mga pagsusuri sa ophthalmological, mga talaarawan ng consultative examinations, mga reseta at mga order para sa salamin;

Pagbubuo at pag-print ng data ng medikal na pagsusuri;

Pagbuo ng mga ulat sa mga paggalaw ng pera at mga kalakal, daloy ng customer, at ang mga resulta ng kanilang mga survey.

Upang ayusin ang maaasahan at ligtas na operasyon, ang programa ay nagbibigay ng isang dibisyon sa mga tungkulin na tumutukoy sa mga karapatan ng gumagamit at ang kanilang pag-access sa impormasyon. Mga teknolohiya ibinahagi database hayaan kang magsagawa pagpapatakbo ng isang network ng mga optical store at opisina ng ophthalmology.

Mga Direktoryo at Dokumento

Para sa pag-iimbak at pag-systematize ng data, mabilis na punan ang mga dokumento, ulat, mga file ng pasyente, atbp. ibinigay mga sangguniang aklat. Ang mga direktoryo ay may user-friendly na interface at ang pakikipagtulungan sa kanila ay madaling maunawaan Sa tulong mga dokumento Ang impormasyon tungkol sa mga transaksyon sa negosyo at pananalapi ay ipinasok, ang mga kahilingan para sa mga kalakal ay ginawa, ang mga balanse ay ipinasok Ang pag-access sa mga direktoryo at dokumento ay tinutukoy ng tagapangasiwa ng programa,pagtatalaga ng mga partikular na "karapatan" sa mga user

Posibilidad ng sabay-sabay na pagpapatupad iba't ibang operasyon

File ng kliyente

Ang isang espesyal na tungkulin sa ARMO Plus ay itinalaga sa pagpapanatilielectronic na file ng kliyente. Ang isang pinag-isang file ng kliyente ay naglalaman ng impormasyon tungkol sa pangunahing data, anamnesis, diagnosis, mga pagbisita, isang talaarawan ng mga eksaminasyon at ophthalmological na eksaminasyon, mga reseta, mga order para sa baso, data sa mga pagbili, mga aplikasyon at mga pagsulong ng kliyente. Ang programa ay bumubuo ng mga ulat sa mga benta, mga order at mga kahilingan mula sa mga kliyente, at mga extract mula sa mga pagsusuri sa ophthalmological. Isang flexible discount scheme ang naka-set up para sa mga kliyente. Mayroong sistema ng abiso sa pamamagitan ng SMS at mga mensaheng e-mail.


Mga pangunahing ulat sa ARMO Plus

  • buod at detalyadong mga ulat sa kita, gastos, balanse, turnover
  • mga ulat ng kita
  • maagang mga ulat sa mga dokumento at file
  • mga ulat sa pagkontrol sa mga presyong nagagamit
  • mga ulat sa mga aplikasyon at mga order para sa baso
  • mga ulat sa buhay ng istante
  • mga ulat ng dokumento
  • mga ulat sa mga kliyente, inaasahang pagbisita, mga mapagkukunan ng kliyente
  • mga ulat ng diskwento ng customer
  • buod at detalyadong mga ulat sa mga tauhan

Bilang karagdagan sa mga pag-andar ng accounting at pagsusuri, ginagamit ang mga ulat upang subaybayan ang gawain ng mga kawani, benta, at daloy ng customer.

Ibinahagi ang database at pagpapalitan ng data

Binibigyang-daan ang distributed database technology sa trabaho ng mga geographically remote optician, ophthalmology office, at branches. Ang impormasyon ay ipinapadala sa isa't isa sa pamamagitan ng mga electronic exchange packet. Dahil dito, nakakamit ang pag-synchronize ng data sa mga malalayong workstation. Ito ay kung paano ito nabuo pinag-isang file ng pasyente at isang database ng sanggunian at dokumentaryo na impormasyon Ang mga kumpanyang nagtatrabaho sa ARMO Plus ay maaaring makipagpalitan ng data sa isa't isa sa elektronikong paraan.


Serbisyo ng pangangasiwa ng database

Ang pagiging maaasahan ng operasyon ay sinisiguro sa pamamagitan ng konserbasyon Database Ang naka-save na data ay maaaring palaging ibalik. Upang i-compress ang database, ibinibigay ang pag-unload at paglilinis ng data. Pwede ang ARMO plus mag-upload ng data sa 1C:Enterprise program, Excel, online na tindahan.

Sa Joomla, pagkatapos ng matagumpay na pagpaparehistro, ang mga user bilang default ay na-redirect sa a Pahina sa pag-login(kung ang account ay hindi kailangang i-activate). Mula doon (pagkatapos mag-log in) ang mga gumagamit ay na-redirect sa a profile ng gumagamit pahina. Nangyayari ito kahit na mayroon kang Login Redirection na nakatakda sa ibang bagay Module ng Form sa Pag-login.

Upang baguhin ang gawi na ito maaari mong i-redirect ang mga user pagkatapos ng pagpaparehistro sa anumang iba pang pahina sa iyong website.
Upang gawin ito kailangan mong mag-edit ng isang pangunahing Joomla file. Magkaroon ng kamalayan na ang iyong mga pagbabago ay maaaring ma-overwrite ng isang Joomla update. Palaging idokumento ang mga pagbabagong gagawin mo sa mga core Joomla file para mabilis mong magawa muli ang mga ito kung kinakailangan.

Buksan ang file:
components/com_users/controllers/registration.php

Mag-scroll pababa sa pinakailalim. Panimulang linya 162 o kaya magkakaroon ka ng dumadaloy na code:

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", mali )); ) else ( $this -> setMessage (JText::_() ); $this -> setRedirect (JRoute::_( "index.php?option=com_users&view=login", mali )); )

Sa seksyong ito mayroon kang 3 link simula index.php?

  • Ang una () ay isasagawa pagkatapos ng pagpaparehistro ng user kung ang account ay kailangang i-activate ng isang administrator
  • Pangalawa ( index.php?option=com_users&view=registration&layout=complete), kung ang account ay kailangang i-activate ng user
  • pangatlo ( index.php?option=com_users&view=login), kung hindi kinakailangan ang pag-activate ng account.

Palitan ang mga link depende sa uri ng pagpaparehistro na ginagamit mo sa BUONG URL ng iyong pahina ng pag-redirect at tapos ka na.
Halimbawa, kung hindi kinakailangan ang pag-activate ng user sa aking website at gusto kong i-redirect ang mga user pagkatapos ng pagpaparehistro sa http://www.mywebsite.com/welcome-reg ang na-update na code ay:

// I-redirect sa screen ng profile. if ($return === "adminactivate") ( $this -> setMessage (JText::_( "COM_USERS_REGISTRATION_COMPLETE_VERIFY")); $this -> setRedirect(JRoute::_( "index.php?option=com_users&view=registration&layout=complete", mali )); ) kung hindi ($return === "useractivate") ( $this -> setMessage (JText::_( "COM_USERS_REGISTRATION_COMPLETE_ACTIVATE")); $this -> setRedirect(JRoute::_( "index.php?option=com_users&view=registration&layout=complete", mali )); ) iba pa ( $this -> setMessage (JText::_( "COM_USERS_REGISTRATION_SAVE_SUCCESS")); $this -> setRedirect(JRoute::_( "http://www.mywebsite.com/welcome-reg" , mali )); )

Anuman ang pahina sa iyong website na ire-redirect mo, mensahe ng system " Salamat sa pagpaparehistro..." ay ipapakita pa rin. Kung hindi mo gusto ang mensaheng ito, alisin ang buong linya sa itaas ng iyong redirection URL. hal. $this->setMessage(JText::_("COM_USERS_REGISTRATION_SAVE_SUCCESS"));

Kung hindi mo kailangan ang pag-activate ng account (Bagong User Account Activation nakatakda sa wala) ito lang ang kailangan mo para maiwasan ang page ng User Profile. Gayunpaman, kung kailangang i-activate ng user ang account sa pamamagitan ng email (Account Activation set to Sarili) maaaring hindi ito sapat. Kaagad pagkatapos ng pagpaparehistro ang user ay ire-redirect sa isang web page na ibinigay sa iyo sa code tulad ng inaasahan. Gayunpaman, kapag nag-click ang user sa isang link sa activation email, dadalhin sila sa naunang nabanggit na login form at kung gagamitin nila ito sa pag-login, mapupunta sila sa page ng User Profile. Upang maiwasan ito, maaari mong ganap na i-disable ang page ng User Profile at sa halip ay i-redirect ang mga user sa anumang page na gusto mo. Basahin ang artikulong ito para malaman kung paano.

Joomla 1.6
Joomla 1.7
Joomla 2.5

Ngayon ay titingnan natin ang pagsasamantala sa isang kritikal na 1-araw na kahinaan sa sikat na CMS Joomla, na sumabog sa Internet sa katapusan ng Oktubre. Ito ay tungkol tungkol sa mga kahinaan sa mga numero CVE-2016-8869, CVE-2016-8870 At CVE-2016-9081. Lahat ng tatlo ay nagmula sa isang piraso ng code, na lima sa mahabang taon nanlumo sa kaibuturan ng balangkas, naghihintay sa mga pakpak, para lamang makalaya at magdala ng kaguluhan, mga na-hack na site at luha ng mga inosenteng gumagamit ng Joomla na ito. Tanging ang pinakamatapang at matapang na mga developer, na ang mga mata ay namumula sa liwanag ng mga monitor, at ang mga keyboard ay puno ng mga mumo ng tinapay, ang nagawang hamunin ang nagngangalit na masasamang espiritu at inihiga ang kanilang mga ulo sa altar ng pag-aayos.

BABALA

Ang lahat ng impormasyon ay ibinigay para sa mga layuning pang-impormasyon lamang. Ang mga editor o ang may-akda ay walang pananagutan para sa anuman posibleng pinsala sanhi ng mga materyales ng artikulong ito.

Kung saan nagsimula ang lahat

Noong Oktubre 6, 2016, gumawa si Demis Palma ng isang paksa sa Stack Exchange kung saan nagtanong siya: bakit, sa katunayan, sa Joomla version 3.6 mayroong dalawang paraan para sa pagrerehistro ng mga user na may parehong pangalan register()? Ang una ay nasa UsersControllerRegistration controller at ang pangalawa ay nasa UsersControllerUser controller. Nais malaman ni Damis kung ginamit ang paraan ng UsersControllerUser::register() sa isang lugar, o kung isa lamang itong evolutionary anachronism na natitira sa lumang logic. Ang kanyang pag-aalala ay na kahit na ang pamamaraang ito ay hindi ginagamit ng anumang view, maaari itong tawagan ng isang ginawang query. Kung saan nakatanggap ako ng tugon mula sa isang developer sa ilalim ng palayaw na itoctopus, na nagkumpirma: ang problema ay talagang umiiral. At nagpadala ng ulat sa mga developer ng Joomla.

Pagkatapos ang mga kaganapan ay nabuo nang pinakamabilis. Noong Oktubre 18, tinanggap ng mga developer ng Joomla ang ulat mula kay Damis, na noong panahong iyon ay naka-draft na ng PoC na magpapahintulot sa pagpaparehistro ng user. Nag-publish siya ng isang tala sa kanyang website, kung saan sa pangkalahatang balangkas nakipag-usap tungkol sa problemang nakita niya at sa kanyang mga saloobin sa bagay na ito. Lalabas sa parehong araw isang bagong bersyon Joomla 3.6.3, na naglalaman pa rin ng vulnerable code.

Pagkatapos nito, iniikot ni Davide Tampellini ang bug hanggang sa hindi ito mairehistro simpleng user, at ang tagapangasiwa. At noong Oktubre 21, isang bagong kaso ang dumating sa pangkat ng seguridad ng Joomla. Pinag-uusapan na nito ang tungkol sa pagtaas ng mga pribilehiyo. Sa parehong araw, lumabas ang isang anunsyo sa website ng Joomla na sa Martes, Oktubre 25, ang susunod na bersyon ay ilalabas na may serial number 3.6.3, na nag-aayos ng isang kritikal na kahinaan sa kernel ng system.

Oktubre 25 Nahanap ng Joomla Security Strike Team ang pinakabagong problemang ginawa ng piraso ng code na natuklasan ni Damis. Pagkatapos, ang isang commit na may petsang Oktubre 21 na may hindi kapansin-pansing pangalan na Prepare 3.6.4 Stable Release ay itutulak sa pangunahing sangay ng opisyal na repositoryo ng Joomla, na nag-aayos sa kapus-palad na bug.

Pagkatapos nitong lumabas, maraming interesadong indibidwal ang sumali sa komunidad ng developer - sinimulan nilang i-promote ang kahinaan at maghanda ng mga pagsasamantala.

Noong Oktubre 27, ang mananaliksik na si Harry Roberts ay nag-upload ng handa nang pagsasamantala sa Xiphos Research repository na maaaring mag-upload ng PHP file sa isang server na may mahinang CMS.

Mga Detalye

Well, ang background ay tapos na, lumipat tayo sa pinaka-kagiliw-giliw na bahagi - pagsusuri ng kahinaan. Nag-install ako ng Joomla 3.6.3 bilang isang pagsubok na bersyon, kaya lahat ng mga numero ng linya ay magiging may-katuturan para sa bersyon na ito. At ang lahat ng mga landas sa mga file na makikita mo sa ibaba ay ipahiwatig na may kaugnayan sa ugat ng naka-install na CMS.

Salamat sa pagtuklas ni Damis Palma, alam namin na mayroong dalawang paraan na nagsasagawa ng pagpaparehistro ng user sa system. Ang una ay ginagamit ng CMS at matatagpuan sa file /components/com_users/controllers/registration.php:108. Ang pangalawa (ang kakailanganin nating tawagan) ay nakatira sa /components/com_users/controllers/user.php:293. Tingnan natin ito nang maigi.

286: /** 287: * Paraan para magrehistro ng user. 288: * 289: * @return boolean 290: * 291: * @since 1.6 292: */ 293: public function register() 294: ( 295: JSession::checkToken("post") o jexit(JText::_ ("JINVALID_TOKEN")); ... 300: // Kunin ang data ng form 301: $data = $this->input->post->get("user", array(), "array"); .315: $return = $model->validate($form, $data); // Suriin ang mga error 318: if ($return === false) Tapusin ang pagpaparehistro 346: $return = $model->register($data);

Dito lamang ako nag-iwan ng mga kagiliw-giliw na linya. Ang buong bersyon ng mahinang pamamaraan ay maaaring matingnan sa imbakan ng Joomla.

Alamin natin kung ano ang nangyayari sa normal na pagpaparehistro ng user: anong data ang ipinapadala at kung paano ito pinoproseso. Kung ang pagpaparehistro ng user ay pinagana sa mga setting, ang form ay makikita sa http://joomla.local/index.php/component/users/?view=registration.


Ang isang lehitimong kahilingan sa pagpaparehistro ng user ay kamukha ng sumusunod na screenshot.


Ang bahagi ng com_users ay responsable para sa pakikipagtulungan sa mga user. Bigyang-pansin ang parameter ng gawain sa kahilingan. Mayroon itong format na $controller.$method . Tingnan natin ang istraktura ng file.

Mga pangalan ng mga script sa folder mga controllers tumutugma sa mga pangalan ng tinatawag na controllers. Dahil ang aming kahilingan ay naglalaman na ngayon ng $controller = "registration" , ang file ay tatawagin pagpaparehistro.php at ang register() na pamamaraan nito.

Pansin, tanong: paano ilipat ang pagpoproseso ng pagpaparehistro sa isang masusugatan na lugar sa code? Malamang nahulaan mo na. Ang mga pangalan ng mga mahina at tunay na pamamaraan ay pareho (magrehistro), kaya kailangan lang nating baguhin ang pangalan ng tinatawag na controller. Saan matatagpuan ang aming vulnerable controller? Tama, sa file user.php. Lumalabas na $controller = "user" . Ang pagsasama-sama ng lahat ay makakakuha tayo ng gawain = user.register . Ngayon ang kahilingan sa pagpaparehistro ay pinoproseso ng paraang kailangan namin.


Ang pangalawang bagay na kailangan nating gawin ay ipadala ang data sa tamang format. Simple lang ang lahat dito. Inaasahan ng lehitimong register() mula sa amin ang isang array na tinatawag na jform , kung saan ipinapasa namin ang data ng pagpaparehistro - pangalan, login, password, email (tingnan ang screenshot kasama ang kahilingan).

  • /components/com_users/controllers/registration.php: 124: // Kunin ang data ng user. 125: $requestData = $this->input->post->get("jform", array(), "array");

Nakukuha ng aming kliyente ang data na ito mula sa isang array na tinatawag na user.

  • /components/com_users/controllers/user.php: 301: // Kunin ang data ng form. 302: $data = $this->input->post->get("user", array(), "array");

Samakatuwid, binago namin ang mga pangalan ng lahat ng mga parameter sa kahilingan mula sa jfrom sa user .

Ang aming ikatlong hakbang ay ang paghahanap ng wastong token ng CSRF, dahil kung wala ito ay walang pagpaparehistro.

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

Mukhang isang MD5 hash, at maaari mo itong kunin, halimbawa, mula sa form ng pahintulot sa site /index.php/component/users/?view=login.


Ngayon ay maaari kang lumikha ng mga gumagamit gamit ang nais na paraan. Kung ang lahat ay gumana, pagkatapos ay binabati kita - sinamantala mo lamang ang isang kahinaan CVE-2016-8870"Nawawalang tseke ng pahintulot para sa pagpaparehistro ng mga bagong user."

Ito ang hitsura sa "gumagana" na paraan ng rehistro() mula sa controller ng UsersControllerRegistration:

  • /components/com_users/controllers/registration.php: 113: // Kung hindi pinagana ang pagpaparehistro - I-redirect sa pahina ng pag-login. 114: if (JComponentHelper::getParams("com_users")->get("allowUserRegistration") == 0) 115: ( 116: $this->setRedirect(JRoute::_("index.php?option=com_users&view=) login", false)); 117: 118: return false; 119: )

At kaya sa mahina:

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

Oo, hindi pwede.

Upang maunawaan ang pangalawa, higit pa seryosong problema, ipapadala namin ang kahilingang nabuo namin at susubaybayan kung paano ito isinasagawa sa iba't ibang seksyon ng code. Narito ang piraso na responsable para sa pagpapatunay ng data na isinumite ng user sa paraan ng manggagawa:

Ang pagpapatuloy ay magagamit lamang sa mga miyembro

Pagpipilian 1. Sumali sa komunidad ng “site” para basahin ang lahat ng materyal sa site

Ang membership sa komunidad sa loob ng tinukoy na panahon ay magbibigay sa iyo ng access sa LAHAT ng materyales ng Hacker, dagdagan ang iyong personal na pinagsama-samang diskwento at magbibigay-daan sa iyong makaipon ng propesyonal na Xakep Score rating!



Bago sa site

>

Pinaka sikat