Определить версию Magento без доступа к базе кода

22

Есть ли способ найти используемую версию Magento без доступа к серверному коду?

Например, как работает этот плагин

https://chrome.google.com/webstore/detail/magento-version-check/aekpbnbbbgocohlbdpdfgghamedmplal

Мои мысли, чтобы проверить на LICENSE.txtили LICENSE_EE.txt. Вы можете по крайней мере определить CE против EE.

Вы также можете использовать год авторского права по умолчанию, styles.cssчтобы сформировать предположение.

Кто-нибудь еще знает лучший способ?

Стив Роббинс
источник
3
Ваш собственный инструмент кажется довольно точным ...
Питер О'Каллаган

Ответы:

26

Magento 1.x

Уведомление об авторских правах /skin/frontend/default/default/css/styles.cssуже является хорошим индикатором.

Это различные уведомления об авторских правах для Magento CE:

Version             @copyright
------------------------------------------------------------------------------------------------
Magento 1.9         Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com)
Magento 1.8         Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
Magento 1.7         Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
Magento 1.6         Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
Magento 1.4.1-1.5   Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
Magento 1.4.0       Copyright (c) 2009 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
Magento 1.0-1.3     Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)

Чтобы различать 1.4 и 1.5, вы должны сделать реальный diff для файлов. Этот зеркальный репозиторий на GitHub может помочь:

https://github.com/OpenMage/magento-mirror/commits/magento-1.5/skin/frontend/default/default/css/styles.css

Magento 2.x

Для магазинов Magento 2 вы получаете версию на серебряной табличке, пока Magento_Versionмодуль не отключен. Просто посетите shop-domain.tld/magento_version. Пример вывода:

Magento/2.1 (Community)

Тем не менее, нет никакой информации о точной версии патча.

Если модуль версии отключен или доступ к этому URL заблокирован, вы также можете проверить таблицу стилей по умолчанию, например /static/frontend/Magento/blank/en_US/css/print.css. Но до сих пор уведомление об авторских правах не говорит о многом:

Version             @copyright
------------------------------------------------------------------------------------------------
Magento 2.0         Copyright © 2016 Magento.
Magento 2.1         Copyright © 2016 Magento.
Фабиан Шменглер
источник
Как я могу увидеть, является ли Magento CE или EE?
Владимир Деспотович
Откройте URL, который существует только в EE
Фабиан Шменглер
Поскольку я не знаю, какой URL существует только в EE, я увидел, что разница между EE и CE также заключается в количестве полей в admin_role. В CE есть 7 полей, а в EE еще около 3, то есть около 10 или около того. Также решена моя проблема с редакцией версии Magento.
Владимир Деспотович
17

Если в магазине по-прежнему установлен модуль Magento Connect, и он не блокирует намеренно этот URL-адрес из общего доступа, к которому можно просто получить доступ по адресу http://www.website.com / downloader, версия будет показана внизу, как показано на этом изображении.

Технически я думаю, что это версия для пакета Downloader, но я никогда не видел, чтобы она не соответствовала полной версии Magento.

введите описание изображения здесь

Джеймс Анелай - TheExtensionLab
источник
Это означает, что если вы зайдете в загрузчик / Maged / Controller.php и посмотрите, public static function getVersionInfo()есть ли массив, который показывает версию. Я думаю, что эта версия также соответствует версии Magento.
Баттл Буткус
8

Вы можете использовать MD5-хэш общедоступных файлов (изображения, CSS, JS), чтобы определить версию.

Это хранилище содержит список хэшей для файлов js, mediaи skinпапок.

Вот уникальные хеши в jsonформате

{
    "skin/adminhtml/default/default/boxes.css": {
        "6aefb246b1bb817077e8fca6ae53bf2c": "CE 1.2.0, CE 1.2.0.1, CE 1.2.0.2, CE 1.2.0.3", 
        "84b67457247969a206456565111c456b": "CE 1.1.2, CE 1.1.3, CE 1.1.4", 
        "0902e89fb50b22d44f8242954a89300c": "EE 1.12.0.0", 
        "8a5c088b435dbcf1bbaac9755d4ed45f": "EE 1.12.0.1, EE 1.12.0.2", 
        "1cbeca223c2e15dcaf500caa5d05b4ed": "CE 1.7.0.0", 
        "d0511b190cdddf865cca7873917f9a69": "CE 1.1.1", 
        "a2c7f9ddda846ba76220d7bcbe85c985": "CE 1.2.1, CE 1.2.1.1, CE 1.2.1.2"
    }, 
    "js/mage/adminhtml/sales.js": {
        "a86ad3ba7ab64bf9b3d7d2b9861d93dc": "CE 1.0", 
        "d80c40eeef3ca62eb4243443fe41705e": "CE 1.5.0.1", 
        "95e730c4316669f2df71031d5439df21": "CE 1.1.0", 
        "bdacf81a3cf7121d7a20eaa266a684ec": "CE 1.5.1.0", 
        "ba43d3af7ee4cb6f26190fc9d8fba751": "EE 1.14.1.0", 
        "c8dd0fd8fa3faa9b9f0dd767b5a2c995": "CE 1.9.1.1", 
        "4422dffc16da547c671b086938656397": "CE 1.4.2.0", 
        "0e400488c83e63110da75534f49f23f3": "CE 1.3.2, CE 1.3.2.1, CE 1.3.2.2, CE 1.3.2.3, CE 1.3.2.4", 
        "48d609bb2958b93d7254c13957b704c4": "CE 1.6.1.0, CE 1.6.2.0", 
        "40417cf4bee0e99ffc3930b1465c74ae": "EE 1.11.2.0", 
        "5656a8c1c646afaaf260a130fe405691": "CE 1.8.1.0", 
        "17da0470950e8dd4b30ccb787b1605f5": "CE 1.1.5, CE 1.1.6", 
        "aeb47c8dfc1e0b5264d341c99ff12ef0": "EE 1.11.0.2", 
        "ec6a34776b4d34b5b5549aea01c47b57": "EE 1.10.0.2", 
        "a0436f1eee62dded68e0ec860baeb699": "CE 1.9.1.0", 
        "5112f328e291234a943684928ebd3d33": "CE 1.1.7, CE 1.1.8", 
        "7ca2e7e0080061d2edd1e5368915c267": "EE 1.10.1.1", 
        "a4296235ba7ad200dd042fa5200c11b0": "CE 1.6.0.0", 
        "9a5d40b3f07f8bb904241828c5babf80": "EE 1.13.1.0", 
        "3fe31e1608e6d4f525d5db227373c5a0": "EE 1.13.0.0, EE 1.13.0.2", 
        "26c8fd113b4e51aeffe200ce7880b67a": "CE 1.8.0.0", 
        "839ead52e82a2041f937389445b8db04": "CE 1.3.3.0", 
        "d1bfb9f8d4c83e4a6a826d2356a97fd7": "CE 1.3.1, CE 1.3.1.1"
    }, 
    "js/mage/adminhtml/product.js": {
        "e887acfc2f7af09e04f8e99ac6f7180d": "CE 1.3.0"
    }, 
    "skin/frontend/rwd/default/css/styles.css": {
        "bf6c8e2ba2fc5162dd5187b39626a3a0": "CE 1.9.0.1", 
        "5373978891051983da47ac5064b4b2b9": "EE 1.14.0.1", 
        "8a874fcb6cdcb82947ee4dbbe1822f3e": "CE 1.9.0.0", 
        "bd66fd43fecd7ca1e293226bb11e1658": "EE 1.14.0.0"
    }, 
    "js/prototype/validation.js": {
        "295494d0966637bdd03e4ec17c2f338c": "CE 1.4.1.0", 
        "d3252becf15108532d21d45dced96d53": "CE 1.4.1.1"
    }, 
    "js/mage/adminhtml/tools.js": {
        "86bbebe2745581cd8f613ceb5ef82269": "CE 1.7.0.1, CE 1.7.0.2", 
        "ea81bcf8d9b8fcddb27fb9ec7f801172": "CE 1.3.2.2", 
        "d594237950932b9a3948288a020df1ba": "CE 1.3.2.3, CE 1.3.2.4, CE 1.3.3.0"
    }, 
    "js/lib/flex.js": {
        "4040182326f3836f98acabfe1d507960": "CE 1.4.0.1", 
        "eb84fc6c93a9d27823dde31946be8767": "CE 1.4.0.0"
    }
}

Например, если мы тестируем демонстрационный магазин Magento

$ curl -s http://demo.magentocommerce.com/skin/frontend/rwd/default/css/styles.css | md5
8a874fcb6cdcb82947ee4dbbe1822f3e

Мы видим, что хеш соответствует CE 1.9.0.0.

С это может выглядеть так

$url = 'http://demo.magentocommerce.com/';

foreach ((array)json_decode(file_get_contents('hashes.json')) as $file => $hash) {
    $md5 = md5(file_get_contents($url . $file));
    if (isset($hash[$md5])) {
        echo $hash[$md5];
        break;
    }
}

Обратите внимание, что это может не работать, если файлы свернуты, исправлены, имеют разные окончания строк и т. Д.

Стив Роббинс
источник
4

Если у вас есть доступ к панели администратора, вы можете проверить ее через нижний колонтитул для версии magento

В противном случае, если разрешение не изменено, вы можете проверить файл RELEASE_NOTES.txt на наличие версии magento, которая может легко определить, является ли это EE или сообществом.

Шаббир
источник
0

Нет , было бы плохо, если бы это было публично опубликовано. С точки зрения безопасности это нормально, не всем всем рассказывать.

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

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

Вы можете сделать это, хотя (всем нужен определенный уровень доступа):

  • серверная сторона (заглянуть внутрь app/Mage.php) и проверитьapp/etc/modules
  • войдите в админпанель и посмотрите версию в нижнем колонтитуле
  • запустить Magerun сервер (вы можете сделать гораздо больше)
  • Используйте вызов API magento.info
Йерун
источник
Как уже упоминалось в вопросе, у меня нет доступа на стороне сервера, поэтому этот ответ не будет работать для меня.
Стив Роббинс
0

Я использовал, magescanчтобы определить удаленную версию Magento:

https://github.com/steverobbins/magescan

Он также может сканировать уровень исправлений, информацию о сервере, установленные модули, каталог, карту сайта, недоступные пути и, конечно, версию. Это PHP phar и может быть установлен с помощью composer.

Типичное использование:

$ magescan.phar scan:all store.example.com
adejones
источник