1. Куча / Говнокод #26697

    0

    1. 1
    2. 2
    3. 3
    https://news.ycombinator.com/item?id=20426997
    
    LiveJournal data breach impacts 33M users with plaintext passwords

    Идиотия, кретинизм, олигофрения, и другие способы стать разработчиком в livejournal

    Запостил: MAKAKA, 27 Мая 2020

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

    • SEO пиздец
      Ответить
      • Зато какая документация! С реальными примерами на «Перле»:
        use strict;
        use Fcntl;
        use XMLRPC::Lite;
        use Data::Dumper;
        use Digest::MD5 qw(md5_hex);
        
        my $xmlrpc = new XMLRPC::Lite;
        $xmlrpc->proxy("http://www.example.com/interface/xmlrpc");
        my $get_chal = xmlrpc_call("LJ.XMLRPC.getchallenge");
        my $chal = $get_chal->{'challenge'};
        
        my $user = "test";
        my $pass = "pass";
        print "chal: $chal\n";
        
        my $response = md5_hex($chal . md5_hex($pass));
        
        my $login = xmlrpc_call('LJ.XMLRPC.login', {
                'username' => $user,
                'auth_method' => 'challenge',
                'auth_challenge' => $chal,
                'auth_response' => $response,
        });
        
        print Dumper($login);
        
        sub xmlrpc_call {
            my ($method, $req) = @_;
            my $res = $xmlrpc->call($method, $req);
            if ($res->fault) {
                print STDERR "Error:\n".
                " String: " . $res->faultstring . "\n" .
                " Code: " . $res->faultcode . "\n";
                exit 1;
            }
            return $res->result;
        }
        Ответить
        • >>Fcntl
          ???
          >>MD5
          блядь

          ну ладно, допустим это 1999й.
          но даже тогда ПЛЕЙЕН ПЛЯТЬ ТЕКСТАОМ
          Ответить
    • Поправь меня, если я что-нибудь неправильно понял.

      В эпоху до повсеместного внедрения HTTPS «ЖЖ» решил защитить пароли пользователя от перехвата. Для этого у клиента перехватывалось событие сабмита формы, пароль кокококонкатенировался с одноразовым токеном, хэшировался/шифровался и в таком виде уже отправлялся на сервер. Сервер производил те же самые операции и сравнивал результаты.

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

      Эту схему можно было исправить: перед конкатенацией хэшировать пароль, тогда на сервере придётся хранить несолёные хэши либо передавать клиенту соль.
      Ответить
      • Хотя погоди, в реальном примере от пароля вычисляется MD5:
        my $response = md5_hex($chal . md5_hex($pass));


        Значит, на сервере их плейнтекстом хранить не нужно, достаточно сохранить MD5.
        Ответить
        • chal тут это челленлж, он выступает временной солью видимо, и потому они хранят плейнтекст.
          Но всё равно пиздец: пусть бы хоть хешировали с известной солью
          Ответить
          • Тут внутри md5_hex($pass). $chal наворачивается уже сверху. Значит, достаточно хранить md5_hex($pass) вместо $pass.

            Лучше, конечно, заменить md5_hex($pass) на хэширование хотя бы с постоянной известной солью, но даже в имеющемся варианте плейнтекст не нужен.
            Ответить
            • > хранить md5_hex($pass)

              Учитывая то, как быстро считается md5, это ничем не отличается от хранения самого пароля.
              Ответить
            • md5 без соли ломается по словарю же
              Ответить
              • Да и солью точно так же ломается. Просто дольше т.к. у каждого юзера своя соль и перебирать придётся для каждого из них в отдельности.
                Ответить
                • Ты меня не понял)

                  Хеши для словарных паролей без соли уже известны, их ломать не надо.
                  А в случае с неизвестной солю нужен перебор.

                  Win7 + Strawberry perl 5.34
                  C:\>perl -MDigest::MD5 -e"print Digest::MD5::md5_hex('passw0rd')";
                  bed128365216c019988915ed3add75fb


                  Ubuntu 20.04 WSL, Perl 5.26
                  $ perl -MDigest::MD5 -e"print Digest::MD5::md5_hex('passw0rd')";
                  bed128365216c019988915ed3add75fb


                  Вводим хеш в гугол
                  https://md5.gromweb.com/?md5=bed128365216c019988915ed3add75fb
                  Ответить
                  • Я с помощью «hashes.org» отреверсил е-мейлы некоторых юзеров «Говнокода» по граватаркам.
                    Ответить
                  • Даже так. Я почему-то не подумал, что кто-то уже сгенерил табличку.
                    Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • Ну да, но тупой пароль даже pbkdf2 особо не спасёт. А я более чем уверен, что 20кк из этих 30кк тупые.
                        Ответить
                        • Откуда такая уверенность?
                          Ответить
                          • Потому что 95% людей идиоты. Но часть из них всё-таки поставила какой-нибудь плагин, который хранит и генерит пароли.
                            Ответить
                            • > Потому что 95% людей идиоты.
                              Потому, что учётки 95% пользователей веб-сайтов не имеют ценности, и потому защищены соответствующе.
                              Ответить
                              • Проблема не в том, что ты спиздишь мой пароль от форума любителей макромэ, и получишь возможность писать там от моего имени.

                                Проблема в том, что точно такой же пароль у меня от электронной почты, госуслуг, и рабочего компьютера.
                                Ответить
                                • Какой багор )))
                                  Ответить
                                  • Длинная, воронёная палка с крюком, которой пожилой санитар волочит трупы мною убиенных, чтобы затем затолкать их в гриль.
                                    Ответить
                          • Потому что типовой пароль пользователя это "Masha123"
                            Ответить
                        • Значит, надо требовать от питуза 8 символов в разном регистре.
                          А еще лучше OAuth и пусть у гугла голова болит.

                          А програмные клиенты пусть генерят пару ключей, и сдают тебе публичный. Нехуя чужие секреты хранить
                          Ответить
    • В комментариях пара ссылок. Оставлю тут для истории:
      http://srp.stanford.edu/
      https://en.wikipedia.org/wiki/Password-authenticated_key_agreement
      Ответить
    • показать все, что скрытоvanished
      Ответить

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