hu1y40's blog

hu1y40'blog
天堂的穹空遍布地狱之火的颜色,但也是天堂。
  1. 首页
  2. 书籍阅读
  3. 正文

CVE-2013-0077 Firefox字符串替换整数溢出漏洞

2023年10月7日 1413点热度 0人点赞 0条评论

实验环境

推荐使用的环境 备注
操作系统 Windows 7
虚拟机 Vmware
调试器 Windbg
反汇编器 IDA Pro
漏洞软件 firefox

环境准备

对于开源的软件,为了方便调试分析过程,首先是搭好一个能出现crash,并且能在源码模式进行调试,所以需要下载源码,然后本地进行编译,这样既有了符号表也有了源码,并且符号表是自己编译出来的不会出现符号表对应错误,导致分析困难。

编译Firefox17.0需要以下准备:

  • Window7
  • VS2010
  • ed2k://|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467C831C2|/
  • Firefox17.0源码
  • http://releases.mozilla.org/pub/firefox/releases/17.0/
  • MozillaBuildSetup
  • http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.7.exe

在firefox-17.0.source\firefox-17.0.source\mozilla-release\xulrunner\config目录下找到mozconfig文件,添加

ac_add_options --enable-application=browser
ac_add_options --enable-debug
ac_add_options --enable-tests
ac_add_options --enable-trace-malloc
ac_add_options --disable-webgl

移动C:\mozilla-build目录下

fig:

然后打开start-msvc10.bat。进入源码目录,输入命令make -f client.mk build。

以上是书上的步骤,不出以外的话会出意外,会提示你缺少webgl,根本原因在于mozconfig没有在环境变量中,可以将他放在源代码目录firefox-17.0.source\firefox-17.0.source\mozilla-release下。

最后就是漫长的编译过程。

最后还是编译出错。。错误提示是bad file number。

删除原先的文件夹重新解压编译,发现成功了。

fig:

动态分析

附加进程firefox.exe,然后打开poc.html。

中断在

mozjs!js::Vectorwchar_t,32,js::ContextAllocPolicy::internalAppend<wchar_t>+0x51:
5650ac01 c705000000007b000000 mov dword ptr ds:[0],7Bh ds:0023:00000000=????????

非法写入了地址为0的空间。

fig:

回溯栈定位到DoReplace函数位于jsstr.cpp:2068。

fig:

fig:

定位函数

fig:

在下断点。

fig:

进入FindReplaceLength函数。

bu 67e26514 ".if(1){.echo 'replen = ';dd ebx l1;gc}"

第一次循环replen=0x10000,sub.length=0x10000,skip=0x2,所以每一次+0xffffe。

fig:

fig:

fig:

reverse传入的参数是0,该函数会分配堆块预留空间,由于reqeust是0,所以分不够。

fig:

fig:

最后在internalAppend函数中触发非法写

fig:

静态分析

补丁对传入reverse的参数进行了一次检测。

fig:

总结

这个整数溢出漏洞崩溃点离漏洞点不算远,如果在只有PoC没有借鉴的情况下,需要向上查找可能溢出的地方,在循环较长的情况下可以通过条件断点如bu 67e26514 ".if(1){.echo 'replen = ';dd ebx l1;gc}"观察数据。

问题

在动态调试过程中,源码级调试会一行一行的走,这其中有些变量会在寄存器中,一行一行走的时候很容易忘记变量在哪个寄存器中,导致不方便找到变量的值,这里如果用IDA静态协助分析会很简单,但是有没有更好的方法呢?

标签: 漏洞
最后更新:2023年10月7日

hu1y40

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 实验环境
  • 环境准备
  • 动态分析
  • 静态分析
  • 总结
  • 问题

分类目录

  • 0day安全
  • Bypass
  • C++Prime
  • CTF
  • DoS
  • DoS
  • FUZZ
  • iot
  • JSONP
  • MISC
  • MISC
  • PHP伪协议
  • Python
  • REVERSE
  • sqli-labs
  • SQL注入
  • Trick
  • UAF
  • WEB
  • WEB
  • XXE
  • 书籍阅读
  • 二进制
  • 代码阅读
  • 信息搜集
  • 信息泄露
  • 加密与解密
  • 双重释放漏洞
  • 反序列化
  • 命令执行
  • 命令执行
  • 堆溢出
  • 密码学
  • 弱加密
  • 提权漏洞
  • 整数溢出
  • 文件上传
  • 未分类
  • 栈溢出
  • 格式化字符串漏洞
  • 模型
  • 汇编语言
  • 渗透测试
  • 漏洞分析
  • 漏洞利用
  • 漏洞战争
  • 漏洞挖掘
  • 病毒分析
  • 越界读取
  • 路径遍历
  • 逻辑漏洞
  • 配置不当
  • 钓鱼
  • 靶场
最新 热点 随机
最新 热点 随机
加密算法 2023年度总结 RTSPServer StackOverflow Vulnerability FUZZ 总览篇 MP4Box 无限循环漏洞 CVE-2023-40477 Winrar RCE漏洞分析
0day安全 第11章实验 XXE漏洞原理及实例分析 加密与解密 第8章 下 加密与解密 第8章 上 AES加密 CVE-2023-32784 KeePass主密码泄露漏洞分析

COPYRIGHT © 2023 hu1y40's blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2021009673号-1