Ломаем панель для Телеграмм-бота

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

Ожидалось, что это будет глоток свежего воздуха. Так и оказалось. С небольшой разницей. Не свежего, а несвежего и не воздуха (пердежа сталобыть).

Продажник этого бота:

Продажник

По описанию - типичный движок для продажи спайсов закладками. Но подразумевается, что вы будете торговать аккаунтами стима и прочим ширпотребом (верим-верим).

XSS

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

И результат в админке:

С одной стороны - так себе. С другой - чтобы бот работал, надо регистрировать вебхук, а значит должен быть домен с сертификатом. В принципе, до этого файла можно гарантированно добраться перебором, пусть и долгим (ооочень долгим).

Обход аутентификации

Начало файлика admin.php:

Т.е. для того чтобы получить доступ к админке, достаточно поставить куку "h" с любым параметром:

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

Blind SQL-injection

Если еще раз взглянем на тот же самый кусок кода, то увидим SQL-инъекцию.

Как вы убедитесь далее, крутить ее бессмысленно. Но зато можно похвалить автора за стахановские объемы плотности ошибок на квадратный сантиметр кода.

Insert SQL-injection

Внутри админки тоже есть скули. Хотя и неправильно говорить "внутри", так как нам не нужны актуальный логин/пароль или куки админа. Например, при добавлении товара пишем вот так:

И результат:

Если бд крутится от рута (а с этим скриптом скорее всего так и будет) можно прочесть файлик:

И читаем:

Остался финальный штрих.

RCE

Заходим на страничку setup.html и перезаписываем ранее прочитанный файлик config.php:

В этом файлике видим:

Ну всё, можно лить шеллы и прочие непотребства творить:

Ранее мне уже попадались подобные боты (минимум 4), где атаку можно было провести прямо через бота в телеграмме (чаще всего - вставляя в никнейм xss-вектор).

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

На что я отвечу:

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

Ну и вот как вы относитесь к тому, что с вас берут деньги как за двустволку, а дают поделку из кусков говна и изоленты?

А во-вторых... ну вы понели)

P.S. Плати донат, дорогой мой читатель.