@handler.subscribe(NewHostEvent)
class PortDiscovery(Hunter):
def execute(self):
for p in default_ports:
if self.test_connection(self.host, p):
self.publish_event(OpenPortEvent(port=p))
Slide 28
Slide 28 text
@handler.subscribe(OpenPortEvent, predicate= lambda x: x.port ==
10255 or x.port == 10250)
class KubeletDiscovery(Hunter):
def get_read_access(self):
r = requests.get("http://{host}:{port}/metrics")
if r.status_code == 200:
self.publish_event(ReadKubeletEvent())
Slide 29
Slide 29 text
@handler.subscribe(ReadKubeletEvent)
class ReadKubeletPortHunter(Hunter):
def execute(self):
k8s_version = self.get_k8s_version()
if k8s_version:
self.publish_event(K8sVersionDisclosure(
version=k8s_version))
Slide 30
Slide 30 text
class K8sVersionDisclosure(Vulnerability, Event):
def __init__(self, version):
Vulnerability.__init__(self, Kubelet,
"K8s Version Disclosure", category=InformationDisclosure)
self.evidence = version