Тема: error_log (WAP/WEB мастеру/Помощь мастерам) kantry (12 Nov 2017 в 19:40) PHP Notice: Only variables should be assigned by reference in /home/dcmsmodc/public_html/sys/inc/start.php on line 26 [b]убрать амперсанд(только переменные можно передавать по ссылке)[/b] [12-Nov-2017 12:11:33 UTC] PHP Parse error: Invalid numeric literal in /home/dcmsmodc/public_html/sys/inc/sess.php on line 7 [b] убрать 0 в начале числа[/b] Stavr (13 Nov 2017 в 08:10) Просмотрев файл /sys/inc/sess.php, на который указывают ошибки. Увидел замечательные вещи)) Что бы было немного понятно @session_name(\'SESS\'); Обзываем $sess = addslashes(session_id()); извлекаем или устанавливает id текущей сессии Выглядит она например так sess_uls78115cv8sackn6at3sgga25 Просмотреть её можно в папке tmp или иной (зависит от панели) Или, можно узнать где сессии лежат с помощью echo session_save_path(); Далее интересное условие... if (!preg_match(\'#[A-z0-9]{32}#i\',$sess)) Опираясь на регулярное выражение [A-z0-9] Функция preg_match(), почему то не ищет символы И это при условии что, в зависимости от дескриптора сессии обработчик файловой сессии допускает только символы a-z, A-Z и 0-9(буквы и цифры) И даже более... При длине имени файла сессии, более 32 символа, вообще прекращает перезапись $sess = md5(rand(09009,999999)); И... Получается что, какой то файл, с именем более 32 символов, содержащий в имени всё что угодно будет лежать в папке tmp рядом с иными сессиями и подвержен извлечению. Зачем это сделано, ядовитый он или нет, как извлечь, как попадёт туда, это отдельная тема, которую не стоит развивать. Кому интересно, гуглите)) kantry (13 Nov 2017 в 11:31) Stavr, эти \"сессии\" хранятся в базе, а не на диске. Сессии которые хранятся на диске, может только www-data или root подцепить, думаю если до этих прав кто то добрался, то ему сессии уже ни к чему:D Stavr (13 Nov 2017 в 20:49) kantry, Как это мило, не знать где хранятся сессии)) Или просто стебаешься? А я старался, специально функцию echo session_save_path(); для поиска директории где лежат сессии указал. После таких выпадов и желание пропадает что пояснять, да и вообще заходить сюда. Да, в phpMyAdmin в таблице user поле sess хранятся данные Но это не сессии, это идентификатор)) В браузере найди файл SESS, запомни его имя, потом воспользовавшись функцией echo session_save_path(); иди по указанному пути и в указанной директории ты обязательно найдёшь файл вида sess_uls78115cv8sackn6at3sgga25 Где uls78115cv8sackn6at3sgga25 это и есть сессия которая совпадёт с ранее найденным файлом SESS браузера - один в один)) Посредством сопоставления этих файлов, сервер и узнаёт - авторизован юзер или нет, id юзера В зависимости того что в сессии записано. Проще, через них общается сервер и клиент Можешь даже авторизоваться на сайте, а потом этот файл из папки сервера удалить, обновить страницу и авторизация слетит. Но я тебя понимаю, ты видимо ещё не сталкивался с подобным. Только это не значит что это этого не может быть) Что бы не быть голословным(как вижу тут принято) Пожалуйста Хабр https://habrahabr.ru/post/28418/ Хакер https://xakep.ru/2010/09/08/53192/ Авторитетные ресурсы, выбирай)) Кстати, что бы получить права рут иногда приходиться работать с сессиями а не наоборот. kantry (14 Nov 2017 в 07:08) Stavr, ты не хабр читай, а перечитай что я тебе ответил. И да... я без session_save_path знаю где у меня php сессии хранятся;-) Stavr (14 Nov 2017 в 09:07) kantry, Почему не читал, читал) Ты же написал kantry Вчера в 11:31 Stavr, эти \"сессии\" хранятся в базе а не на диске. Сессии которые хранятся на диске, может только www-data или root подцепить;-) На что я тебе пояснил, что сессии хранятся только на диске(по умолчанию, в данном случае), а то что ты назвал, сессиями не являются, разве что априори)) И как ты выразился - подцепить их, можно далеко без прав рут, как и иных впрочем) Взлом через сессию имеет место быть. Документ(файл) имеет способность собирать инфо о своём окружении, а при желании эту информацию и отсылать, не говоря уже о банальном перехвате. А суть... Все мы ошибаемся, кто то там кто то тут. По причине - человек не может знать всё. Всезнайка, минимум вызывает улыбку. И если я где то ошибся, не вижу зазорным в этом признаться. Даже ещё и спасибо за поправку скажу. Осознание ошибки, это в первую очередь избежание рецедива. Признание публично, наличие силы духа. У тебя видимо иные взгляды на это всё) Вопрос изжит, и мне уже не интересен. Каждый сделал свои выводы. Надеюсь твоё эго не задел, по крайней мере я старался. Можешь не отвечать, больше не увидимся, извини если что не так.... kantry (14 Nov 2017 в 13:24) Stavr, я и не для тебя писал, а для тех кто так же как и ты, уперто думает что то, что за session_start(); идет, имеет какое то существенное значение. Оброк (14 Nov 2017 в 21:50) kantry, Привет. Рад видеть тебя...)) Как понял, Stavr заострил внимание не на session_start(); Ибо я не нашёл не одного упоминание об этом в его постах, а на условии // --- if (!preg_match(\'#[A-z0-9]{32}#i\',$sess)) И сказать как есть, он прав. Условие действительно не реагирует на символы Не реагирует на наличие 32 символов и более Согласись, довольно странное поведение...)) И опираясь на ниже расположенное // --- $sess = addslashes(session_id()); Имеем следующее... При условии что имя файла лежащего вместе с сессиями, 32 или более символов так же имея идентификатор, мы легко извлечём и прочитаем содержимое этого файла Но ты скажешь, ведь зная идентификатор любой иной сессии, мы так же сможем её извлечь На что я тебе отвечу - да ты прав. Но ключевое тут условие // --- if (!preg_match(\'#[A-z0-9]{32}#i\',$sess)) Почему оно так странно работает и собственно для каких таких целей...)) Первое... Благодаря выше обозначенному условию Идентификатор сессии, извлекается как есть и в базу данных, ложиться в \"чистом виде\" То есть, всем назло, присваиваем себе эту сессию и под ней авторизуемся... Авторизоваться при наличии более 32 символов нам не удастся, да и не надо... Но если имя сессии содержит sql запрос, то он уйдёт по назначению от содержимого сессии Например если: refer|N;id_user|s:2:\"12\" То в поле sess, юзера под ид 12 цель достигнута...)) Я согласен, впереди ещё много НО и как бы тумана... Но кое что, мы уже установили...)) Проверь сам, развивай, у тебя получиться. надеюсь не во зло людям. Всего хорошего...)) kantry (15 Nov 2017 в 07:56) Оброк, что то я вас недопонимаю, взломать конечно можно ВСЕ. Но... нет там авторизации по полю с хэшем сессии. Для интереса можешь зайти в базу удалить этот хэш и спокойно лазить по сайту, авторизованым. А вот то зачем он нужен, да можно без него обойтись, это хвост из 2008 года. Что бы добраться до php сессии нужны определенные права, я и пишу, если у тебя есть такие права(изменить - прочитать) сессию, то на хрена она тебе тогда надо? С этими правами ты и так можешь что угодно делать. Оброк (15 Nov 2017 в 09:16) kantry, Я уже не знаю как тебе пояснить...)) Прежде чем подтвердить слова Stavra Я это всё воспроизвёл, что и тебе предложил сделать. Но ты или ленишься или просто не можешь. Тебе на блюдечке подали, я даже разложил что надо делать (не всё конечно по известным причинам - пабл) а ты нет да нет. Ну на нет и суда нет, если человек не хочет слышать... Значит оно ему не надо...)) Касательно прав, тут говорить много не стоит. Директория с сессиями пишет в себя...)) Кстати, недавно на одном сайте столкнулся с аномалией. Захожу в tmp, да ладно там файл... Тут папка Тут папка Тут и ещё и ещё... А тут уже пошли сессии Представляешь картину... А как оно всё туда попало, загадка...)) Это получается какой то садо-мазо-хакер Получив права рут, с перепугу начал лить папки в директорию с сессиями...)) Добавить не чего, то что надо сказал. А услышал ты или нет, твоё личное дело. Всего хорошего. kantry (15 Nov 2017 в 10:00) Оброк, всего хорошего - это значит сказать больше нечего? Все что идет за session_id НЕ нужно, это НЕ идентификатор сессии, свое значение он меняет после каждого перехода. А вы прицепились к тому что не имееет значения. [url=https://stackoverflow.com/questions/3185779/the-session-id-is-too-long-or-contains-illegal-characters-valid-characters-are/27247721]Перечитываем вместе с комментариями[/url] [url=https://stackoverflow.com/questions/32898857/session-start-issues-regarding-illegal-characters-empty-session-id-and-failed?noredirect=1]Для парноиков[/url] П.С. Про косяки хостеров здесь речь не шла. Оброк (15 Nov 2017 в 20:08) kantry, Держите меня семеро...)) От скажи, как ты меня читаешь. Упрощаю до не куда... 1) Идёшь в папку сессиями, выбираешь одну(любую) И редактируешь(длинна 32 или больше символов что бы не сработало условие if (!preg_match(\'#[A-z0-9]{32}#i\',$sess)... а так же нарочно добавляешь символы, в данном случае доллар, проверяем на запрет) Например... // --- Было sess_s67ekcekicvcvsvsa21rt77ni6 // --- Стало sess_$update$000000111111kcekicvcvsvsa21rt77ni6782$ 2) Выходишь на сайт, ловишь и присваеваешь себе отредактированную сессию А именно // --- $update$000000111111kcekicvcvsvsa21rt77ni6782$ 3) Авторизуешься под ней(но авторизация не произойдёт) 4) Идёшь в phpMyAdmin в таблице user находишь id или Ник под которым авторизовался И в поле sess, будет именно то что ты присвоил перед авторизацией себе, а именно - $update$000000111111kcekicvcvsvsa21rt77ni6782$ Если и так пробежка, то ты скорее мёртв нежели жив. Более доступно я пояснить не смогу, извини... Ответ (16 Nov 2017 в 09:12) Оброк, Привет, рад видеть тебя. Наблюдаю со стороны и балдею)) Зачем тебе это всё? Ты что не видишь что он крутиться ужом? Он раз обосрался выдав мд5 хеш за сессию, и сделав вид что всё хорошо, успешно дальше лажает, и далеко не первый раз, это чемпион по косякам,)) Даже ребёнок, если ему говорить что куда, соберёт из кубиков вокруг чего взрослый он, уже третьи сутки хороводы водит)) Ты ходил по его ссылкам? Если нет сходи. Там поднят именно тот вопрос, который поднял Stavr О атаке на уровне сессии, чрезмерной длине сессии, запрете символов и как с этим бороться. Вот кусочек темы So, I realise this is a repeat question however, it is apprently a bug yet the original post for this is 5 years old but it\'s also said that it\'s a malicious attack... Он действительно настолько не внимателен, что забил гол в свои же ворота)) А может и проще, проблемы с иностранным языком, а блеснуть умом охота)) Вот кусок лога, дёргают подключением за локалку [03-Oct-2015 04:51:46 UTC] PHP Fatal error: require(): Failed opening required \'ABSPATHwp-includes/load.php\' (include_path=\'.:/usr/lib/php:/usr/local/lib/php\') in /home/HOSTINGACCOUNT/public_html/wp-settings.php on line 21 Поверь, я знаю такой тип людей, на доказанное они отвечают лихо - ну и шо теперь)) Чем намекнёт - мол давай продолжение, что дальше делать? А ему действительно это дальше надо, сам он не как)) Не трать время, не тот уровень... Оброк (16 Nov 2017 в 09:29) Ответ, Дарова...)) Да нет, я хоть и с боевого ноута но по подобным линкам не хожу, мало ли... Мягко говоря, я подпарился, и думаю ты прав. У них тут есть особая каста - \"деды\", которые лихо кодят даже с помощью eval(); Сайт на медни хакнули, поназаливали всякий бутор правда ультиматума пока не было. Но владельца жаль, \"замечательная покупка\" сайт точно в пабл сольют. Человек почти четыре года развивал, и на те... И что характерно, вот что ты этому \"супер-кодеру-деду\" предьявишь... Ну максимум заблокируют товар и вернут деньги. А деньги за рекламу, работу над сайтом сам авторитет сайта, ломанный сайт как битая машина! Чёрт возьми, а потраченные годы, кто теперь вернёт... Надо вообще отсюда делать ноги, реально начинаю вместе с отакими тупеть - впадаю в детство...)) Я заметил, тут всё построено на этом. Когда кто то, что то выложит, вокруг него собираются \"супер-кодеры\" и дружно начинают тролить код. И это не от того что им заняться больше не чем Это от того что они больше не чего не умеют. Ибо на вполне логичный вопрос - что именно не так, покажите... Отвечают гыгыканьем и ещё громче подымают вой. Хотя есть и умные пацаны, но мне кажится они сами над этими \"дедами\" посмеиваются да дёргают за бороду пора мол бриться, взрослеть и приобретать человеческий вид...)) А в общем, дело гилка... Пока не научаться думать и внимательно читать... Но вопрос в ином, как можно научит \"всезнайку\"...)) \"Умного\" учит только портить...)) Скорее всего, это мой последний пост... kantry (16 Nov 2017 в 17:08) Ответ, ху*ню какую то несешь. Кому надо тот все понял... и ты поймешь когда под солнцем определишься. Оброк (16 Nov 2017 в 19:05) kantry, Словарный запас в минус и режим маты. А так хорошо всё начиналось...)) С твоего позволения удаляюсь, в поисках солнышка определиться...)) Берегите свой шезлонг человек - косяк...)) Stavr (1 Jan 2018 в 00:23) --Цитата-- kantry (14 Nov 2017 в 13:24): Stavr, я и не для тебя писал, а для тех кто так же как и ты, уперто думает что то, что за session_start(); идет, имеет какое то существенное значение. ---------- kantry, С наступающим)) Надеюсь ты понял что твоё .............. kantry 14 Ноября 2017 Stavr, я и не для тебя писал, а для тех кто так же как и ты, уперто думает .............. Уже тупик)) 1) Это мои единомышленники 2) Думать и знать имеют разницу)) Вы думает начинаете только когда копьё под хвостом А мы знаем, о чём будете думать наперёд опираясь на - я это сделал. Практика давно теорию поставила до WTF! Видимо верно сказано - мы потеряли это поколение. Лентяи и бездари, не умеющие по готовому построить себе империю. kantry (1 Jan 2018 в 15:52) Stavr, с Новым годом! Мое поколение не разговаривало на псевдосленге))) Не единомышленников, а единоверцев ты хотел сказать?;-) SimptomFD (1 Jan 2018 в 20:13) Барыжить мозгов хватает, а исправить ошибки нет? Автор, да ты лошара. Мр. Форум (1 Jan 2018 в 20:13) [red]Тему закрыл Админ форума SimptomFD[/red] Источник: http://www.dcms-social.ru/forum/20/44/62271/