Office-Free.ru

блог об индивидуальном предпринимательстве

Шопскрипт: с почином!

Май 4, 2009 | Рубрика Новости

Так лень и не хочется в деталях все описывать, но, пожалуй, напишу.

Я уже некоторое время думаю о том, что движок магазина Shop Script мне больше совершенно не подходит. Во-первых, всплыла ужасно раздражающая меня недоработка: время от времени он позволяет заказывать товары, которых больше нет в наличии. Я предполагаю, что это происходит так: допустим, добавила я на сайт 8 единиц чего-то. Оно понравилось Маше, и она добавила 5 штук себе в корзину. Потом ее отвлекли и она с сайта ушла, а 5 штук чего-то осталось лежать в ее корзине (типа как в вишлисте). Через какое-то время пришла Даша и купила 4 штуки этого чего-то. Через два дня Маша вспомнила о своем неоформленном заказе, зашла на сайт, открыла корзину с пятью штуками чего-то, и оформила заказ. В итоге 4 единицы товара я отправляю Даше, а когда доходит очередь до Машиного заказа, то обнаруживается следующее: Маша заказала и оплатила 5 штук чего-то, а фактически у меня в наличии есть только 4. Захожу в админку, смотрю на эту позицию, а там написано: Есть в наличии: —1. Офигенно! Нечасто, но бывало и минус 2, 3, 5 и так далее. Если оплата наличными при получении, то это не так страшно. Но половину заказов я отправляю в другие города по предоплате, и мне постоянно приходится возвращать деньги за отсутствующие товары с извинениями. При этом перед оплатой проверять каждый заказ вручную на наличие всех позиций не представляется возможным, у меня около тысячи наименований и заказы часто бывают на пару листов формата А4. Я подозреваю, что запрос к базе о количестве товаров на складе идет только когда человек кладет товары в корзину. Вот тогда Шопскрипт не дает положить больше, чем есть по базе. Но в момент оформления заказа он не проверяет количество заново, а просто тупо списывает то, что заказывают, и количество на складе может уйти в минус.

Вторая беда — уязвимости, уязвимости и еще раз уязвимости. На днях пришел и наш черед стать жертвами кулхацкеров. Совершенно неожиданно нами был обнаружен несанкционированный файл products.php.fla, в котором было вот что:

?PHP
//Authentication
$login = ""; //Login
$pass = ""; //Pass
$md5_pass = ""; //If no pass then hash
eval(gzinflate(base64_decode('набор символов')));
?>

Фик знает, что эта хренота делает, но, судя по бекапам, она как минимум 3 месяца тихо-спокойно лежала на серваке в файлах и никого не трогала. А 3 мая пошла движуха: в шопскрипте есть функция автоматом выдавать покупателю квитанцию на оплату заказа после его совершения. В квитанции всегда были мои банковские реквизиты, а тут они поменялись на эти:

Получатель платежа
Наименование: ООО «ПС Яндекс.Деньги»
Счет: 40702810017030006135 в ВТБ 24 (ЗАО) ИНН: 7736554890 КПП: 773601001
Наименование банка: в ОПЕРУ Московского ГТУ Банка России
Кор. счет: 30101810100000000716Платеж по договору №41001374169975, без НДС.* БИК: 044525716

То есть, покупатель делает заказ, распечатывает квитанцию и идет платить какому-то левому чуваку (я так подозреваю, что это фишка для пополнения чьего-то кошелька Яндекс-Денег через банк). Здорово придумано, чего и говорить! Реквизиты для квитанции прописываются через админку вручную, и я так подозреваю, что если их мануально заменить на правильные, то через некоторое время опять там будет левак, и наверняка этот products.php.fla к этому причастен. В общем, нам невероятно повезло, что мы вовремя заметили, что реквизиты рассылаются не наши. Мы все это удалили, покупателям отписались, пароли везде сменили, но неприятный осадочек остался. Не совсем понятно, каким образом этот файл попал на сервак. Вообще, как оказалось, через админку можно загрузить на сервер какой угодно файл, как раз в ту папку, где был этот products.php.fla. Достаточно создать новый товар, отметить галочку “продукт является программой” и прицепить любой файл. Потом, чтобы не было никаких подозрений, этот товар в админке удаляется - а файл на сервере остается. Дальше все еще более путанно и туманно. Чтобы зайти в админку и загрузить на сервак файл, нужно знать пароль. Как они его узнали? Защищен ли шопскрипт от брутфорса? Вредоносный файл попал через админку или все-таки через фтп? Какого фига он лежал молча несколько месяцев?

Почему, в конце концов, разработчики шопскрипта не написали своим пользователям письмо типа “Проверьте папку такую-то на наличие такого-то файла”?? Мы ставили заплатку, но, возможно, поставили ее уже тогда, когда подцепили эту гадость.

В общем, я жутко недовольна и расстроена. Задумалась о том, чтобы отвалить тысяч сто за кастомный скрипт, лишь бы от меня отвалили.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Комментарии

11 комментариев к “Шопскрипт: с почином!”

  1. svoedelo on Май 5th, 2009 8:11

    Доброе утро! Давно слежу за вашим проектом :) Проблема известная, может мы сможем помочь? Нам интересно сделать скрипт для реального интернет магазина, …даром делать конечно не будем, но и больших денег тоже не нужно!

    В любом случае обещаю, что отнесемся со всей серьезностью, да и опыт кое-какой есть!

  2. Andrey on Май 5th, 2009 10:04

    У вас просто Shop Script или новый ихний WebAsyst Shop-Script? Последний вроди постоянно развивается…

  3. Олег on Май 5th, 2009 11:41

    А разве оплату покупатель осуществляет не после того как товар отгружен? Т.е. е было бы логичнее собрать все заказы вместе, а потом связаться с покупателем и сообщить ему что товар можно идти оплачивать? Так многие делают.

  4. 500k on Май 5th, 2009 13:26

    Да, в этом - недостаток готовых движков с открытым кодом - в том, что каждая зараза может скачать исходники и найти дырку.
    По поводу заказа товаров больше, чем имеется в наличии - нужно проверить, сохраняется ли корзина после ухода пользователя с сайта (то есть она может помимо сессии - в рамках одного открытого окна, храниться еще в cookie - чтобы вернувшись на сайт через неделю в корзине оставались товары) и если сохраняется - убрать эту функцию.

    В принципе, можно не делать новый сайт с нуля, а доработать нормально текущий - все тобой перечисленное довольно просто ликвидируется, хотя конечно проблема дырок останется.

    В целом, сделать нормальный движок ста тысяч не нужно, это все можно сделать дешевле - главное чтобы человек надежный попался.

    Удачи тебе и пиши почаще :) А то мы все скучаем по твоим постам :)

  5. Таня З. on Май 5th, 2009 17:08

    Andrey, просто шопскрипт. Из поддержки мне отписали, что проблема известная и заплатку выпускали. Мы ее устанавливали, только почему-то не спасло. Возможно, инфицирован был уже давно, еще до того, как поставили заплатку, и только сейчас проснулся.

    Олег, а мы так не делаем, мы не собираем заказы до того, как они оплачены (исключение - курьер и самовывоз). Из заказов, оформленных на доставку почтой, оплачиваются около двух третей, а треть заказов я отменяю, т.к. оплата не внесена в разумные сроки. Я не знаю, с чем это связано, люди делают заказ и не оплачивают его.

    500k, да, товары в корзине хранятся до следующего возвращения, эту фишку можно использовать как вишлист :) Правда, я не знаю, куки это или что-то другое - не помню точно, но мне кажется, что я с разных компьютеров логинилась и товары были в корзине. Хотя могу и ошибаться, надо проверить.
    Движок мы итак дорабатываем, на эту штуку техзадание программеру уже дано. А от дырок да, не спасешься.

  6. Алексей on Май 11th, 2009 23:41

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

  7. Виктор on Май 13th, 2009 10:58

    Шоп скрипт, конечно, тихий ужас, и даже всякие про версии не стоят тех денег, которые за них просят.
    Например, на хабре как-то мелькал такой скрипт
    http://simplacms.ru/
    у меня стоят creload - лучше оскоммерца, но все равно деревянный.
    Друг делал магазин на джумле и виртумарте.
    Сейчас смотрю на Cs cart

  8. Максим Бобков on Май 20th, 2009 10:14

    Кстати, в тему вредоносного кода на сайте:
    http://webmaster.ya.ru/replies.xml?item_no=4163

  9. Максим on Май 22nd, 2009 1:11

    У меня http://simplacms.ru/
    Проверил - сделать заказ невозможно, если кто-то успел заказать пока ты свою корзину рассматривал. Все четко.

    Так же и оплата онлайн не проходит, если товара не хватает

  10. Софья on Октябрь 9th, 2009 22:41

    Ну вот, кстати, если поиском поискать :) этот счет 40702810017030006135, то много всякой лабуды на тему отбора денег у граждан всплывает.
    И сборка авторучек на дому, и помощь инвалиду, и руководство по киберсантингу, и прочая, прочая.
    Работают люди :) И остальные параметры вроде сопадают - все случаи, конечно, не проверяла.
    Мошенники, короче.

  11. Таня З. on Октябрь 9th, 2009 23:11

    Софья, этот счет принадлежит самим яндекс-деньгам. Смотреть нужно не на него, а на назначение платежа. В данном случае было “Платеж по договору №41001374169975″.
    Приходят деньги по такой квитанции на общий счет яндекс-денег, а потом яндекс-деньгами перечисляются на яндекс-кошелек хозяину договора 41001374169975.

    Именно поэтому там и авторучки, и прочее, прочее.

Оставить комментарий