Уязвимость в SMF 1.1.4.

Автор Mavn, 01 апреля 2008, 11:17:42

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Mavn

При включенном register globals атакующий  может получить права администратора.

При помощи специального SQL запроса можно получить хэш пароля в алгоритме sha1(strtolower($username).$password) после чего сбрутить его с помощью одной программки. Если у кого то включен register globals лучше его отключите!!!



PS (от Simple Machines Russian Community)

Судя по тому что код в smf 2.0 и smf 1.1.4 для данного участка почти идентичен, то делаем вывод что линейка smf 2.0 тоже имеет данную уезвимость. Исходя из анализа кода можно сделать вывод что фиксом данном проблемы будет добавление небольшого изменения в код файла Sources/QueryString.php



 
// We've got topic!
 
if (isset($_REQUEST['topic']))
 {
  
// Make sure its a string and not something else like an array
  
$_REQUEST['topic'] = (string) $_REQUEST['topic'];

  
// Slash means old, beta style, formatting.  That's okay though, the link should still work.
  
if (strpos($_REQUEST['topic'], '/') !== false)
   list (
$_REQUEST['topic'], $_REQUEST['start']) = explode('/'$_REQUEST['topic']);
  
// Dots are useful and fun ;).  This is ?topic=1.15.
  
elseif (strpos($_REQUEST['topic'], '.') !== false)
   list (
$_REQUEST['topic'], $_REQUEST['start']) = explode('.'$_REQUEST['topic']);

  
$topic = (int) $_REQUEST['topic'];

  
// Now make sure the online log gets the right number.
  
$_GET['topic'] = $topic;
 }


после добавить


 
else
  
$topic 0;


PSS поскольку я не программист то могу ошибаться но уязвимость связана именно с тем что не определена переменная $topic вследствии чего при

Цитата: Журнал Хакерregister_globals = ON можно определить $topic через COOKIE и обойти фильтрацию.

Данная Новость опубликована по материалам журнала Хакер!!!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

fancar

а в версии 1.1.2 есть эта дыра? что то не вижу такого параметра, регистр глобалс

Mavn

Цитата: fancar от 01 апреля 2008, 11:32:14
а в версии 1.1.2 есть эта дыра? что то не вижу такого параметра, регистр глобалс
наверняка есть...
register_globals это параметры php а не форума!!!!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

fancar

ааа  wallbash. тьфу. ) смотрю че то знакомое

у меня в /etc/php.ini  выключено  angel

Dastali

Проверил... выключено.. на всякий запихал в .htaccess - php_flag register_globals off

Vened

дурацкий вопрос: а как проверить, включен этот параметр или нет?

leksus

Сейчас у большинства хостеров глобалсы выключены, только если кто специально включил (и если хостер разрешает менять этот параметр, что, кстати, не есть хорошо.)

Vened, создаешь в корне файл phpinfo.php с содержимым:
<?
phpinfo();
?>

Запускаешь в браузере, ищешь строчку "register_globals"

kas

Цитировать
Проверил... выключено.. на всякий запихал в .htaccess - php_flag register_globals off

спасибки. важный совет. надеюсь это поможет ::)
No comments

vladok

Сегодня у хостера выключено, завтра сдуру включит -иди знай...

    // We've got topic!
    if (isset($_REQUEST['topic']))
    {
        // Make sure that its a string and not something else like an array
        $_REQUEST['topic'] = (string)$_REQUEST['topic'];
       
        // Slash means old, beta style, formatting.  That's okay though, the link should still work.
        if (strpos($_REQUEST['topic'], '/') !== false)
            list ($_REQUEST['topic'], $_REQUEST['start']) = explode('/', $_REQUEST['topic']);
        // Dots are useful and fun.  This is ?topic=1.15.
        elseif (strpos($_REQUEST['topic'], '.') !== false)
            list ($_REQUEST['topic'], $_REQUEST['start']) = explode('.', $_REQUEST['topic']);

        $topic = (int) $_REQUEST['topic'];

        // Now make sure the online log gets the right number.
        $_GET['topic'] = $topic;
    }
    else
  $topic = 0;


Вот так?
Харе кришна, май либер зольдат...

InSide

Вот тут про регистре глобалс оч подробно расписано :
http://citforum.ru/internet/php/register_globals/
Зачем же быть душою общества, <br />Когда души в нем вовсе нет. (c) В.С.Высоцкий

kagorec

На недели смотрел на хакер.ру превью журнала свежего, где было написано в их жанре:
Сижу как то вечером и от нечего делать решил просмотреть смф движок якобы не убываемый  и после просмотра заметил багу... блаблабла чтото про кукисы.
Покупать в лом, но на трекере популярном запостил запрос на этот журнал.
-
Интерестно как отреагировал офф форум, или русские всегда впереди? =)
SMF - отличная альтернатива платному  vBulletin форуму. Разница в 250$ ощутима =)))
Интеграция DLE + SMF любой версии, 100% гарантии нет но основные функции работать будут независимо от версий.

Костя

Всем привет.
Я программист РНР, хотя самоучка. Был бы весьма признателен, если бы кто-нибудь объяснил, хотя бы в общих чертах, как именно, задав фальшивое значение для переменной $topic, можно получить администраторский пароль?

Pautinych


KapaBG

Цитата: Костя от 01 апреля 2008, 13:47:44
Всем привет.
Я программист РНР, хотя самоучка. Был бы весьма признателен, если бы кто-нибудь объяснил, хотя бы в общих чертах, как именно, задав фальшивое значение для переменной $topic, можно получить администраторский пароль?
как два палца. вводиш русскиме букваме в латинском регистри севоднешнее число, месяц. и седьмой слово в странице ответа суеш в брутефорс. это ейцо розроботчиков, которе расколол журнолист "хакера"

Костя

Княже, спасибо за ответ, но я честно говоря, ничего не понял. Подбор пароля через брутфорс - это (на сколько я понимаю) именно ПОДБОР пароля, как же это может быть связано с register_globals?

Может я чего-то не понимаю, но по-моему, либо это вовсе не уязвимость, либо это не то место, где имелась в виду уязвимость. Смотрите, в этом блоке обеспечивается следующая функциональность: если скрипту передан аргумент topic, то проверяется, не содержит ли он кроме номера ветки ещё и номер сообщения, на которое нужно прокрутить страницу. Этот номер сообщения может быть отделён от номера ветки либо косой чертой, либо точкой. В случае, если одно из двух содержится, то аргумент topic разбивается по этому разделителю на два: собственно topic  и start. Если не содержит, то он остаётся таким как есть.
Уязвимости, связанные с register_globals основаны вот на чём. Если нерадивый программист использует в своём скрипте некоторую переменную раньше, чем задаёт ей значение, то скрипт (при определённых установках сигнализации об ошибках) может при этом вроде как работать нормально. Включённая опция register_globals означает, что все аргументы скрипта ($_GET[...], $_POST[...], $_COOKIES[...]) становятся доступны так же и через одноимённые переменные. То есть, к примеру, если был передан аргумент $_GET['topic'], то РНР автоматически создаёт переменную $topic и присваивает ей значение $_GET['topic']. Таким образом, если в скрипте где-то использовалась переменная $topic раньше, чем ей было задано значение, то хакер может передать скрипту аргумент $_GET['topic'], его значение попадёт в переменную $topic, и это заставит скрипт работать как-то иначе.
Вернёмся теперь к нашему блоку кода. Если хакер, как он пишет, собирается передать что-то через куки, то есть через $_COOKIES['topic'], то $_REQUEST['topic'] окажется заданной, блок будет выполнен, и в любом случае (содержит ли переданное значение точку, или косую черту, или ничего из этого) будет выполнена строка: $topic = (int) $_REQUEST['topic'];, то есть в переменную $topic  попадёт целое число. Максимум, то есть самое худшее, чего может тут добится хакер, это попытка открыть несуществующую ветку, что конечно же не является уязвимостью, и нормально обрабатывается скриптом SMF.

KapaBG

Костя? blind injection тебе штоньть говорит?

Костя

До сих пор не говорило, сейчас поискал по сети, почитал, вроде понял что это. Но главное не понял - как это связано с нашим случаем? Ведь, как я писал, если хакер передаёт скрипту что-либо (что угодно) в качестве $topic, то в переменную $topic попадёт целое число. То есть, если хакер передал строку типа "1 AND EXISTS(SELECT * FROM users WHERE user='admin' AND password='12345')", то в переменную $topic попадёт число, не так ли?

bbbbbb

там еще есть опции

; Whether or not to register the old-style input arrays, HTTP_GET_VARS
; and friends.  If you're not using them, it's recommended to turn them off,
; for performance reasons.
register_long_arrays = On

; This directive tells PHP whether to declare the argv&argc variables (that
; would contain the GET information).  If you don't use these variables, you
; should turn it off for increased performance.
register_argc_argv = On

; When enabled, the SERVER and ENV variables are created when they're first
; used (Just In Time) instead of when the script starts. If these variables
; are not used within a script, having this directive on will result in a
; performance gain. The PHP directives register_globals, register_long_arrays,
; and register_argc_argv must be disabled for this directive to have any affect.
auto_globals_jit = On

Mavn

чуть позже может быть выложу видео на данную тему.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kagorec

Mavn аха не помешало бы, вечером если не появиться сам достать попробую.
SMF - отличная альтернатива платному  vBulletin форуму. Разница в 250$ ощутима =)))
Интеграция DLE + SMF любой версии, 100% гарантии нет но основные функции работать будут независимо от версий.

kas

У меня в phpinfo это:

register_argc_argv On On
register_globals Off On
register_long_arrays On On


это что значит? т.е. нужно все в off делать или достаточно лишь register_globals off??
No comments

Dastali

достаточно только register_globals off

aleksandr.v

Получил новость по почте. Первая мысль - первое апреля. Ан нет...

vladok

Вот ломаки и до SMF со скуки добрались.
Популярнее становимся, что ли? :)
***

Сунул багфиксу в скрипт. Целее будет :)
Харе кришна, май либер зольдат...

kas

#24
согласен. тоже внес изменения от греха...
и хочется все-же увидеть, как можно поломать. т.е. видео (ничего плохого не имея в мыслях! ::))

ну вот, честно написал, а уже в карму срут...  :o
No comments

slash

тото я гляжу, у меня второй день на форуме новые админы появляються))

bbbbbb

первое апреля - никому не веря  >:(

Artemius

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

Набоков

      Я всё-таки не понял, если выключить register_globals то вносить правку необязательно, и если внести правку, то register_globals можно не выключать? Нельзя ли прояснить?  :)

Mavn

лучше пофиксить и выключить. пока жду ответа от разработчиков. как только получу ответ дам ссылку на видео
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

digger®

Цитата: Бергсон от 01 апреля 2008, 20:00:28
      Я всё-таки не понял, если выключить register_globals то вносить правку необязательно, и если внести правку, то register_globals можно не выключать? Нельзя ли прояснить?  :)

register_globals должно быть выключено в обязательном порядке!
В php5 оно выключено по умолчанию, а php6 его вообще не будет.

Serifa

У меня Версия PHP 4.4.4
А главное: я так и не поняла, где искать эту  register_globals ?? Там полно всяких ссылок типа Statistics Software Configuration... И так приходится каждый раз хостера в асе вылавливать и спрашивать, где там чего...

Ну почему такие элементарные вещи не преподавали в школе?
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

Adept

Цитата: Dastali от 01 апреля 2008, 11:41:44
Проверил... выключено.. на всякий запихал в .htaccess - php_flag register_globals off
Сделал данный способ, при этом сразу стало выдавать ошибку хостинга 500. Убрал  запись, все заработало снова.

Mavn

Цитата: Adept от 01 апреля 2008, 22:13:31
Сделал данный способ, при этом сразу стало выдавать ошибку хостинга 500. Убрал  запись, все заработало снова.
Если 500 ошибка значит изменение данной директивы запрещено хостером. Для выключения данной директивы просите хостера сделать это!

His Divine Shadow Для начала читайте чего пишут!
Цитата: Dastali от 01 апреля 2008, 11:41:44
в .htaccess - php_flag register_globals off
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

slash

Цитата: His Divine Shadow от 01 апреля 2008, 21:58:17
У меня Версия PHP 4.4.4
А главное: я так и не поняла, где искать эту  register_globals ?? Там полно всяких ссылок типа Statistics Software Configuration... И так приходится каждый раз хостера в асе вылавливать и спрашивать, где там чего...

Ну почему такие элементарные вещи не преподавали в школе?
в php.ini или через .htaccess если хостинг разрешает
Цитата: Adept от 01 апреля 2008, 22:13:31
Сделал данный способ, при этом сразу стало выдавать ошибку хостинга 500. Убрал  запись, все заработало снова.
Не все хостинги разрешают прописывать какиенибудь значения в .htaccess, что и вызывает ошибку 500

axel

либо mawn где-то не там нашел "уязвимость", либо проблема надуманна.

KVL

Цитата: axel от 02 апреля 2008, 12:07:56
либо mawn где-то не там нашел "уязвимость", либо проблема надуманна.
Проблема не надумана, по безопасности (для безопасности), по умолчанию, у всех нормальных хостеров это должно быть выключено.

Mavn

Цитата: axel от 02 апреля 2008, 12:07:56
либо mawn где-то не там нашел "уязвимость", либо проблема надуманна.
Можете это считать первоапрельской шуткой если вам будет от этого легче.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

axel

Цитата: KVL от 02 апреля 2008, 12:26:12
Проблема не надумана, по безопасности (для безопасности), по умолчанию, у всех нормальных хостеров это должно быть выключено.
про register_globals я не говорю, я имею ввиду конкретную "уязвимость", описанную в топике.

Цитата: Mavn от 02 апреля 2008, 12:32:29
Можете это считать первоапрельской шуткой если вам будет от этого легче.
я знал, я знал! (с) :)

savirmir

Цитата: Mavn от 02 апреля 2008, 12:32:29
Можете это считать первоапрельской шуткой если вам будет от этого легче.

Хм... так можем или не можем? ;)
Всё же, уважаемый Mavn, проясните ситуацию, а?..
Уже ведь почти 3-е апреля... :)
А если и вправду... :(

ЗЫ. Команду-то я проверю, а вот в коды без особой необходимости соваться бы не хотелось...

Mavn

А чего именно вам прояснить ? Я не мальчик который сидит и от нефига делать клепает всякую ерунду в новостях только для того чтобы народ всполошился! Тем кто хочет считать новость шуткой пусть дальше так и считают! Инфу о данной уязвимости нашел всех оповестил дальше что делать решайте сами, у меня других забот хватает без разъяснений...
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

KapaBG

Mavn не шутил, http://dvd.xakep.ru/
ЦитироватьВ этом видео от Elect'а, ты увидишь как хакер способен взломать свиду защищенный движок SMF. В принципе, теория полностью расписана в моей статье, но увидеть живую практику еще никогда не мешало. Сначала взломщик замечает, что может использовать в кукизах завершение строки %0A (несмотря на все фильтры и немыслимые запреты), а затем выделяет логические 0 и 1 для посимвольного брута. Итог сему - написание эксплойта для админского хэша. Его хакер и использует для получения прав админа (с предварительной расшифровкой хэша в PasswordPro, разумеется)
http://rapidshare.com/files/102498458/Moy_perviy_vzlomaniy_dvozhok.7z

bbbbbb

в куках фильтрация стоит одинаковая, ну там пару строк - такая как и на всех форум... не пройдет!
кстате а mod_security не поможет?

а кто видео смотрел? что там ?

для ipb много патчей выходило

ЦитироватьВо FreeBSD 7.0/6.x и в NetBSD 4 обнаружена уязвимость , связанная с возможностью целочисленного переполнения в libc функции strfmon(). Уязвимость может привести к выполнению кода злоумышленника при передаче в функцию strfmon() непроверенных аргументов посредством сторонних программ, использующих данную функцию.

Опасность уязвимость возрастает, так как функция используется в mod_php5, для которого уже создан эксплоит, позволяющий выполнить код в системе, через php-скрипт в котором параметры пользователя без дополнительных проверок передаются в php функцию money_format(), работа которой основана на strfmon().


http://www.opennet.ru/opennews/art.shtml?num=15012

KapaBG

1.1.4 - точно
под 80 мег качать придется

Mavn

под smf 2.0 тоже потому как в том участке код идентичен!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kagorec

Скачал видео, пока ждал пока качается вспомнил сборку уязвимостей на ачате _http://forum.antichat.ru/thread46567.html
SMF - отличная альтернатива платному  vBulletin форуму. Разница в 250$ ощутима =)))
Интеграция DLE + SMF любой версии, 100% гарантии нет но основные функции работать будут независимо от версий.

savirmir

Цитата: Mavn от 02 апреля 2008, 22:17:50
А чего именно вам прояснить ? Я не мальчик который сидит и от нефига делать клепает всякую ерунду в новостях только для того чтобы народ всполошился! Тем кто хочет считать новость шуткой пусть дальше так и считают! Инфу о данной уязвимости нашел всех оповестил дальше что делать решайте сами, у меня других забот хватает без разъяснений...

Спасибо за разъяснение! Уязвимость на хосте проверил, строка
php_flag register_globals off
работает!
Правлю код...
Ещё раз спасибо!

savirmir

Цитата: leksus от 01 апреля 2008, 11:47:03
Сейчас у большинства хостеров глобалсы выключены, только если кто специально включил (и если хостер разрешает менять этот параметр, что, кстати, не есть хорошо.)

Vened, создаешь в корне файл phpinfo.php с содержимым:
<?
phpinfo();
?>

Запускаешь в браузере, ищешь строчку "register_globals"

Спасибо за совет!
Превосходно проверка работает!
Хм... только думаю, неплохо было бы напомнить, что оставлять такой файл в папке с форумом не стоит... Поглядел... и удалил! ;)

kagorec

#48
register_globals выключен и пользователи не смогут загружать ни файлы в атач ни автары...
-
Посмотрел видео от Элект, удивила наглость хакера, все опыты делались над форумом разработчиков http://www.simplemachines.org/community/  knuppel knuppel knuppel
SMF - отличная альтернатива платному  vBulletin форуму. Разница в 250$ ощутима =)))
Интеграция DLE + SMF любой версии, 100% гарантии нет но основные функции работать будут независимо от версий.

savirmir

Цитата: kagorec от 02 апреля 2008, 23:37:22
register_globals выключен и пользователи не смогут загружать ни файлы в атач ни автары...

Не надо ля-ля!!! :(
Только что проверил и то и это на "болванчике"!
Всё аватарится и вкладывается!

Кстати, на другом моём форуме, как оказалось, register_globals был выключен изначально хостером...  >:D
А там издавна широко пользуются вложениями, про аватары и так понятно!

kagorec

#50
ля-ля ненадо, хорошо а как тогда с установкой какого либо мода?

-

ЦитироватьА вот прежде чем давать подобные утверждения, неплохо было бы самому их проверить!

Тьпу блин, что это меня угораздило перепутать registre_globals с Safe mode  ... ошибка моя конечно  2funny
SMF - отличная альтернатива платному  vBulletin форуму. Разница в 250$ ощутима =)))
Интеграция DLE + SMF любой версии, 100% гарантии нет но основные функции работать будут независимо от версий.

savirmir

Цитата: kagorec от 03 апреля 2008, 00:06:45
ля-ля ненадо, хорошо а как тогда с установкой какого либо мода?
Мод мне пока без надобности...
А вот прежде чем давать подобные утверждения, неплохо было бы самому их проверить!  :-X

Шева

Спасиб за информацию. Подправил все что доктор прописал. ;)
Каждый человек способен на многое. Но к сожалению, не каждый знает, на что он способен.

GodDan

Одно смущает – полная тишина на форуме разработчиков и в новостях их сайта.
Не верится, что столько серьезная уязвимость, опробованная на их оф.форуме и осталась без внимания... не понимаю такого затишья, здесь надо было уже выпусти исправления в теч. суток с момента подтверждения проблемы. А они молчат!

И еще.
А как быть людям у которых php_flag register_globals On  (включен) и отключить его невозможно по причинам: а) запрет хостера; б) сайт работает исключительно благодаря включенному "register_globals". Насколько я понимаю, такие люди не спасут свои форумы выполнив только изменения в коде файла Sources/QueryString.php.

digger®

Цитата: GodDan от 03 апреля 2008, 03:44:50
Одно смущает – полная тишина на форуме разработчиков и в новостях их сайта.
Не верится, что столько серьезная уязвимость, опробованная на их оф.форуме и осталась без внимания... не понимаю такого затишья, здесь надо было уже выпусти исправления в теч. суток с момента подтверждения проблемы. А они молчат!
А где серьезная уязвимость?
В сайтах которые не могут работать без register_globals? В хостерах которые не дают выключать register_globals? В головах админов, у которых пароли "123"?
Ну так а SMF тут при чем?

Avdenago

Цитата: GodDan от 03 апреля 2008, 03:44:50
Одно смущает – полная тишина на форуме разработчиков и в новостях их сайта.

Нет, ну давайте всему миру раструбим, что и как взломать. Оно надо? Тихонько поправят и все. А панику вокруг такого никогда не надо поднимать.

Костя

О! Теперь дело прояснилось. Да, это не первоапрельская шутка. И я теперь сам могу ответить на свой вопрос в этой ветке. Всё дело в ранее имеющейся в коде строке:
$_REQUEST = $_POST + $_GET;
В которой переменная $_REQUEST перезаписывается, так что куки в неё не попадают. Таким образом, когда хакер передаёт топик в куках, приведённый блок кода не выполняется и в переменной $topic (при включённых register_globals) оказывается то, что передал туда хакер.
Так что, господа товарищи, правьте код, если не хотите однажды обнаружить на своём форуме много весёлых изменений :)

Dastali

Костя спасибо за разьяснения...
хоть register_globals off
все равно пойду поправлю код в файле...

GodDan

#58
Цитата: digger от 03 апреля 2008, 03:55:11
А где серьезная уязвимость?
В сайтах которые не могут работать без register_globals? В хостерах которые не дают выключать register_globals? В головах админов, у которых пароли "123"?
Ну так а SMF тут при чем?
Притом. Объясню.

Первый чел. вынужден уйти от своего хостера, запрещающего выкл. register_globals, и начать метаться в поисках нового который разрешает выкл (не все хостеры выкл. по умолчанию "register_globals", так как многие клиенты используют "On"). Второй чел. вынужден вырубит "register_globals" тем самым спасти форум, но остаться без рабочего сайта (которому нужен  "register_globals On", а потом он еще будет тратить время и деньги на переделывание сайта который до этого исправно работал. Третьему чел. возможно вообще придется и хостера искать и сайт переделывать... А главное, что до 1 апреля у этих людей не было проблем ни с сайтами ни с хостерами, а теперь из-за выкл. "register_globals" ради SMF они у них появились. И после этого SMF вообще нипричем?

Я никого не обвиняю, ни переубеждаю, ни от кого ничего не требую. Я лично согласен "register_globals" НАДО выкл., но как я выше описал у некоторых это выкл. может вызвать ряд затруднений.
Поэтому я и хочу обратить внимание сообщества на то, что вопрос с уязвимостью надо решать правкой кода форума, а не выключением сервера из розетки. Ну вот нет у человека сейчас времени, сил и средств чтобы обеспечить выключение "register_globals".

Отсюда и ожидание скорейшего выхода новой версии форума с исправленным КОДОМ, а не наставлениями "выкл. "register_globals" и еще это, и это".

kas

Цитата: GodDan от 03 апреля 2008, 12:46:50
Отсюда и ожидание скорейшего выхода новой версии форума с исправленным КОДОМ, а не наставлениями "выкл. "register_globals" и еще это, и это".

Уважаемый, ведь ясно сказано что можно своими силами внести правку в код, и после этого форум будет закрыт от той опасности даже с включенным "register_globals"!!

Не нужно кричать еще раз о том что нужно патчить. Разработчику виднее...
No comments


Костя

В видеоролике показывается как хакер получает пароль админа форума.

KapaBG

получить мона только хэш, пароли тама не хранятсо. и рашшифровать хэш мона еслеф пароля  простой как типа 12345. существуют словари наиболее употребляемых паролей, составленных исходя из тово что админ обладает дрявой памятью или не блещет фонтазией, типа имя сабаки или жены. и есть еще и база мд5 хэшей из всех сочетаний английских буковок и циферек до 7 символов в нижнем регистри. таким образом если ссыш за свой пароль - постарайсе забацать ево из 10-12 буковок в разных регистрах и вперемешку с ангельскиме и русскиме буковкаме.

digger®

Цитата: Костя от 03 апреля 2008, 20:43:07
В видеоролике показывается как хакер получает пароль админа форума.

Кино не досмотрел, поэтому с интересом послушаю как можно из хеша sha1 восстановить нормальный пароль состоящий символов из 12 и не являющийся словом.

Набоков

      У меня по времени совпало выключение глобалса, правка кода и возникновение проблемы с отказом в открытии нового голосования. При попытке его открыть выскакивает «Вы не можете зайти в этот раздел». Это случайное стечение обстоятельств и причина отказа голосования не в первом и втором действиях? 

Костя

#65
Цитата: digger от 03 апреля 2008, 21:22:42
Кино не досмотрел, поэтому с интересом послушаю как можно из хеша sha1 восстановить нормальный пароль состоящий символов из 12 и не являющийся словом.
Я сам не хакер, а в кино он просто вставил хеш и имя пользователя в программу PasswordPro и та тут же показала пароль. К тому же, если человек задался целью, и у него на это есть достаточно времени, то рано или поздно, имея нормальный современный компьютер, методом перебора можно подобрать и 12-ти символьный пароль.
ЦитироватьУ меня по времени совпало выключение глобалса, правка кода и возникновение проблемы с отказом в открытии нового голосования.
Похоже это оно. У меня та же фигня. Похоже лучше закрыть эту дырку чуть-чуть иначе. Вместо присваивания переменной $topic значения 0, лучше её совсем убить. То есть, вместо
} else
  $topic=0;

дописать
} else
  unset($topic);

digger®

Цитата: Костя от 04 апреля 2008, 01:24:13
Я сам не хакер, а в кино он просто вставил хеш и имя пользователя в программу PasswordPro и та тут же показала пароль.

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

Костя

Ну там плохая видимость, но я так понял, что вставив хеш он увидел пароль. А может не увидел, а имелось в виду, что щас она его подберёт.

KapaBG

Цитата: Костя от 04 апреля 2008, 01:24:13
К тому же, если человек задался целью, и у него на это есть достаточно времени, то рано или поздно, имея нормальный современный компьютер, методом перебора можно подобрать и 12-ти символьный пароль.
ты Костя прежде чем давать такие смешные диагнозы поразберись с алгоритмом формирование хотябы md5

Набоков

Цитата: Костя от 04 апреля 2008, 01:24:13
Похоже это оно. У меня та же фигня. Похоже лучше закрыть эту дырку чуть-чуть иначе. Вместо присваивания переменной $topic значения 0, лучше её совсем убить. То есть, вместо
} else
  $topic=0;

дописать
} else
  unset($topic);
А это не приведёт к ещё каким ни будь побочным эффектам?

kas

Цитата: Бергсон от 04 апреля 2008, 07:37:24
      А это не приведёт к ещё каким ни будь побочным эффектам?

а ты проверь :D (шутка)

ps: жаль ссылочку быстро убрали. но журнал есть, и интереса ради можно посмотреть сеё видео
No comments

domofor

Цитата: Бергсон от 03 апреля 2008, 21:46:21
правка кода и возникновение проблемы с отказом в открытии нового голосования. При попытке его открыть выскакивает «Вы не можете зайти в этот раздел».
Проверил сейчас у себя - то же самое: "Ошибка! Вы не можете зайти в этот раздел". Что будем делать? Исправлять как советует Костя? Или сообщать юзерам, что голосования отныне отменяются? :)

Набоков

Цитата: dom-forum от 04 апреля 2008, 11:11:40
Что будем делать? Исправлять как советует Костя? Или сообщать юзерам, что голосования отныне отменяются? :)
Может быть всё-таки допустимо код вернуть к первоначальному виду просто выключив глобалс? Без голосований это не форум; у меня каждый день их открывают несколько штук.

Matveyich

ну как сказал Костя с unset($topic) все работает

domofor

Цитата: Matveyich от 04 апреля 2008, 11:33:54
ну как сказал Костя с unset($topic) все работает
Я не спец по php, но любопытно, почему только голосование "сломалось"? Если принять колину поправку, то что еще может перестать работать в теории?

Костя

Цитата: Бергсон от 04 апреля 2008, 07:37:24
      А это не приведёт к ещё каким ни будь побочным эффектам?
Ну, 100% гарантию дают только в банке. Я же предлагаю проследить мою логику, понять суть изменения и самостоятельно принять решение.
Итак, найденная уязвимость заключается в следующем. В программе используется переменная $topic для обозначения номера ветки, которую требуется показать. Данные (число) попадают в эту переменную через параметры, передаваемые в скрипт (GET или POST). Приведённый в начале этой ветки код занимается обработкой этих данных, и предназначен обеспечить следующее: если в GET или в POST что-то передано для номера ветки, то оно разбирается на случай если там кроме номера ветки имеется номер сообщения, затем информация приводится к виду целого числа (как раз, чтобы исключить возможность передать здесь вредоносный код вместо номера), и результат записывается в переменную $topic. Если же в GET или в POST не было ничего передано для $topic, то предполагается, что переменная $topic окажется не определена. Хакер использует вот какую, неучтённую программистами форума, возможность: при включённой установке register_globals, если передать что-то в куке по имени topic, то РНР автоматически создаст переменную $topic и поместит это туда. Командой $topic=0 мы исключаем возможность оставить в переменной $topic вредоносный код. Но мы так же создаём эту переменную, если она не была создана раньше. Видимо при создании голосований, код проверяет наличие (не содержимое, а факт наличия) переменной $topic. Обнаружив там 0, он пытается найти ветку с этим номером. Такой ветки, естественно не существует, в результате выдаётся соответствующее сообщение об ошибке. Я предлагаю вместо обнуления переменной $topic уничтожить её. То есть привести скрипт к такому состоянию, в котором он был до передачи хакером какого-то значения для $topic.

Цитироватьты Костя прежде чем давать такие смешные диагнозы поразберись с алгоритмом формирование хотябы md5
Я бы очень хотел это сделать, и даже пытался когда-то, но к сожалению моего уровня математической подготовки для этого недостаточно. Тем не менее, я понимаю, что не должно существовать прямого алгоритма дешифрования хеша - то есть какой-то формулы, которая на основании хеша даст исходный пароль. И тем не менее, каким бы ни был алгоритм формирования хеша, в любом случае, программисту не составит труда сделать программку, которая будет перебирать все возможные комбинации всех возможных символов, делать из них хеш, и сравнивать его с имеющимся (добытым) хешем. Конечно, для длинного пароля такой подбор может потребовать колоссального времени. Но админы ведь не меняют пароль раз в неделю. А неделя непрерывной работы современного компьютера - это колоссальное количество вычислений. Я не могу сейчас прикинуть сколько именно, но думаю этого достаточно для довольно длинного пароля.
Кроме того, даже не столь важно, сможет хакер получить пароль админа, или не сможет. Важно то, что есть уязвимость, позволяющая выполнить вредоносный код. Нам трудно сейчас представить все возможные варианты использования этой уязвимости. Может целью хакера будет не пароль админа, а пароль кого-то из его оппонентов на форуме, от имени которого он потом напишет "Я чёкнутый псих со справкой", или хрен знает что ещё. Поэтому желательно эту дырку всё-таки закрыть, не так ли?

Костя

Цитата: dom-forum от 04 апреля 2008, 12:05:02
Я не спец по php, но любопытно, почему только голосование "сломалось"?
Видимо потому, что голосование можно создать как новую тему, и можно добавить в существующую тему. Видимо, при добавлении в существующую тему, об этом сигнализирует наличие переменной $topic, содержимое которой указывает в какую именно тему следует добавить голосование. Тогда, при оригинальном варианте правки, скрипт будет пытаться добавить голосование в тему с номером 0.

Tair

Цитата: Dastali от 03 апреля 2008, 11:42:38
хоть register_globals off

Я использую php_value "register_globals" "0" в файле .htaccess

KapaBG

Костя, короче ты валенок што касаетсо хэшей. мой совет заюзать сложный пароль из 10-12 символов непробиваемый даже для упорных валенков с компом годами молотящим только подбор пароля

kas

Цитата: Княже от 04 апреля 2008, 13:10:47
Костя, короче ты валенок што касаетсо хэшей. мой совет заюзать сложный пароль из 10-12 символов непробиваемый даже для упорных валенков с компом годами молотящим только подбор пароля

от себя добавлю что пароль нужно делать сложным, и что не маловажно часто его менять. раз в месяц достаточно. т.е. в этом случае даже специальные компы по подбору паролей (радуга, брутфорс, etc) идут лесом
No comments

domofor

Цитата: Костя от 04 апреля 2008, 12:23:28
Видимо, при добавлении в существующую тему, об этом сигнализирует наличие переменной $topic, содержимое которой указывает в какую именно тему следует добавить голосование. Тогда, при оригинальном варианте правки, скрипт будет пытаться добавить голосование в тему с номером 0.
Я попробовал создать голосование как НОВУЮ тему. Поэтому логика объяснения про добавление голосования в существующую тему как-то не проходит.

Костя

Она пройдёт, если напрячься. Когда добавляешь голосование в НОВУЮ тему, то скрипту не передаётся ни $_GET['topic'], ни POST['topic']. Переменная $topic таким образом должна быть не установлена, что и должно сигнализировать скрипту о том, что голосование нужно создать как новую тему. Скрипт проверяет, если она не установлена, значит речь идёт о новой теме, а если установлена, значит нужно добавить голосование в тему с номером, указанным в $topic. После внесения оригинального исправления ($topic=0), переменная $topic становится установлена несмотря на то, что она не была передана в параметрах. Поэтому скрипт пытается добавить голосование в существующую тему с номером 0.

slash

Такой вопрос, вот сняли с меня админку, поставили другова админа.
Я себе выставил ID_GROUP 1 в таблице members
Второго админа удалил через мускул.
Захожду в админку, и вижу такую картину...
Второй админ так и висит, меня в списке админов нету)
В админке 3 пункта всего
1. Центр администрирования
2. Поддержка и благодарности
3. Новости и рассылка
Больше ничо нет))
При попытке просмотреть профиль юзверя пишет
Вы не можете просматривать профили пользователей.
хоть под админом, хоть под юзером заходить.
При попытке зайти к себе в профиль, спрашивает.
Вы уверены, что хотите удалить свою учетную запись?

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

Подскажите где чо исправить?

KapaBG

1. удаление мемберов из одной таблички заведомо глупый способ. после этово придется потом перепроверить всю базу на наличие ошибок и несоответствий. йа не знаю кто тебе надоумил так дурно поступить, бес обиды видимо тебе замылил глаз.
2. подозреваю шо тебе не видно из-за кэширование, во второй версии он ваще там юзается интенсивно.
3. ты не указал какой у тебе версие, шо за причина по которой тебе удалили и прочие. может ты ваще автор статьи в журнале хакер и береш нас на мушку типа

slash

Цитата: Княже от 05 апреля 2008, 12:36:02
1. удаление мемберов из одной таблички заведомо глупый способ. после этово придется потом перепроверить всю базу на наличие ошибок и несоответствий. йа не знаю кто тебе надоумил так дурно поступить, бес обиды видимо тебе замылил глаз.
2. подозреваю шо тебе не видно из-за кэширование, во второй версии он ваще там юзается интенсивно.
3. ты не указал какой у тебе версие, шо за причина по которой тебе удалили и прочие. может ты ваще автор статьи в журнале хакер и береш нас на мушку типа
1. Сделал я это неподумав, знаю что глупо.
3. версия 1.1.4, причина по которой с меня сняли админку, это надо спросить у того чела кто взломал форум)))

ЗЫ: если ты думаешь что я хочу взломать чейто форум, то зачем мне его ломать если у меня ftp есть)
Тем более я же не спрашиаю как ломать, а наоборот, устранить последствия

KapaBG

просмотри _membergroups, точно ли админы у тебе id_group = 1
_ban_groups, _permissions на предмет валидности своей группы и своево id_member
если все нормально, тогда видимо исходники покурочены уже.

slash

Цитата: Княже от 05 апреля 2008, 15:19:44
просмотри _membergroups, точно ли админы у тебе id_group = 1
_ban_groups, _permissions на предмет валидности своей группы и своево id_member
если все нормально, тогда видимо исходники покурочены уже.
проверил, всё нормально.
единственно незнаю поповоду таблицы permissions
Дамп
(-1, 'calendar_view', 1),
(-1, 'view_stats', 1),
(-1, 'profile_view_any', 1),
(0, 'smfgallery_comment', 1),
(0, 'smfgallery_delete', 1),
(0, 'smfgallery_edit', 1),
(0, 'smfgallery_add', 1),
(0, 'smfgallery_view', 1),
(0, 'pm_send', 1),
(0, 'pm_read', 1),
(0, 'calendar_view', 1),
(0, 'karma_edit', 1),
(0, 'search_posts', 1),
(0, 'who_view', 1),
(2, 'view_mlist', 1),
(2, 'view_stats', 1),
(2, 'smfgallery_autoapprove', 1),
(2, 'profile_view_own', 1),
(2, 'profile_view_any', 1),
(2, 'profile_identity_own', 1),
(2, 'profile_extra_own', 1),
(2, 'profile_remove_own', 1),
(2, 'profile_server_avatar', 1),
(2, 'profile_upload_avatar', 1),
(2, 'profile_remote_avatar', 1),
(2, 'calendar_edit_any', 1);

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

KapaBG

русский тоже залил по-новой?
скачай с офсайта тулз repair_settings.php - проверь корректность

slash

#88
Цитата: Княже от 05 апреля 2008, 18:02:25
русский тоже залил по-новой?
скачай с офсайта тулз repair_settings.php - проверь корректность
Русский кстати нет. Спс, скачаю, попробую, потом отпишу
#####################
Русский перезалил.
скачал repair_settings.php, выполнил его.
Результат тоже смаое...

Заметил ещё что нельзя постить сообщения и создавать темы. даже с админского ника))
Таблицу permissions заменил на ту что с форума установленного на локалке

Tair

А в профиле у тебя что - администратор написано или нет?

slash

Цитата: Rainheart от 06 апреля 2008, 23:11:04
А в профиле у тебя что - администратор написано или нет?
В профиле у меня только пункт удалить свой профиль.
Но в менюшке пункт Администрирование есть, и всеголишь первых 3 пункта.

KapaBG

а тема в которой ты такую хренотень получаешь? в смысле прямо в default?

slash

Цитата: Княже от 07 апреля 2008, 06:57:59
а тема в которой ты такую хренотень получаешь? в смысле прямо в default?
Да дефолт, абсолютно все файлы перезалиты на скрипты с офф. сайта.
я так думаю что чтото в настройках групп, там где им отдельные права выставлять, типа создавать темы, постить сообщения.
только я непонял в какой таблице они находяться, если в permissions, то её я заменил на стандартную...

Mavn

ID группы админов и ID твоей группы одинаков или нет?
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

slash

Цитата: Mavn от 07 апреля 2008, 10:53:50
ID группы админов и ID твоей группы одинаков или нет?
Одинаков, равен еденичке

Mavn

Цитата: slash от 07 апреля 2008, 11:14:39
Одинаков, равен еденичке
Значит пойдем другим путем.

1. Создаешь на локалке форум заливаешь бд от своего форума.
2. Переименовываешь таблицу smf_permission например smf22_permission
3. Открываешь sql файл из инсталяционного пакета и создаешь таблицу с данными. Как результат получаешь таблицу с правами доступа которые идут по умолчанию.
4. Проверяешь работу и доступ к админке.
5. Минус всего этого дела состоит в том что придется перепровярять все права пользователей а так же выставлять заново если были какие то особые права доступа на разделы или на группы!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

slash

Цитата: Mavn от 07 апреля 2008, 11:34:51
Значит пойдем другим путем.

1. Создаешь на локалке форум заливаешь бд от своего форума.
2. Переименовываешь таблицу smf_permission например smf22_permission
3. Открываешь sql файл из инсталяционного пакета и создаешь таблицу с данными. Как результат получаешь таблицу с правами доступа которые идут по умолчанию.
4. Проверяешь работу и доступ к админке.
5. Минус всего этого дела состоит в том что придется перепровярять все права пользователей а так же выставлять заново если были какие то особые права доступа на разделы или на группы!
Спасибо, попробую

KapaBG

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

Adept

 Я до конца так и не понял по поводу убийства переменной $topic
ЦитироватьТо есть, вместо
} else
  $topic=0;

дописать
} else
  unset($topic);

Похоже это помогает, но где-нибудь вылезет потом проблема или все хорошо, и можно спокойно убивать переменную по данному примеру?

RXL

Большое спасибо уважаемому Mavn-у за оперативность!

От себя хочу сказать, что таких дыр в SMF очень много. В QueryString полно подобных ошибок. Часть кода, явно, написана методом copy-paste.

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

Serifa

офф-топ: нерадостная какая-то тема, камрады!
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

maratix.ru

Цитата: leksus от 01 апреля 2008, 11:47:03
Сейчас у большинства хостеров глобалсы выключены, только если кто специально включил (и если хостер разрешает менять этот параметр, что, кстати, не есть хорошо.)

Vened, создаешь в корне файл phpinfo.php с содержимым:
<?
phpinfo();
?>

Запускаешь в браузере, ищешь строчку "register_globals"

Извините, объясните, еще раз как зайти и куда (что такое корень?)
www.HochuDom.ru - Живи в мечте!!!

Tair

Цитата: maratix.ru от 03 мая 2008, 19:40:41
Извините, объясните, еще раз как зайти и куда (что такое корень?)

корень - верхний каталог сайта:
например:
www.lalala.ru/index.html
index.html находится в корне

а
www.lalala.ru/one/index.hmtl
уже как видно не в корне.

Создать нужно файл phpinfo.php
с содержимым:
<?phpinfo();?>

И открыть в браузере:
http://www.вашсайт.ru/phpinfo.php

И в появившемся списке найти строчку register_globals
Там скорее всего будет 2 столбика.
Смотрим Local Value - если off то хорошо, если on то делаем файл .htaccess по инструкции которая где-то здесь была.

maratix.ru

Цитата: Rainheart от 03 мая 2008, 20:16:14
корень - верхний каталог сайта:
например:
www.lalala.ru/index.html
index.html находится в корне

а
www.lalala.ru/one/index.hmtl
уже как видно не в корне.

Создать нужно файл phpinfo.php
с содержимым:
<?phpinfo();?>

И открыть в браузере:
http://www.вашсайт.ru/phpinfo.php


Пишет: невозможно отобразить страницу
www.HochuDom.ru - Живи в мечте!!!

Tair

Цитата: maratix.ru от 04 мая 2008, 19:10:16
Пишет: невозможно отобразить страницу

Значит что-то неправильно сделали.

savirmir

Столкнулся с проблемой: форум не хочет сохранять файл как вложение, если его размер немногим более 2 Мб (скажем так, от 2 до 3 Мб)... :(
ЦитироватьВаше вложение не может быть сохранено. Возможно файл больше, чем позволяет сервер.
В админке, на страничке "Вложения и аватары" вроде всё включено нормально...
Есть ли предельные ограничения на размер вложений и не связана ли эта проблема с дополнительной защитой, описанной выше в этом топике? Хм... а может я туплю и что-то не включил?
Поможите, люди добрые!  ^-^

Mavn

проблема обсуждалась 100 раз и тем более никакого отношения к текущей теме не имеет!
смотрите параметры php там прописываются максимально возможный размер загружаемых файлов.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

savirmir

Цитата: Mavn от 05 мая 2008, 18:32:22
проблема обсуждалась 100 раз и тем более никакого отношения к текущей теме не имеет!
смотрите параметры php там прописываются максимально возможный размер загружаемых файлов.
Разобрался! Спасибо огромное!
Просто раньше с этим вопросом как-то не сталкивался...
Проблема оказалась в настройках PHP у хостера...
Сейчас провожу с ним разъяснительную работу... ;)
Может следует удалить это и два предыдущих сообщения? А то вроде действительно, флуд получается...

Kykapa4a

maratix.ru Возможно ты просто создал phpinfo.php.txt хотя я  могу ошибатся, но у многих юзверей отключен апплет
"показывать расширения для зарегестрированных типов файлов"

kas

Эксплоиты для 1.1.4 системы написаные на Питоне

http://slil.ru/25900997 - 1_1_4.py
http://slil.ru/25901005 - 1_1_4.py.zip

(http://www.securitylab.ru/poc/extra/354854.php)
No comments

Mavn

Хех 99% эксплоитов не рабочие точнее сказать с небольшими правками так сказать защита от скрипткидисов :). Так что даже не стоит обращать внимание на данные эксплоиты если ты не знаток в этом деле :)!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

kas

No comments