Загрузка...

Пентест телеграм ботов с инлайн кнопками ( спиздил статейку )

Тема в разделе Статьи создана пользователем доза 4 авг 2025 в 12:38. 187 просмотров

  1. доза
    доза Автор темы 4 авг 2025 в 12:38 https://lolz.live/threads/8981756/ | VDS сервера в Москве 420 4 июл 2022
    [IMG]
    [IMG]
    здаров, я доза и я спиздил статью


    Привет, для многих тема достаточно примитивная, но думаю кому-то будет полезно и интересно
    Начнем с пояснения что вообще такое инлайн кнопки:

    Инлайн-кнопки (Inline Keyboards)
    — это специальные кнопки, которые прикрепляются непосредственно к сообщениям в Telegram. В отличие от обычных клавиатур бота, которые заменяют стандартную клавиатуру пользователя, инлайн-кнопки располагаются прямо под сообщением, к которому они относятся. Они позволяют пользователю взаимодействовать с ботом, не отправляя при этом текстовые команды

    Пример как выглядит инлайн кнопки:
    [IMG]
    Так-же каждая инлайн-кнопка имеет свою callback-дату,

    Callback-дата (от англ. "callback data") — это невидимая, служебная информация, которая ассоциирована с инлайн-кнопкой в Telegram и отправляется боту при нажатии пользователем на эту кнопку.

    Это если говорить умно и правильно, но в целом, просто для понимания вам стоит понять что каждая inline кнопка имеет свою callback_data, callback_data нужна для обработки информации ботом, поэтому эта информация скрыта для обычных пользователей​
    Во первых, нам необходимо найти самого по себе бота которого мы будем пентестить, требования к боту:
    Бот имеет возможность создания зеркал​

    • Управление ботом происходит через inline-кнопки

    Так-же даже не стоит пробывать популярных боты по типу funstat/usersbox, поищите менее популярных ботов для пентеста


    После находа нужного нам бота, создаем его зеркало, думаю тут вам не нужен гайд


    Далее вам необходимо узнать свой тг айди, это можно сделать в боте Telegram: CHECK_MY_TG_ID_BOT
    [IMG]
    А так-же для удобной отправки курл запросов создаете файл index.html(где угодно), и в него пишете такой код:​
    <!DOCTYPE html>
    <html lang="ru">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Telegram Bot Sender</title>
    <style>
    body {
    font-family: Arial, sans-serif;
    background-color: #1a1a1a; /* Темный фон */
    color: #e0e0e0; /* Светлый текст */
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    margin: 0;
    padding: 20px;
    box-sizing: border-box;
    }

    .container {
    background-color: #2a2a2a; /* Чуть светлее фон для контейнера */
    padding: 30px;
    border-radius: 8px;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4);
    width: 100%;
    max-width: 500px;
    box-sizing: border-box;
    border: 1px solid #444; /* Небольшая рамка */
    }

    h1 {
    color: #61dafb; /* Цвет заголовка */
    text-align: center;
    margin-bottom: 25px;
    font-size: 1.8em;
    }

    .form-group {
    margin-bottom: 20px;
    }

    label {
    display: block;
    margin-bottom: 8px;
    font-weight: bold;
    color: #bbbbbb;
    }

    input[type="text"],
    textarea {
    width: calc(100% - 20px); /* Учитываем padding */
    padding: 10px;
    border: 1px solid #444;
    border-radius: 4px;
    background-color: #3a3a3a; /* Фон полей ввода */
    color: #e0e0e0;
    font-size: 1em;
    transition: border-color 0.3s, box-shadow 0.3s;
    }

    input[type="text"]:focus,
    textarea:focus {
    border-color: #61dafb;
    box-shadow: 0 0 5px rgba(97, 218, 251, 0.5);
    outline: none;
    }

    button {
    background-color: #61dafb; /* Цвет кнопки */
    color: #1a1a1a;
    padding: 12px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 1.1em;
    font-weight: bold;
    width: 100%;
    transition: background-color 0.3s, transform 0.2s;
    }

    button:hover {
    background-color: #4db8d8;
    transform: translateY(-2px);
    }

    button:active {
    transform: translateY(0);
    }

    #responseMessage {
    margin-top: 25px;
    padding: 15px;
    border-radius: 4px;
    word-wrap: break-word; /* Перенос длинных слов */
    white-space: pre-wrap; /* Сохранение пробелов и переносов строки */
    font-family: 'Courier New', Courier, monospace;
    font-size: 0.9em;
    max-height: 200px; /* Ограничение высоты для длинных ответов */
    overflow-y: auto; /* Прокрутка при переполнении */
    border: 1px solid #555;
    }

    .success {
    background-color: #28a74533; /* Полупрозрачный зеленый */
    color: #28a745; /* Зеленый текст */
    border-color: #28a745;
    }

    .error {
    background-color: #dc354533; /* Полупрозрачный красный */
    color: #dc3545; /* Красный текст */
    border-color: #dc3545;
    }

    .info {
    background-color: #ffc10733; /* Полупрозрачный желтый */
    color: #ffc107; /* Желтый текст */
    border-color: #ffc107;
    }
    </style>
    </head>
    <body>
    <div class="container">
    <h1>Telegram Bot Sender</h1>
    <form id="telegramForm">
    <div class="form-group">
    <label for="botToken">Токен Telegram бота:</label>
    <input type="text" id="botToken" placeholder="Введите токен бота" required>
    </div>
    <div class="form-group">
    <label for="chatId">ID Чата пользователя:</label>
    <input type="text" id="chatId" placeholder="Введите ID чата" required>
    </div>
    <div class="form-group">
    <label for="messageText">Текст сообщения:</label>
    <textarea id="messageText" rows="4" placeholder="Введите текст сообщения" required></textarea>
    </div>
    <div class="form-group">
    <label for="inlineButtonText">Текст инлайн-кнопки:</label>
    <input type="text" id="inlineButtonText" placeholder="Например, 'Нажми меня'" required>
    </div>
    <div class="form-group">
    <label for="inlineButtonCallbackData">Callback Data инлайн-кнопки:</label>
    <input type="text" id="inlineButtonCallbackData" placeholder="Например, 'my_unique_data'" required>
    </div>
    <button type="submit">Отправить сообщение</button>
    </form>
    <div id="responseMessage" class="info"></div>
    </div>

    <script>
    document.addEventListener('DOMContentLoaded', () => {
    const form = document.getElementById('telegramForm');
    const botTokenInput = document.getElementById('botToken');
    const chatIdInput = document.getElementById('chatId');
    const messageTextInput = document.getElementById('messageText');
    const inlineButtonTextInput = document.getElementById('inlineButtonText');
    const inlineButtonCallbackDataInput = document.getElementById('inlineButtonCallbackData');
    const responseMessageDiv = document.getElementById('responseMessage');

    // Загрузка токена из localStorage при загрузке страницы
    const savedBotToken = localStorage.getItem('telegramBotToken');
    if (savedBotToken) {
    botTokenInput.value = savedBotToken;
    responseMessageDiv.textContent = 'Токен бота загружен из локального хранилища.';
    responseMessageDiv.className = 'info';
    } else {
    responseMessageDiv.textContent = 'Введите данные для отправки сообщения.';
    responseMessageDiv.className = 'info';
    }

    form.addEventListener('submit', async (event) => {
    event.preventDefault(); // Предотвращаем стандартную отправку формы

    const botToken = botTokenInput.value.trim();
    const chatId = chatIdInput.value.trim();
    const messageText = messageTextInput.value.trim();
    const inlineButtonText = inlineButtonTextInput.value.trim();
    const inlineButtonCallbackData = inlineButtonCallbackDataInput.value.trim();

    if (!botToken || !chatId || !messageText || !inlineButtonText || !inlineButtonCallbackData) {
    displayMessage('Пожалуйста, заполните все поля!', 'error');
    return;
    }

    // Сохраняем токен в localStorage
    localStorage.setItem('telegramBotToken', botToken);

    displayMessage('Отправка сообщения...', 'info');

    const apiUrl = `https://api.telegram.org/bot${botToken}/sendMessage`;

    const keyboard = {
    inline_keyboard: [
    [{ text: inlineButtonText, callback_data: inlineButtonCallbackData }]
    ]
    };

    const payload = {
    chat_id: chatId,
    text: messageText,
    reply_markup: JSON.stringify(keyboard)
    };

    try {
    const response = await fetch(apiUrl, {
    method: 'POST',
    headers: {
    'Content-Type': 'application/json'
    },
    body: JSON.stringify(payload)
    });

    const data = await response.json();

    if (response.ok) {
    displayMessage('Сообщение успешно отправлено!\n' + JSON.stringify(data, null, 2), 'success');
    } else {
    displayMessage('Ошибка при отправке сообщения Telegram:\nСтатус: ' + response.status + '\n' + JSON.stringify(data, null, 2), 'error');
    }
    } catch (error) {
    displayMessage('Произошла ошибка сети или запроса: ' + error.message, 'error');
    }
    });

    function displayMessage(message, type) {
    responseMessageDiv.textContent = message;
    responseMessageDiv.className = `info ${type}`; // Добавляем класс типа
    }
    });
    </script>
    </body>
    </html>​
    После чего сохраняете файл, и в последующем открывайте его через браузер.

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

    Объясняю:
    Сейчас у нас есть все для пентеста, сам по себе пентест будет заключаться в подмене callback-данных, тобишь, мы будем через курл запрос создавать инлайн кнопку, с нужными нам каллбек-данными, тоесть есть к примеру кнопка для удаления чужого зеркала бота, и у нее каллбек-дата что-то типа delbot:123:yes, и с этой каллбек даты мы сразу понимаем, что наш бот имеет айди 123, и если мы попробуем отправить кнопку с каллбек-датой delbot:1:yes (заменили 123 на 1, тобишь на айди чужого зеркала) то мы сможем удалить зеркало этого человека(если конечно автор бота не отсталый, и сделал проверку на то кто пытаеться удалить бота, и подобные фиксы), Покажу на супер легком примере:
    [IMG]
    У нас есть несколько инлайн кнопок в нашем примере, и например я хочу отправить инлайн кнопку с каллбек-датой показа документа 456, я жму правой кнопкой мышки на эту кнопку, и жму копировать каллбек-данные, после захожу в наш index.html, и заполняю поля:
    Тут пример как заполнять, и пример готового заполнения

    [IMG]
    После жмем кнопку отправки сообщения, и принимаем наше сообщение с инлайн кнопкой в котором каллбек-дата которая нам нужна:
    [IMG]

    Это только пример, вы в свою очередь можете использовать каллбек-дату для удаления чужих зеркал у ботов, выдачи себе средств, и много чего другого, если конечно админ
    отсталый
    а данную статью спиздили у​
     
    Этот материал оказался полезным?
    Вы можете отблагодарить автора темы путем перевода средств на баланс
    Отблагодарить автора
    4 авг 2025 в 12:38 Изменено
  2. мошенник
    сука этой статье уже год
     
    1. Посмотреть предыдущие комментарии (8)
    2. доза Автор темы
    3. мошенник
      доза, для тебя никакая
    4. доза Автор темы
  3. kingofchocopie
    Дизайн статьи как всегда топ :2011_nice:
     
    1. доза Автор темы
  4. Kartoshka2331
    Kartoshka2331 4 авг 2025 в 12:56 Лучшая разработка на форуме > https://lolz.live/threads/7957132/ 3259 27 сен 2023
    Так а смысл если это твой бот…
     
    1. ScallyMilano
      Kartoshka2331, по сути да, но нет, так как это реф бот
  5. oooooooooooooo
    oooooooooooooo 4 авг 2025 в 14:57 50 рублей 426 28 дек 2024
    [IMG]возможно частично
     

Просматривают тему

  1. Ivan_vois
122 пользователя посмотрело эту тему за месяц
Top
Загрузка...