Критические уязвимости безопасности Opencart

Тема в разделе "OpenCart", создана пользователем Владимир Z, 15 янв 2013.

  1. Владимир Z

    Владимир Z

    Регистрация:
    12 янв 2013
    Сообщения:
    73
    Симпатии:
    30
    Если вы еще не столкнулись со взломом своего драгоценного магазина. Призываю как можно скорее обновиться.
    Эта тема не сильно разжована, но проблемы очень серьезные.
    Все версии до 1.5.4.1 подвержены дырам в безопасности.
    Если у вас никаких проблем не было - это не значит, что ваша база уже не скопирована.
    Чем старее версия тем больше дыр.
     
  2. CTAH

    CTAH

    Регистрация:
    12 ноя 2012
    Сообщения:
    299
    Симпатии:
    1.382
    Дай больше информации, чем именно заключается проблема
     
  3. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    Владимир Z, доказательства, примеры, шеллы, эксплойты.

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

    так что приведите хоть какие-нибудь доказательства в пользу дыр в opencart.
     
  4. Владимир Z

    Владимир Z

    Регистрация:
    12 янв 2013
    Сообщения:
    73
    Симпатии:
    30
    Я подумал не стоит здесь выкладывать сами дыры. Они четко описаны и есть рабочие эксплоиты.
     
  5. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    ну так чего ж не стоит, стоит. Их можно залатать, если знать где они.
     
  6. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    Это известный факт, что 1.5.3.1 и 1.4.9.3 - по безопасности не сравнимы, но без аргументов, могу лишь улыбнуться...
     
    halfhope и vupik нравится это.
  7. Владимир Z

    Владимир Z

    Регистрация:
    12 янв 2013
    Сообщения:
    73
    Симпатии:
    30
    Одна дыра связана с восстановлением паролей - таким образом можно получить полные права на панель управления, вторая с загрузкой файлов на сервер.
    Мною лично проверены 1.5.3.1 подвержены.
    Решение очень простое контроллеры заменить с 1.5.4.1 изменения не коснуться совместимости с модулями и прочим.
     
  8. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    паблик эксплойты есть к версиям: 1.4.9, 1.5.1.2 и 1.5.2.1
    больше никаких упоминаний нет.

    p.s. Но я и не говорю что дыр нет. Короче нужны конкретные примеры дыр)
     
  9. Владимир Z

    Владимир Z

    Регистрация:
    12 янв 2013
    Сообщения:
    73
    Симпатии:
    30
    Улыбайтесь, я вам не мешаю.
    Я доказывать ничего не буду, поделился как воспринимать - решать каждому.
     
  10. alex_storm

    alex_storm webdev

    Регистрация:
    11 дек 2012
    Сообщения:
    1.151
    Симпатии:
    667
    Тема просто не о чем!!
    Примеры покажите и варианты решения проблем.
    А так это все пустой треп.
     
  11. IvanCo

    IvanCo

    Регистрация:
    23 дек 2012
    Сообщения:
    56
    Симпатии:
    5
    Очень интересно, т.к. у меня полтора десятка магазинов на опенкарте (свои + поддержка). Порыл соответствующие форумы - не нашел ничего вопиющего. Можно ссылку на менее гуманитарное описание дыр? И почему именно 1.5.4.1 - такая уж пуленепробиваемая?
     
  12. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    Вместо замены контроллеров, просто добавьте и в админке выключайте (
    ):
    Код:
    <modification>
    	<id>AntiHack</id>
    	<version>0.1</version>
    	<vqmver>2.0.7</vqmver>
    	<author>Baco</author>
    	<file name="admin/controller/common/forgotten.php">
    		<operation>
    			<search position="before">
    			<![CDATA[$this->language->load('common/forgotten');]]>
    			</search>
    			<add>
    			<![CDATA[
    			if (!$this->config->get('config_password')) {
    						$this->redirect($this->url->link('common/login', '', 'SSL'));}
    		]]>
    			</add>
    		</operation>
    	</file>
    	<file name="admin/controller/common/login.php">
    		<operation>
    			<search position="replace">
    			<![CDATA[$this->data['forgotten'] = $this->url->link('common/forgotten', '', 'SSL');]]>
    			</search>
    			<add>
    			<![CDATA[
    			if ($this->config->get('config_password')) {
    				$this->data['forgotten'] = $this->url->link('common/forgotten', '', 'SSL');
    					} else {
    				$this->data['forgotten'] = '';
    				}
    		]]>
    			</add>
    		</operation>
    	</file>
    	<file name="admin/controller/common/reset.php">
    		<operation>
    			<search position="before">
    			<![CDATA[if (isset($this->request->get['code'])) {]]>
    			</search>
    			<add>
    			<![CDATA[
    			if (!$this->config->get('config_password')) {
    				$this->redirect($this->url->link('common/login', '', 'SSL'));
    				}
    		]]>
    			</add>
    		</operation>
    		<operation>
    			<search position="before">
    			<![CDATA[return $this->forward('common/login');]]>
    			</search>
    			<add>
    			<![CDATA[
    			$this->model_setting_setting->editSettingValue('config', 'config_password', '0');
    		   
    		]]>
    			</add>
    		</operation>
    	</file>
    	<file name="admin/controller/setting/setting.php">
    		<operation>
    			<search position="before">
    			<![CDATA[$this->data['entry_encryption'] = $this->language->get('entry_encryption');]]>
    			</search>
    			<add>
    			<![CDATA[
    			$this->data['entry_password'] = $this->language->get('entry_password');
    		]]>
    			</add>
    		</operation>
    		<operation>
    			<search position="before">
    			<![CDATA[if (isset($this->request->post['config_encryption'])) {]]>
    			</search>
    			<add>
    			<![CDATA[
    			if (isset($this->request->post['config_password'])) {
    				$this->data['config_password'] = $this->request->post['config_password'];
    					} else {
    				$this->data['config_password'] = $this->config->get('config_password');
    				}
    		]]>
    			</add>
    		</operation>
    	</file>
    	<file name="admin/language/*/setting/setting.php">
    		<operation>
    			<search position="before">
    			<![CDATA[$_['entry_encryption']]]>
    			</search>
    			<add>
    			<![CDATA[
    			$_['entry_password']			  = 'Allow Forgotten Password:<br /><span class="help">Allow forgotten password to be used for the admin. This will be disabled automatically if the system detects a hack attempt.</span>';
    		]]>
    			</add>
    		</operation>
    	</file>
    	<file name="admin/model/setting/setting.php">
    		<operation>
    			<search position="before">
    			<![CDATA[public function deleteSetting($group, $store_id = 0) {]]>
    			</search>
    			<add>
    			<![CDATA[
    			public function editSettingValue($group = '', $key = '', $value = '', $store_id = 0) {
    			if (!is_array($value)) {
    				$this->db->query("UDPATE " . DB_PREFIX . "setting SET `value` = '" . $this->db->escape($value) . " WHERE `group` = '" . $this->db->escape($group) . "' AND `key` = '" . $this->db->escape($key) . "' AND store_id = '" . (int)$store_id . "'");
    					} else {
    				$this->db->query("UDPATE " . DB_PREFIX . "setting SET `value` = '" . $this->db->escape(serialize($value)) . "' WHERE `group` = '" . $this->db->escape($group) . "' AND `key` = '" . $this->db->escape($key) . "' AND store_id = '" . (int)$store_id . "', serialized = '1'");
    					}
    				}
    		]]>
    			</add>
    		</operation>
    	</file>
    	<file name="admin/view/template/common/login.tpl">
    		<operation>
    			<search position="replace">
    			<![CDATA[<a href="<?php echo $forgotten; ?>"><?php echo $text_forgotten; ?></a></td>]]>
    			</search>
    			<add>
    			<![CDATA[<?php if ($forgotten) { ?>
    					<a href="<?php echo $forgotten; ?>"><?php echo $text_forgotten; ?></a>
    				<?php } ?>
    			</td>
    		]]>
    			</add>
    		</operation>
    	</file>
    	<file name="admin/view/template/setting/setting.tpl">
    		<operation>
    			<search position="before">
    			<![CDATA[<td><?php echo $entry_encryption; ?></td>]]>
    			</search>
    			<add>
    			<![CDATA[<td><?php echo $entry_password; ?></td>
    				<td><?php if ($config_password) { ?>
    					<input type="radio" name="config_password" value="1" checked="checked" />
    				<?php echo $text_yes; ?>
    					<input type="radio" name="config_password" value="0" />
    				<?php echo $text_no; ?>
    					<?php } else { ?>
    					<input type="radio" name="config_password" value="1" />
    				<?php echo $text_yes; ?>
    					<input type="radio" name="config_password" value="0" checked="checked" />
    				<?php echo $text_no; ?>
    					<?php } ?></td>
    				</tr>
    			<tr>
    		]]>
    			</add>
    		</operation>
    	</file>
       
    </modification>
    				
     
    halfhope, cobalt и alex_storm нравится это.
  13. musicfront

    musicfront

    Регистрация:
    26 сен 2012
    Сообщения:
    84
    Симпатии:
    20
    i'm running 1 site with opencart 1.5.4, anyone here can explain more about this vulnerability. and how to patch? 200 post to view. you're so funny.


     
    shrot нравится это.
  14. Gomer

    Gomer

    Регистрация:
    2 янв 2013
    Сообщения:
    57
    Симпатии:
    16
    Интересный топик. Судя по всему только для админа. Я пока до 200 сообщений доживу - тема будет не актуальна. Новые версии раз 3-4 месяца и выходят)
     
  15. Владимир Z

    Владимир Z

    Регистрация:
    12 янв 2013
    Сообщения:
    73
    Симпатии:
    30
    Так написано же обновитесь до последней версии и известные проблемы вас не коснуться.
     
  16. bassoto

    bassoto

    Регистрация:
    8 ноя 2012
    Сообщения:
    48
    Симпатии:
    36
    где гарантии что в новой нету дыр? Я давно обновился но сомневаюсь то там нет дыр..
     
  17. Владимир Z

    Владимир Z

    Регистрация:
    12 янв 2013
    Сообщения:
    73
    Симпатии:
    30
    Вы абсолютно правы, гарантий нет. Но в ней пока нет известных, а этого разве мало?
    Перефразирую, что лучше знать что ваш магазин 100% можно испортить или размышлять возможно есть проблемы.
     
  18. ILM

    ILM

    Регистрация:
    15 янв 2013
    Сообщения:
    77
    Симпатии:
    21
    Согласен, что неразумно выкладывать в паблик подробности по дырам и способам их использования.
    А вот баг-фиксы в паблик выложить стоит.
     
    Владимир Z нравится это.
  19. venjerts

    venjerts

    Регистрация:
    16 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    Жаль я об этом узнал поздно, меня ломанули на 1.5.3.1
     
  20. WildeRNS

    WildeRNS

    Регистрация:
    6 ноя 2012
    Сообщения:
    151
    Симпатии:
    112
    через востановление пароля?