Загрузка...

Pentest Telegram bots with Inline buttons (SPIZEL ALL)

Thread in Articles created by доза Aug 4, 2025 at 12:38 PM. 189 views

  1. доза
    доза Topic starter Aug 4, 2025 at 12:38 PM https://lolz.live/threads/8981756/ | VDS сервера в Москве 420 Jul 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]

    Это только пример, вы в свою очередь можете использовать каллбек-дату для удаления чужих зеркал у ботов, выдачи себе средств, и много чего другого, если конечно админ
    отсталый
    а данную статью спиздили у​
     
    This article was useful for you?
    You can thank the author of the topic by transferring funds to your balance
    Thank the author
  2. мошенник
    сука этой статье уже год
     
    1. View previous comments (8)
    2. доза Topic starter
    3. мошенник
      доза, для тебя никакая
    4. доза Topic starter
  3. kingofchocopie
    Дизайн статьи как всегда топ :2011_nice:
     
  4. Kartoshka2331
    Kartoshka2331 Aug 4, 2025 at 12:56 PM Лучшая разработка на форуме > https://lolz.live/threads/7957132/ 3259 Sep 27, 2023
    Так а смысл если это твой бот…
     
    1. ScallyMilano
      Kartoshka2331, по сути да, но нет, так как это реф бот
    2. View the next comments (1)
  5. oooooooooooooo
    oooooooooooooo Aug 4, 2025 at 2:57 PM 50 рублей 426 Dec 28, 2024
    [IMG]возможно частично
     

Users are viewing thread now

  1. Трансильвания
  2. Ivan_vois
123 users viewed this thread for a month
Top
Loading...