P

PrimHunter

+32
Репутация
14
Рейтинг
#1 Бесплатный шаблон от cms-admin 24 марта 2013 в 16:37
Посмотрел дальше.
Залез в неимоверные дебри. Создатель сделал все, что бы как можно сильнее усложнить жизнь пытающемуся разобраться где, что и как работает.
Забил. Слишком много всего перелопачено. Что-то можно лехко пропустить.
Реально проще, дешевле и безопасней сделать клон этого дела самому. Но это уже не ко мне.
#2 Бесплатный шаблон от cms-admin 24 марта 2013 в 15:31

Чистый шаблон без линков на сторонние ресурсы yadi.sk/d/Tfwo_c6k3PnBQ — Забираем — Sahifa_1.1.7

ssh2k

Прости, дорогой, но он не чистый.

Заморочился, начал проверять шаблон буквально построчно. Проверил всего несколько файлов пока.

Что я могу сказать — очень, ОЧЕНЬ большая работа проделана создателем шаблона. Сам шаблон сделан вполне профессионально, красивый, все ок. Скачают и поставят его очень многие.

А теперь о том, что большинство не заметит. ВО ВСЕХ компонентах намеренно сделаны дыры в безопасности, не влияющие на работоспособность. Я еще раз повторюсь — пока только начал смотреть, всего несколько файлов из дефолтного и обсуждаемого сравнил. Честно, я вот для себя его скорее всего допилю, уберу намеренно сделанные дыры, и буду использовать. НО! Этого автора просто необходимо предать анафеме, повешанию, четвертованию и расстрелу после повешания. Ибо это есть социальная инженерия, мошенничество, неправомерный доступ к информации и так далее.

Я так подозреваю, что автор вполне с дальним прицелом этот шаблон делал. Как только появится несколько более-менее генерирующих траффик сайтов — можно с них бабло сосать постоянно. Ну и много еще чем можно воспользоваться. Короче, парни, это не шаблон а В этом месте может быть ваш БАН, читайте правила сайта. Предохраняйтесь.
#3 [ЕСТЬ РЕШЕНИЕ] Разработчикам: cmsUser::createUser($user) в ядре - куда дели? 24 марта 2013 в 10:27
Ок, спасибо. хоть узнал куда копать )) Но информация была бы не полной без вот этого:


$back_url = $inUser->signInUser($user['login'], $user['password'], 1, 1);

$inCore->redirect($back_url); exit;

Собственно, для тех кто сюда заглянет — uLogin начинает прекрасно работать после перевода на UTF и замены строчек в plugin.php
  1. $_SESSION['user'] = cmsUser::createUser($user);
  2.  
  3. cmsCore::callEvent('USER_LOGIN', $_SESSION['user']);
на вот это:

  1. $back_url = $inUser->signInUser($user['login'], $user['password'], 1, 1);
  2.  
  3. $inCore->redirect($back_url); exit;
  4.  
и плюс в начале функции объявить $inUser

  1. $inUser = cmsUser::getInstance();
PS: Fuze, ну чего ты меня ввел в заблуждение? сразу не сказал, что передается 4 параметра, а не три? последний параметр $pass_in_md5 = [0|1] Два часа потратил не понимая чего ему надо...

PPS а есть вообще полное описание всех функция ядра? так методом научного тыка тяжко изучать.
#1 [ЕСТЬ РЕШЕНИЕ] Разработчикам: cmsUser::createUser($user) в ядре - куда дели? 22 марта 2013 в 09:09
Пытаюсь прикрутить uLogin к 1.10.1. Плагин матерится на ошибку в строке
  1. $_SESSION['user'] = cmsUser::createUser($user);
Действительно, в ядре нет такой функции. Скопировал из версии 1.9 — ulogin заработал. Но не оставляет ощущение неправильности такого подхода. Раз эту функцию выпилили — значит зачем-то это нужно?

Собственно, вопрос: как теперь правильно работать с логином пользователей? сам поковырял — не нашел как в самом инстанте это сейчас реализовано.

Можно, конечно, оставить и так, но не повлияет ли это на безопасность?

ЗЫ
что б не пришлось лезть в плагин и ядро:

в плагине вызывается вот это:
  1. $sql = "SELECT *
  2. FROM cms_users
  3. WHERE id = '{$user_id}'";
  4.  
  5. $result = $inDB->query($sql);
  6.  
  7. if ($inDB->num_rows($result) == 1) {
  8.  
  9. $current_ip = $_SERVER['REMOTE_ADDR'];
  10. $user = $inDB->fetch_assoc($result);
  11.  
  12. if (!cmsUser::isBanned($user['id'])) {
  13.  
  14. while (isset($user['main_id']) && $user['main_id'] !=0 ){
  15.  
  16. $main_id = $user['main_id'];
  17. $sql = "SELECT *
  18. FROM cms_users
  19. WHERE id = '{$main_id}'";
  20.  
  21. $result = $inDB->query($sql);
  22.  
  23. if ($inDB->num_rows($result) == 1) {
  24.  
  25. $main_user = $inDB->fetch_assoc($result);
  26.  
  27. if (!cmsUser::isBanned($user['id'])) {
  28.  
  29. $user = $main_user;
  30. $user_id = $main_id;
  31.  
  32. }else{
  33.  
  34. $inDB->query("UPDATE cms_banlist SET ip = '$current_ip' WHERE user_id = " . $user['id'] . " AND status = 1");
  35. break;
  36.  
  37. }
  38. }else{
  39.  
  40. break;
  41.  
  42. }
  43.  
  44. }
  45.  
  46. $_SESSION['user'] = cmsUser::createUser($user);
  47.  
  48. cmsCore::callEvent('USER_LOGIN', $_SESSION['user']);
  49.  
функция, которой нет в новой версии инстанта:

  1. public static function createUser($_userdata){
  2.  
  3. $inDB = cmsDatabase::getInstance();
  4. $user = $_userdata;
  5.  
  6. $sql = "SELECT alias, access, is_admin FROM cms_user_groups WHERE id = ".$user['group_id'];
  7. $result = $inDB->query($sql);
  8. $_groupdata = $inDB->fetch_assoc($result);
  9. $user['group'] = $_groupdata['alias'];
  10.  
  11. $access = str_replace(', ', ',', $_groupdata['access']);
  12. $access = explode(',', $access);
  13.  
  14. $user['access'] = array();
  15. $user['access'] = $access;
  16.  
  17. $user['is_admin'] = $_groupdata['is_admin'];
  18.  
  19. return $user;
  20.  
  21. }
  22.  
#4 Тест обновления безопасности 1.9 7 июня 2012 в 14:30
к сожалению не все нормально. В форумах совсем нет текстов постов.

Процедура проверки простая — ставим дефолтный движок, заходим в форумы — все нормально. накатываем патч — текстов сообщений в форуме нет. Сравнил /components/forum/frontend.php — отличие в пару строк, возврат к изначальной версии файла результата не приносит. Куда копать?
#5 Пользователь удаляет других пользователей 20 мая 2012 в 13:58


Да, в данном случае пользователь сам нажимал на ссылку. А если совместить это с дыркой с тегом "embed" из соседней ветки — переход по этой ссылке будет автоматически при открытии сообщения. И никаких активных действий. Получил личное сообщение, открыл посмотреть что там — и все, нет тебя.

PrimHunter
Более того. Многие тут видели фокус когда открываешь тему форума и ты оффлайн. А теперь представим что Артем закатал в том посте не выход из логина а другое… Половина пользователей теперь курила бы.

Нил

ну я собственно об этом и говорил…
#6 Пользователь удаляет других пользователей 20 мая 2012 в 05:11


CyberMan, привели два варианта устранения
1. добавить вопрос "Вы действительно хотите снести свой профиль?"
2. удалить из файла код, который отвечает за удаление профиля

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

SJen

Да, в данном случае пользователь сам нажимал на ссылку. А если совместить это с дыркой с тегом "embed" из соседней ветки — переход по этой ссылке будет автоматически при открытии сообщения. И никаких активных действий. Получил личное сообщение, открыл посмотреть что там — и все, нет тебя.
#7 И еще один взлом версии 1.9 Need help!!! 19 мая 2012 в 10:06


А сработает интересно если например выхватить в тексте перед его записью в базу теги

BODY ONLOAD

PrimHunter
и

KS

я не профессионал в пхп и безопасности, думаю что сработает, но решение половинчатое. Кроме того, embed так-то нужный тег, к примеру видео вставлять или еще чего… так что надо как-то по другому.
#8 И еще один взлом версии 1.9 Need help!!! 19 мая 2012 в 07:32
там два куска: первый демонстрирует легкость внедрения xss, второй кусок — вызывает страницу logout, т.е. как будто вы нажали на ссылку "выйти".
  1. <div class="forum_lostimg">Файл "<BODY ONLOAD=alert('XSS')>" не найден!</div> пилите баги, руки с мылом мойте! чпоки чпоки <div class="forum_lostimg">Файл "<EMBED SRC="/logout" ></EMBED>" не найден!</div>
#9 И еще один взлом версии 1.9 Need help!!! 19 мая 2012 в 06:38


PrimHunter, тебе будет урок, как ломать мою подругу, и не надо отпираться только)

Артем

Дурачок неразумный. Головой подумай — если б я умел кого-то ломать — я б здесь сейчас не спрашивал как же меня сломали, а сам бы разобрался. У меня други цели и задачи в жизни, нежели ломать кого-то.
#10 И еще один взлом версии 1.9 Need help!!! 19 мая 2012 в 06:21
Годика на четыре-пять ты себе уже наваял, юный падаван. А за оскорбления — со сломанными ногами на нары поедешь.
#11 И еще один взлом версии 1.9 Need help!!! 19 мая 2012 в 05:21
Ну вот собственно и красавчик-ломальщик собственной персоной — сообщение №32 вот тут: instantcms.ru/forum/thread9731-3.html

ВНИМАНИЕ, при переходе по этой ссылке вы будете разлогинены
#12 И еще один взлом версии 1.9 Need help!!! 19 мая 2012 в 03:19
Ну вот именно это незнание и беспокоит больше всего… Знать бы как, что б закрыть дырку… А то как голая девка на площади — заходи кто хочешь, бери что хочешь )))
#13 И еще один взлом версии 1.9 Need help!!! 18 мая 2012 в 18:43
Ну что ж… очень плохо… По итогам получается, что кто-то где-то как-то убивает половину базы (учитывая, что сайт совсем мелкий, порядка 300 человек в сутки), а оставшуюся половину меняет на то, что его левая пятка пожелает; и вариантов решения проблемы не предвидится.
С другой стороны — этот сайт был просто так, для души. Доход он не приносил, да и не планировался. Создан был три года назад в момент сложной жизненной ситуации, работал, помогал людям.
Но я знаю, кто против существования моего сайта. Есть подобный сайт, так скажем "конкуренты", mneploho.net. Появились позже, испоьзуют тот же инстант, быстро раскачались, и именно люди с этого ресурса сломали мой сайт, в этом я уверен на 146%, и даже готов предоставить переписку с одним из завсегдатаев того сайта с угрозами.
Самое печальное — то, что люди готовы идти на подобные поступки, не парясь никакими моральными принципами — у них "бизнес".
Что ж, я уже готов признать поражение — бизнес в очередной раз перечеркнул все добрые начинания.
#14 И еще один взлом версии 1.9 Need help!!! 18 мая 2012 в 07:55
К хостеру обратился, но к сожалению ничем помочь они не смогли. Точнее, видимо не захотели.

Х: В панели управления, "Log файлы", включите логи посещений, после чего, как повторится проблема, фиксируете ее время и смотрите по логам, какие шли запросы к сайту, соответственно по этим данным и закрываете уязвимости.

Я: Логи включены, но знаний, что бы разобраться, к сожалению не хватает… нет ли у вас подобной услуги — найти дырки, и вынести какие-то рекомендации?

Х: Нет, к сожалению таких услуг у нас нет.


По поводу фтп — если б был доступ к фтп — пошалили бы и с другими сайтами, которые лежат на том же фтп в папках рядышком.

Кстати, часть картинок после первого раза была с сайта удалена, а все остальное на первый взглад не тронуто, из чего дедуктивным методом можно делать вывод, что доступ получен через редактор…
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.