Выбрать главу

Несанкционированное подключение

Дождь за окном компьютерного клуба "Кальмар" стучал по жестяной крыше, создавая ритмичный фон для ночной работы. Алиса Вольская откинулась на спинку стула, чувствуя, как немеет шея после пяти часов непрерывного кодинга. Ее пальцы автоматически потянулись к клавишам, выводя очередную команду:

sqlmap -u "https://university.edu/internal/exams" --level=5 --risk=3

Экран ответил красным предупреждением:


[CRITICAL] IP blocked (403 Forbidden)

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

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

На часах было 3:47. Желудок предательски урчал, напоминая, что последний раз она ела... когда? Вчера днем? Вздохнув, Алиса сохранила сессию и потянулась за рюкзаком.

Магазин "У Васи" светился в ночи как маяк для ночных обитателей района. Заведение Василия Петровича работало круглосуточно — последний оплот цивилизации в этом районе после полуночи.

Дверь звякнула колокольчиком. За прилавком дремал сам хозяин — шестидесятилетний ветеран Афганистана с татуировкой на плече.

"Опять ночные бдения?" — хрипло спросил он, даже не открывая глаз.

Алиса хмыкнула, направляясь к полкам с едой. Ее выбор был привычен: две банки энергетика без сахара, готовые бутерброды и шоколадный батончик "Марс".

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

Алиса фыркнула, отсчитывая мелочь.

Старик сунул в пакет дополнительную шоколадку — "Бери. На сдачу. И спи иногда, а то выглядишь, как зомби из того ихнего сериала."

Дорога домой растянулась на двадцать медленных минут. Алиса шла, разминая затекшую спину, ее кроссовки хлюпали по лужам. Город в этот час был почти пуст — только редкие такси да полицейские патрули нарушали ночную тишину.

Она вспоминала, как год назад, сидя на этой же скамейке у детской площадки, взломала сайт олимпиады и вытащита ответы для поступления на бюджет.

Бабушка бы гордилась. Та самая бабушка, которая в семьдесят лет могла объяснить разницу между TCP и UDP, которая притащила с помойки первый компьютер и сказала: "Вот, разберись, как это работает". Которая верила в нее, даже когда все остальные — включая собственных родителей — давно махнули рукой.

А потом бабушки не стало. И Алиса осталась одна с ее старым ноутбуком и кучей нерешенных проблем.

Квартира встретила её беспорядком и тишиной. Однокомнатная хрущёвка напоминала логово затворника: стол, заваленный электроникой, три монитора на подставке из книг, кровать, утопающая в чистом белье. На полке мирно уживались "Современные операционные системы" Таненбаума и потрёпанный томик Ахматовой.

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

У вас (одно) непрочитанное сообщение.

Тема письма: "Изменения в расписании". Алиса уже хотела закрыть вкладку, когда заметила имя нового преподавателя:

Предмет "Информационная безопасность" будет вести Громов В.С. Первая лекция - послезавтра, 10:00, ауд. 310.

Она прищурилась. Новый преподаватель в середине семестра? Странно. Очень странно.

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

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

```python

# попытка обхода аутентификации через уязвимость в API

import requests

url = "https://university.internal/exam_system/login"

headers = {"X-Forwarded-For": "127.0.0.1"}

data = {"username": "admin", "password": "' OR '1'='1"}

```

Преподаватель по теории баз данных что-то говорил о нормализации, но слова растворялись в воздухе, не долетая до ее сознания. Вместо этого Алиса слышала лишь тонкий стук клавиш под пальцами и шелест страниц учебников. Она прикусила губу. Вкус железа разлился по рту — то ли от нервов, то ли от того, что неосознанно разгрызла заеду. На экране ноутбука мигал курсор, будто поддразнивая ее.