Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
// CVE-2012-5692
/* 4015. */ static public function get($name)
/* 4016. */ {
/* 4017. */ // Check internal data first
/* 4018. */ if ( isset( self::$_cookiesSet[ $name ] ) )
/* 4019. */ {
/* 4020. */ return self::$_cookiesSet[ $name ];
/* 4021. */ }
/* 4022. */ else if ( isset( $_COOKIE[ipsRegistry::$settings['cookie_id'].$name] ) )
/* 4023. */ {
/* 4024. */ $_value = $_COOKIE[ ipsRegistry::$settings['cookie_id'].$name ];
/* 4025. */
/* 4026. */ if ( substr( $_value, 0, 2 ) == 'a:' )
/* 4027. */ {
/* 4028. */ return unserialize( stripslashes( urldecode( $_value ) ) );
/* 4029. */ }
/*
The vulnerability is caused due to this method unserialize user input passed through cookies without a proper
sanitization. The only one check is done at line 4026, where is controlled that the serialized string starts
with 'a:', but this is not sufficient to prevent a "PHP Object Injection" because an attacker may send a
serialized string which represents an array of objects. This can be exploited to execute arbitrary PHP code
via the "__destruct()" method of the "dbMain" class, which calls the "writeDebugLog" method to write debug
info into a file. PHP code may be injected only through the $_SERVER['QUERY_STRING'] variable, for this
reason successful exploitation of this vulnerability requires short_open_tag to be enabled.
*/
Если вы думаете, что самое плохое, что ждёт ваш уютный сайт на «PHP» — это Роберт-брось-таблицу, то вы глубоко ошибаетесь.
Так ведь никто не использует пэхапэшный формат, выдаваемый функцией serialize, за пределами сервера. Если что-то нужно принять от клиента, то обычно принимают в формате "JSON", в который пэхапэшные объекты упаковать невозможно.
Так писа́ли двадцать лет назад. Сейчас в "cookies" передают только айдишник сессии (большой и достаточно псевдослучайный, чтобы его было трудно подобрать), а всё остальное хранят на сервере в специальной таблице сессий.
>> Unspecified vulnerability in admin/sources/base/core.php in Invision Power Board (aka IPB or IP.Board) 3.1.x through 3.3.x has unknown impact and remote attack vectors.
IPB — это же коммерческий движок. Вроде кто-то говорил, что коммерческое ПО лучше свободного?
> Unspecified vulnerability
Странно как-то. Это не «unspecified vulnerability», а полноценная RCE, позволяющая получить полный доступ к системе — и для этого не надо даже иметь аккаунт на целевом сайте. Да-да, в коммерческом движке, за который платят деньги.
Что значит «отключил»? Как они могли заебать? Или ты включал автозамену и думаешь, что остальные делали так же? Автозамена нафиг не нужна. Типографские кавычки можно ввести руками хоть на мобильном устройстве, хоть на десктопе.
The pickle module is not secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.
Ну вот по этой причине нормальные движки данные, сериализованные штатной функцией, по сети не гоняют. По сети гоняют JSON (в котором из структур есть только массивы с числовым индексом и ассоциативные массивы) или ещё какие-нибудь ограниченные форматы.
Похуй только авторам коммерческих движков типа IPB, которые serialize гоняют по сети.
Нормальные — это те, которые всякую хуету по сети не гоняют.
Так получилось, что IPB гоняет. Проверить это удалось после того, как кто-то за него заплатил. Про все движки говорить не могу, поэтому и написал: «типа IPB».
Это же основной парадокс опенсурса. Баг в проприетарщине - фуу, говнище, в опенсурсе такого не бывает. Баг в опенсурсе - иди сам фикси, сука, и вообще это не баг, а идеология.
Можешь в Твиттере удалить какой-нибудь твит. Практически все новости по типу «X написал Y и в результате подвергся травле Z» заканчиваются одинаково: X удаляет твит.
Коммитить напрямую тебя и так не пустят, а вот контрибьютить -- пожалуйста. Делаешь патч (хоть диффом) и шли в лист:) Только исполь3уй нормальный почтовый клиент (mutt например) ибо какой нить gmail засрёт тебе твой патч
Это на самом деле не парадокс апинсорса, а парадокс бесплатного, подачки. Типа дареному коню в зубы не смотрят - хотя чем апинсорс более дареный чем бесплатный клозедсорс? Хз. Первое, по чему узнаётся ШВАБОДКА - вымарывание абсолютно любой критики, типа "я на ваше дерьмо проебал ёб твою мать сколько времени и всё ни за хуй". И это дерьмо потом смеет вякать на МС.
Боже мой, как же вас сами не заебало пережевывать одно и тоже говно годами?
Как ни зайдешь сюда -- один пидар пиздит про "прыщи нинужны", другой пидар пиздит про "PHP" в котором ему не нужно "ООП".
Первый год может быть и было смешно, но блядь эта хуйня тут уже лет пять. Ну сколько можно то?
Ну смените уже пластинку, придумайте новую шутку, вам блядь всем уже небось по 30 лет скоро, уже кандидатскую защитить можно было или фирму свою открыть, или стать кор девелоперов в каком-нито проекте, а вы всё жуете один и тот же лулз
Кстати, я могу накидать примеры типичных багов программистов (именно программистов, а не их программ). Баги, которые происходят в голове.
Например: "Эффект второй системы" (из мистического человеко-месяца) это когда программист старается напихать в систему всего по максимуму и максимально ее усложнить чтобы реализовать во второй системе то, что не удалось в первой. Хуячит там всякие абстрактные фабрики стратегий вместо трех строчек, плодит фреймворки на пустом месте итд.
Мне кажется что вот Windows NT так получился: сделали там диспетчер конфигурации (ака реестр): абстракцию поверх файловой системы, например.
Или вот "Not Invented Here": ну про это все знают, это когда мы строим квадраноколесный велик потому что готовые велики нам наверняка не подойдут. Сколько я видал таких вот "систем рассылки почты", "систем постоения отчетов" и прочей фигни встроенной прямо в наколенные веб приложения.
Еще бывает баг "не решает всех проблем": Это когда говоришь: "попробуй foo, он позволит тебе не писать вручную весьэ тот код" а тебе в ответ: "но он всё равно не решит всех проблем, не буду даже пробовать".
Так обычно отказываются от фреймворков, от ORM, и от всего перечисленного в предыдущем пункте.
Или вот баг "bad experience". Это когда говорят: "у меня (как вариант -- у моих коллег) был bad experience с foo, я его не возьму" а внятного объяснения дать не могут.
"У меня был плохой опыт с регулярками -- они тормозили, потому я никогда их не использую, даже в простом скрипте". Опять таки я видал плохие опыты с ORM, с шаблонизаторами и даже с рекурсией: чел реально боялся ее использовать что бы не схватить стековерфлу.
ООП - это абсолютно излишнее нагромождение. Зачем плодить десятки директорий и файлов со сложной системой связей компонентов, если можно просто написать влажный процедурный код из двадцати-тридцати строк, в котором все действия изложены в том же порядке, в котором выполняются?
Кстати, некоммерческие делятся на closed source и open source. Open source теоретически можно проверить (хотя были случаи, когда говно в опенсурсных проектах обнаруживали задним числом). Ещё у open source можно сделать форк, если тебе что-то не нравится.
Так писа́ли двадцать лет назад. Сейчас в "cookies" передают только айдишник сессии (большой и достаточно псевдослучайный, чтобы его было трудно подобрать), а всё остальное хранят на сервере в специальной таблице сессий.
IPB — это же коммерческий движок. Вроде кто-то говорил, что коммерческое ПО лучше свободного?
Странно как-то. Это не «unspecified vulnerability», а полноценная RCE, позволяющая получить полный доступ к системе — и для этого не надо даже иметь аккаунт на целевом сайте. Да-да, в коммерческом движке, за который платят деньги.
Последуйте плану! Очнись, наконец!
За мой повторяем сейчас! Раз —
Вместо «пизды» будет «пися» у нас!
То есть, «писястый», «писюк» и «писец»!
Два — вместо «мудак» произносим «чудак»!
Чудями теперь, чудозвон, не тряси.
Три — слово «ебу» говорим через «и»,
Так как «ибу» по-китайски — шаг.
А слово «хуй» позабудь безвозвратно,
Так как на свете нет слова страшней,
Дети, забудьте его поскорей,
Вместо него повторяйте «понятно».
https://docs.python.org/3/library/pickle.html
Warning
The pickle module is not secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.
А чё там в рнр? Ух нихуясе, добавили http://php.net/manual/en/function.unserialize.php . Но пыхарям всё равно похуй.
Похуй только авторам коммерческих движков типа IPB, которые serialize гоняют по сети.
>Похуй только авторам коммерческих движков
Нормальные - это апинсорс типа?
Так получилось, что IPB гоняет. Проверить это удалось после того, как кто-то за него заплатил. Про все движки говорить не могу, поэтому и написал: «типа IPB».
А в некоммерческих всё заебись типа?
Как ни зайдешь сюда -- один пидар пиздит про "прыщи нинужны", другой пидар пиздит про "PHP" в котором ему не нужно "ООП".
Первый год может быть и было смешно, но блядь эта хуйня тут уже лет пять. Ну сколько можно то?
Ну смените уже пластинку, придумайте новую шутку, вам блядь всем уже небось по 30 лет скоро, уже кандидатскую защитить можно было или фирму свою открыть, или стать кор девелоперов в каком-нито проекте, а вы всё жуете один и тот же лулз
А правда, давайте придумаем что-нибудь новое. Например, классификацию говнокода.
И всё, что было
Не смыть ни водкой, ни мылом [c]
>>классификацию
про это уже есть порн книжка: "типичные ошибки разработки"
Кстати, я могу накидать примеры типичных багов программистов (именно программистов, а не их программ). Баги, которые происходят в голове.
Например: "Эффект второй системы" (из мистического человеко-месяца) это когда программист старается напихать в систему всего по максимуму и максимально ее усложнить чтобы реализовать во второй системе то, что не удалось в первой. Хуячит там всякие абстрактные фабрики стратегий вместо трех строчек, плодит фреймворки на пустом месте итд.
Мне кажется что вот Windows NT так получился: сделали там диспетчер конфигурации (ака реестр): абстракцию поверх файловой системы, например.
Или вот "Not Invented Here": ну про это все знают, это когда мы строим квадраноколесный велик потому что готовые велики нам наверняка не подойдут. Сколько я видал таких вот "систем рассылки почты", "систем постоения отчетов" и прочей фигни встроенной прямо в наколенные веб приложения.
Еще бывает баг "не решает всех проблем": Это когда говоришь: "попробуй foo, он позволит тебе не писать вручную весьэ тот код" а тебе в ответ: "но он всё равно не решит всех проблем, не буду даже пробовать".
Так обычно отказываются от фреймворков, от ORM, и от всего перечисленного в предыдущем пункте.
Или вот баг "bad experience". Это когда говорят: "у меня (как вариант -- у моих коллег) был bad experience с foo, я его не возьму" а внятного объяснения дать не могут.
"У меня был плохой опыт с регулярками -- они тормозили, потому я никогда их не использую, даже в простом скрипте". Опять таки я видал плохие опыты с ORM, с шаблонизаторами и даже с рекурсией: чел реально боялся ее использовать что бы не схватить стековерфлу.
Кстати, некоммерческие делятся на closed source и open source. Open source теоретически можно проверить (хотя были случаи, когда говно в опенсурсных проектах обнаруживали задним числом). Ещё у open source можно сделать форк, если тебе что-то не нравится.