"PHP" / Говнокод #24800 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
// 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» — это Роберт-брось-таблицу, то вы глубоко ошибаетесь.

CSRF verification passed.

Запостил: gost gost, (Updated )

Комментарии (45) RSS

  • Так ведь никто не использует пэхапэшный формат, выдаваемый функцией serialize, за пределами сервера. Если что-то нужно принять от клиента, то обычно принимают в формате "JSON", в который пэхапэшные объекты упаковать невозможно.
    Ответить
  • >> $_COOKIE[ipsRegistry::$settings['cookie_id'].$name]

    Так писа́ли двадцать лет назад. Сейчас в "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, позволяющая получить полный доступ к системе — и для этого не надо даже иметь аккаунт на целевом сайте. Да-да, в коммерческом движке, за который платят деньги.
      Ответить
      • Заебал со своими типографскими кавычками.
        Ответить
        • Завидуешь? У самого такие не получаются?
          Ответить
          • Я их отключил специально, они меня заёбывали. Я не мог нормально писать ""PHP""
            Ответить
            • Что значит «отключил»? Как они могли заебать? Или ты включал автозамену и думаешь, что остальные делали так же? Автозамена нафиг не нужна. Типографские кавычки можно ввести руками хоть на мобильном устройстве, хоть на десктопе.
              Ответить
              • На иосе 11 по умолчанию на клавиатуре нет обычных кавычек. Только ебанутые. Переключается в настройках.
                Ответить
                • Понятно.

                  Последуйте плану! Очнись, наконец!
                  За мой повторяем сейчас! Раз —
                  Вместо «пизды» будет «пися» у нас!
                  То есть, «писястый», «писюк» и «писец»!

                  Два — вместо «мудак» произносим «чудак»!
                  Чудями теперь, чудозвон, не тряси.
                  Три — слово «ебу» говорим через «и»,
                  Так как «ибу» по-китайски — шаг.

                  А слово «хуй» позабудь безвозвратно,
                  Так как на свете нет слова страшней,
                  Дети, забудьте его поскорей,
                  Вместо него повторяйте «понятно».
                  Ответить
      • Именно поэтому я за "PHP": можно написать любую хуйню и получить за неё деньги.
        Ответить
    • PHP есть PHP: хоть коммерческим назови его, хоть нет
      Ответить
    • Ну вот по этой причине нормальные движки данные, сериализованные штатной функцией, по сети не гоняют. По сети гоняют JSON (в котором из структур есть только массивы с числовым индексом и ассоциативные массивы) или ещё какие-нибудь ограниченные форматы.

      Похуй только авторам коммерческих движков типа IPB, которые serialize гоняют по сети.
      Ответить
      • >нормальные движки не гоняют
        >Похуй только авторам коммерческих движков
        Нормальные - это апинсорс типа?
        Ответить
        • Нормальные — это те, которые всякую хуету по сети не гоняют.

          Так получилось, что IPB гоняет. Проверить это удалось после того, как кто-то за него заплатил. Про все движки говорить не могу, поэтому и написал: «типа IPB».
          Ответить
          • >Похуй только авторам коммерческих движков
            А в некоммерческих всё заебись типа?
            Ответить
            • Это же основной парадокс опенсурса. Баг в проприетарщине - фуу, говнище, в опенсурсе такого не бывает. Баг в опенсурсе - иди сам фикси, сука, и вообще это не баг, а идеология.
              Ответить
              • З.Ы. Меня теперь не пустят коммитить в ядро линупса за такие высказывания?
                Ответить
                • Можешь в Твиттере удалить какой-нибудь твит. Практически все новости по типу «X написал Y и в результате подвергся травле Z» заканчиваются одинаково: X удаляет твит.
                  Ответить
                • Коммитить напрямую тебя и так не пустят, а вот контрибьютить -- пожалуйста. Делаешь патч (хоть диффом) и шли в лист:) Только исполь3уй нормальный почтовый клиент (mutt например) ибо какой нить gmail засрёт тебе твой патч
                  Ответить
              • Это на самом деле не парадокс апинсорса, а парадокс бесплатного, подачки. Типа дареному коню в зубы не смотрят - хотя чем апинсорс более дареный чем бесплатный клозедсорс? Хз. Первое, по чему узнаётся ШВАБОДКА - вымарывание абсолютно любой критики, типа "я на ваше дерьмо проебал ёб твою мать сколько времени и всё ни за хуй". И это дерьмо потом смеет вякать на МС.
                Ответить
                • И поэтому мне f-droid не конкуррент гугл плею, при всёй его швабодности.
                  Ответить
              • Но ты же прыщеблядь? Как ты такое смогла написать?
                Ответить
                • Я не идейная. Мне что линупс, что винда - просто инструменты.
                  Ответить
                • Tuam matrem feci. Блядь тут только ты.
                  Ответить
                • Боже мой, как же вас сами не заебало пережевывать одно и тоже говно годами?

                  Как ни зайдешь сюда -- один пидар пиздит про "прыщи нинужны", другой пидар пиздит про "PHP" в котором ему не нужно "ООП".

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

                  Ну смените уже пластинку, придумайте новую шутку, вам блядь всем уже небось по 30 лет скоро, уже кандидатскую защитить можно было или фирму свою открыть, или стать кор девелоперов в каком-нито проекте, а вы всё жуете один и тот же лулз
                  Ответить
                  • Всё намного хуже. Некоторым уже за 30. С "Говнокодом" время летит незаметно. Именно поэтому я за "PHP".

                    А правда, давайте придумаем что-нибудь новое. Например, классификацию говнокода.
                    Ответить
                    • Нам за 30 уже
                      И всё, что было
                      Не смыть ни водкой, ни мылом [c]

                      >>классификацию
                      про это уже есть порн книжка: "типичные ошибки разработки"
                      Ответить
                        • Как пневмонии?

                          Кстати, я могу накидать примеры типичных багов программистов (именно программистов, а не их программ). Баги, которые происходят в голове.

                          Например: "Эффект второй системы" (из мистического человеко-месяца) это когда программист старается напихать в систему всего по максимуму и максимально ее усложнить чтобы реализовать во второй системе то, что не удалось в первой. Хуячит там всякие абстрактные фабрики стратегий вместо трех строчек, плодит фреймворки на пустом месте итд.
                          Мне кажется что вот Windows NT так получился: сделали там диспетчер конфигурации (ака реестр): абстракцию поверх файловой системы, например.


                          Или вот "Not Invented Here": ну про это все знают, это когда мы строим квадраноколесный велик потому что готовые велики нам наверняка не подойдут. Сколько я видал таких вот "систем рассылки почты", "систем постоения отчетов" и прочей фигни встроенной прямо в наколенные веб приложения.

                          Еще бывает баг "не решает всех проблем": Это когда говоришь: "попробуй foo, он позволит тебе не писать вручную весьэ тот код" а тебе в ответ: "но он всё равно не решит всех проблем, не буду даже пробовать".
                          Так обычно отказываются от фреймворков, от ORM, и от всего перечисленного в предыдущем пункте.

                          Или вот баг "bad experience". Это когда говорят: "у меня (как вариант -- у моих коллег) был bad experience с foo, я его не возьму" а внятного объяснения дать не могут.
                          "У меня был плохой опыт с регулярками -- они тормозили, потому я никогда их не использую, даже в простом скрипте". Опять таки я видал плохие опыты с ORM, с шаблонизаторами и даже с рекурсией: чел реально боялся ее использовать что бы не схватить стековерфлу.
                          Ответить
                  • ООП - это абсолютно излишнее нагромождение. Зачем плодить десятки директорий и файлов со сложной системой связей компонентов, если можно просто написать влажный процедурный код из двадцати-тридцати строк, в котором все действия изложены в том же порядке, в котором выполняются?
                    Ответить
            • Разумеется, нет.

              Кстати, некоммерческие делятся на closed source и open source. Open source теоретически можно проверить (хотя были случаи, когда говно в опенсурсных проектах обнаруживали задним числом). Ещё у open source можно сделать форк, если тебе что-то не нравится.
              Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8