IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> CVE-2018-8961复现 -> 正文阅读

[系统运维]CVE-2018-8961复现

因为要复现CVE-2018-8961,CVE-2018-8962,CVE-2018-8963这三个UAF漏洞,所以需要安装libming。由于安装过程中报了几个错误,故记录于此。

建议用ubuntu 18.04复现,应该编译没什么大问题。用ubuntu 20.04出现了很多小问题,不过不妨碍复现漏洞。

提出漏洞的issue链接:https://github.com/libming/libming/issues/130

虽然看起来好像和之前的CVE有些重复,但不妨碍复现。

安装libming

按如下命令安装:

git clone https://github.com/libming/libming.git
cd libming
# 切换到有漏洞的分支
git checkout libming-0_4_8
./autogen.sh
./configure --disable-freetype --disable-shared
make

因为只是复现漏洞,所以这里就不make install安装到/usr下了。

进入libming/util下可以看到漏洞二进制程序swftophp。

image-20220205210402774

安装时遇到的两个错误

(1)运行./configure时,报以下错误:

configure: error: Could not detect freetype-config!

按提示安装sudo apt-get install libfreetype6 libfreetype6-dev并没有解决。

在一顿搜索下,说是要源码安装,源码安装也没有解决。最后加个disable-freetype的参数解决了。但是在ubuntu 18.04没有遇到这个错误。

(2)在ubuntu 20.04下make的话可能会报错:

/usr/bin/ld: …/src/.libs/libming.a(swf5compiler.tab.o)😦.bss+0x44): multiple definition of `swf5debug’; …/src/.libs/libming.a(lex.swf5.o)😦.bss+0x0): first defined here

在ubuntu 18.04也重新编译了下,没有报这个错误。

在ubuntu 20.04 下,这条错误可以在configure那边加个–disable-shared的参数,就能成功编译swftophp这个有漏洞的二进制。(虽然最后还是会报错,但是对于复现漏洞而言,已经成功了2333

复现漏洞

下载poc

wget https://github.com/libming/libming/files/1844941/libming_poc.zip
unzip libming_poc.zip

由于没有开启ASAN编译选项,就用valgrind

如果没有安装valgrind,执行命令apt-get install valgrind安装一下。

# 在libming/util目录下
valgrind ./swftophp [poc所在的目录]

poc 所在的目录下其中三个poc对应着这三个PoC。

image-20220205212605366

复现CVE-2018-8961,得到如下结果:

58708 Process terminating with default action of signal 11 (SIGSEGV)
58708 General Protection Fault
58708 at 0x11227F: strlenext (decompile.c:237)
58708 by 0x11227F: getName (decompile.c:398)
58708 by 0x112A8C: decompilePUSHPARAM (decompile.c:781)
58708 by 0x1164B1: decompileSETMEMBER (decompile.c:1690)
58708 by 0x1164B1: decompileAction (decompile.c:3202)
58708 by 0x11927B: decompileActions (decompile.c:3401)
58708 by 0x11927B: decompile5Action (decompile.c:3423)
58708 by 0x10F366: outputSWF_DOACTION (outputscript.c:1547)
58708 by 0x10C875: readMovie (main.c:277)
58708 by 0x10C875: main (main.c:350)

issue的结果是:

image-20220205213617461

可以看到漏洞的trace是相同的,就是对应的行号不太一样。明明都是0.4.8版本,我也很困惑。

漏洞成因

根据trace来看的话,说是237行的str指针导致了UAF。

image-20220205215642037

那么这个str指针是从哪里来的,再往回看,可以看到398行这里给strlenext函数传入了指针pool[act->p.Constant8]。也就是这个指针之前在哪里被释放过了。

image-20220205215805149

后面根据现有的trace就比较难找到到底是哪里free了这个指针。需要结合其他的crash triage工具来做了。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 14:09:05  更:2022-02-06 14:10:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:57:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码