Дисклеймер: Статья носит исключительно информационный характер и не является инструкцией или призывом к совершению противоправных действий. Мы здесь все учимся и делимся историями.

Всем привет. Меня зовут Аня (SavAnna) я работаю AppSec в компании ATI.SU и как хобби занимаюсь багбаунти. Багбаунти - отличный способ отдохнуть от своих сервисов и сменить фокус с "защиты" на "нападение". Не всегда баги ищутся целенаправленно - иногда это происходит случайно. Хочу показать, что много странных и простых багов может найти каждый.

В качестве предисловия и благодарности:

Я очень люблю программу багбаунти Timeweb. Искать и взаимодействовать с командой ИБ приятно. Они большие молодцы и очень выросли со старта.

История бага:

При регистрации в сервисах имя пользователя создается автоматически. Появилась фича смены логина. Я завела там баги, к сожалению о них оказалось уже знают. Получила "Дубликаты". Но у меня остался аккаунт с username="NULL".

Прошло полгода с тестирования.

И мне на почту стали приходить письма. Очень много писем.

За несколько дней мой почтовый ящик завалили письмами. Не сразу поняла, что происходит.

Сначала подумала, что разработчики тестируют фикс на аккаунте, указанном в другом моем отчете в этой программе. Приглядевшись поняла, что такое только с аккаунтом с именем "NULL". Проверила по whoami и обнаружила, что сообщения приходят по дате после покупки или продления доменов. Зашла на аккаунт проверить появились ли у меня в управлении эти домены - нет, это были просто сообщения на почту, которые судя по всему дублировались на мой аккаунт.

Вот так случайно, был найден и заведен баг с низким импактом.

В чем была причина?

Разработчик прокомментировал, что там было 2 причины:

  • Портал вместо логина клиента "null" стал отправлять null

  • Недостаток валидации в отправке нотификации

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

Ссылка на раскрытый репорт:

https://bugbounty.bi.zone/reports/5077

Баян - это уже было

Похожий отчет был сдан в qiwi https://hackerone.com/reports/487296

Так же похожая история произошла с американским исследователем в области безопасности Джозефом Тартаро, когда он решил сделать номер "NULL" своей машине и начал получать штрафы всех машин с не распознанными номерами. https://habr.com/ru/companies/ua-hosting/articles/463859/

В качестве вывода

  • Некоторые баги в багбаунти находятся случайно - главное вовремя заметить

  • Вот такие бывают забавные ошибки валидации

  • "null", "nil", "undefined", "NULL", "None" иногда превращаются в null, nil, undefined, NULL, None и их стоит использовать в названии сущностей при тестировании

Комментарии (78)


  1. akokarev
    09.10.2025 19:21

    В некоторых банках можно логин менять


    1. Squoworode
      09.10.2025 19:21

      - Здесь выдают зарплату? Моя фамилия Итого

      - Нет, здесь собирают налоги. Как, говорите, ваша фамилия?


      1. sunsexsurf
        09.10.2025 19:21

        Итого! Итого! Вот дурак, больше всех получает и какой уже раз не приходит!



  1. playstation_f_a_n
    09.10.2025 19:21

    Ещё бывает 0


    1. TIEugene
      09.10.2025 19:21

      а так же true, false, "", '', `` etc


      1. AlexSpirit
        09.10.2025 19:21

        Я знавал человека по имени Drop Database


        1. green_fenix
          09.10.2025 19:21

          Кошмар веб девелоперов - мистер [object Object]


          1. Sau
            09.10.2025 19:21

            Сообщение: Через NaN минут к вам подъедет [object Object] номер undefined.


            1. entze
              09.10.2025 19:21

              NAN это детское питание.


              1. diverdm
                09.10.2025 19:21

                Нан это хлеб по-казахски.


                1. jooher
                  09.10.2025 19:21

                  NaN это нитрид натрия


        1. sunsexsurf
          09.10.2025 19:21

          Хм. Это его родителям звонили из школы, а они отвечали «это научит вас экранировать строки»? ))


          1. FanatPHP
            09.10.2025 19:21

            К сожалению, там мамаша сказала не "строки", а "входные данные". Впрочем, одно другого не сильно лучше, и оставляет огромный простор для добавления дыр. Лучше бы она посоветовала "параметризованные запросы" (и белые списки до кучи).


          1. aamonster
            09.10.2025 19:21

            Да, маленький Бобби дроп.


        1. Wesha
          09.10.2025 19:21


          1. randomsimplenumber
            09.10.2025 19:21

            Древнее зло ;)

            Кстати, что за странная повозка?


            1. Squoworode
              09.10.2025 19:21

              Renault Megane I Phase II (1999-2002)


          1. Kovurr
            09.10.2025 19:21

            Что бд называется "TABLICE" это еще знать надо.


          1. ManulVRN
            09.10.2025 19:21

            Я тупой и ничего не смыслю в веб-разработке. Поясните, допустим, так или иначе, через sql injection, на сервер попала подобная команда. Или там drop table XXX, неважно. Ну и что? Неужели у пользователя есть полномочия на выполнение подобных операций??? Будет сообщение о какой-нибудь ошибке и все.


            1. KivApple
              09.10.2025 19:21

              Бекэнд в 99.9% случаев подключается под юзером с правами на DELETE строк, потому что как-то должна же работать админка, где есть функция удаления записей. Разграничения прав доступа идёт на уровне бекэнда, а не СУБД.

              Также очень часто бекэнд имеет право на создание и удаление таблиц, потому что он же и выполняет миграцию схемы данных при обновлении ПО.

              Единственное, что DROP DATABASE может не быть, но только если админ заморочился сделать отдельного юзера под бекэнд. Что вовсе не факт, если СУБД обслуживает лишь один бекэнд.


              1. piton_nsk
                09.10.2025 19:21

                под юзером с правами на DELETE строк, потому что как-то должна же работать админка, где есть функция удаления записей.

                Это там, где soft delete не завезли, ну и прочие излишества. Пользователи, права, зачем это все? Бизнесу надо быстрее фичи в прод выкатывать, а то конкуренты обгонят, бггг)


                1. mayorovp
                  09.10.2025 19:21

                  А чем фундаментально отличается право делать UPDATE от права делать DELETE в плане "напакостить"? Да ничем, затирание таблицы мусором ничем не лучше удаления.

                  Чтобы нормально задействовать систему прав уровня СУБД, эта самая система прав должна существовать, и не для галочки. А существующие реализации row level security именно для галочки и сделаны.


                  1. randomsimplenumber
                    09.10.2025 19:21

                    У камеры должны быть права только на insert. Тут вся иньекция и закончилась.


                    1. mayorovp
                      09.10.2025 19:21

                      У камеры вообще не должно быть прав в базе


                  1. piton_nsk
                    09.10.2025 19:21

                    как уже написали только insert и только в определенную таблицу, права на удаление таблиц только у админа.

                    в крайности впадать не стоит, но если что-то торчит наружу, надо хорошо подумать что пользователю можно делать, а что нельзя


              1. Vitimbo
                09.10.2025 19:21

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


              1. Anizam74
                09.10.2025 19:21

                Удаление записей не принято делать. Обычно добавляют дополнительное поле "deleted" и переключают его значение на true


        1. Dimmirslr
          09.10.2025 19:21

          Надеюсь он никогда не будет заполнять анкету на Госуслугах


  1. Golickoff
    09.10.2025 19:21

    Я много лет использую логин null или undefined везде, где могу. Это первое, что я пробую при регистрации, и делаю это как раз в надежде столкнуться с чем-то описанным в статье. За всё время ничего не случилось. Только на сайте одного известного онлайн-магазина электроники лет 5 назад получил уведомление о том, что мой ник был изменён модератором сайта.


    1. redfox0
      09.10.2025 19:21

      На одном крупном сайте зарегистрировался с ником admin. В комментарии к посту пришли настоящие админы и долго возмущались занятым мной ником (который оставался свободным всё 10+ лет существования сайта).


      1. randomsimplenumber
        09.10.2025 19:21

        Старинный лайфхак. Прийдет хитрый хакер ломать парол админа - а его нет ;)