您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何在Virtualbox中練習(xí)10 x86漏洞的配置修補(bǔ)與利用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
你將學(xué)習(xí)到如何在Virtualbox中練習(xí)Solaris 10 x86漏洞的配置修補(bǔ)與利用。其實(shí)對于多年來從事信息安全的我來說這是件及其無聊的事,而如果你是位UNIX的系統(tǒng)管理員則更是如此。
過去,你很難掌握所有的架構(gòu)。因?yàn)樵诋?dāng)時(shí)硬件非常難得,并且價(jià)格也非常昂貴。如今,隨著虛擬化技術(shù)(Qemu,VirtualBox,VMWare,AlphaVM,simh)的普及,這一切都開始變得容易。
Solaris是Sun Microsystems研發(fā)的計(jì)算機(jī)操作系統(tǒng)。Solaris 10已于2018年1月份正式停止更新。
我們將使用x86端口,在Linux x86_64((我使用的是Mint 19.1))上的Oracle VirtualBox中運(yùn)行它的x86_64版本。
下面,讓我們開始在Linux上的VirtualBox中安裝Solaris 10 - 以下是我們將要用到的(假設(shè)我們已對Linux發(fā)行版做了一些基本的設(shè)置)
Linux x86_64 (Linux Mint 19.1)
VirtualBox (6.0.10 – https://www.virtualbox.org/wiki/Linux_Downloads )
Solaris 10 x86 ( ftp://ftp.deu.edu.tr/pub/Solaris/iso/Solaris-10,8_11/sol-10-u10-ga2-x86-dvd.iso)
Solaris 10 x86 Oct-2017-CPU (ftp://ftp.deu.edu.tr/pub/Solaris/patch/x86/10_x86_Recommended.zip )
networking.sh (用于設(shè)置網(wǎng)絡(luò)適配器僅主機(jī)模式的自定義腳本)
networking.sh #Setup tap and bridge tunctl -t tap0 -u user ifconfig tap0 up brctl addbr br0 brctl setfd br0 0 #ifconfig eth0 10.0.2.1 up ifconfig br0 10.0.2.2 netmask 255.255.255.0 broadcast 10.0.2.255 up brctl addif br0 tap0 vboxnet0 ifconfig tap0 0.0.0.0 sysctl net.ipv4.ip_forward=1 #iptables -A FORWARD --in-interface eth0 -j ACCEPT iptables --table nat -A POSTROUTING --out-interface wlan0 -j MASQUERADE
請確保你已安裝uml-utilities和bridge-util軟件包,并使其正常工作。(注意:這里被注釋的eth0條目 - 這僅在你希望將模擬仿真網(wǎng)絡(luò)連接到物理網(wǎng)絡(luò),并使其可用于其他設(shè)備時(shí)啟用)
# apt-get install uml-utilities bridge-utils
此外,這里還有一個(gè)關(guān)于vboxnet0接口的重要說明,只有在virtualbox啟動(dòng)之后才能在我的系統(tǒng)上使用。因此,在重啟并運(yùn)行networking.sh腳本后務(wù)必牢記這點(diǎn)。
現(xiàn)在,讓我們開始吧!在VirtualBox中安裝Solaris 10非常簡單。我們將使用virtualbox中提供的Oracle Solaris 10 10/09和更高版本(64位)模板創(chuàng)建新的虛擬機(jī)。對于網(wǎng)絡(luò),我們將使用Host-only-Adapter和vboxnet0。對于磁盤,我們將分配不少于30 GB的存儲(chǔ)空間(由于/usr/pkgsrc的原因)。
我們將使用ZFS文件系統(tǒng),因此選擇具有ZFS內(nèi)核支持的Grub條目。以下是我將用于Solaris10 VM的網(wǎng)絡(luò)配置。
并遵循以下DNS條目(如果你有自己的DNS,也可以使用你自己的DNS)
我們將安裝Solaris 10 DVD ISO中的所有內(nèi)容,設(shè)置root密碼等。一旦安裝程序完成關(guān)閉系統(tǒng),從VM中刪除Solaris 10 DVD ISO并引導(dǎo)新磁盤。在控制臺(tái)中等待一段時(shí)間(尚未登錄),等待X11出現(xiàn)。我喜歡CDE,所以我將默認(rèn)桌面切換為了CDE
以root身份登錄后不要注冊O(shè)racle(我們不需要這么做,因?yàn)槲覀冇衟kgsrc bootstrap。
接下來,我們下載適用于Solaris10 x86_64的2017年10月CPU補(bǔ)丁并安裝它(這是Oracle的最后一個(gè)Solaris10 CPU,除非有擴(kuò)展支持..)
在我們的Linux主機(jī)上執(zhí)行以下操作
$ mkdir -p SOL10/patch $ cd SOL10/patch $ wget ftp://ftp.deu.edu.tr/pub/Solaris/patch/x86/10_x86_Recommended.zip $ unzip 10_x86_Recommended.zip $ mkisofs -iso-level 3 -J -joliet-long -rock -input-charset utf-8 -o patch.iso 10_x86_Recommended/
接下來,我們將這個(gè)新的patch.iso添加到我們的VirtualBox CDROM,并重啟到單用戶模式(對于Solaris上的CPU修補(bǔ),這是一個(gè)好主意)
實(shí)際上,當(dāng)我從CDE dtterm運(yùn)行時(shí),就是這樣進(jìn)入單用戶模式的。
# shutdown -g 0
在Solaris10中進(jìn)入單用戶模式后,使用Oct2017 CPU安裝ISO
# mount -r -F hsfs /dev/dsk/c0t1d0s0/ /cdrom/cdrom # cd /cdrom/cdrom
現(xiàn)在,我們將運(yùn)行補(bǔ)丁集
# ./installpatchset --s10patchset
你現(xiàn)在可以去泡杯咖啡或茶放松下,因?yàn)檫@可能需要你等待一段時(shí)間。修補(bǔ)過程完成后,重啟即可。
我們來檢查下內(nèi)核版本,看看是否應(yīng)用了補(bǔ)丁。可以看到,我們當(dāng)前運(yùn)行的是2017年10月的內(nèi)核。兩年前曾有披露過兩款NSA開發(fā)的專門用于攻擊Solaris系統(tǒng)的工具“EXTREMEPARR”和“EBBISLAND”。 登錄用戶使用這兩款工具可以提升到Root權(quán)限,并通過網(wǎng)絡(luò)遠(yuǎn)程獲取Root訪問權(quán)限。這兩款工具對x86和Sparc上運(yùn)行的Solaris版本6至版本10奏效,版本11也未能幸免。 exploit代碼可以在此處獲取。CDE本地提權(quán)exploit,我們將在稍后討論。
# uname -a SunOS solaris10 5.10 Generic_150401-55 i86pc i386 i86pc
現(xiàn)在,讓我們仔細(xì)檢查一下是否已安裝了GCC編譯器,如果沒有安裝那么請安裝它。再次在VirtualBox中安裝Solaris 10 installation DVD iso,Solaris將在OS中自動(dòng)安裝ISO。
# cd /cdrom/sol_10_811_x86/Solaris_10/Product # pkgadd -d . SUNWgcc (answer y)
我們來驗(yàn)證安裝,可以看到有一個(gè)正常工作的GCC編譯器(版本為3.4.3)
# /usr/sfw/bin/gcc -v
現(xiàn)在,我們應(yīng)該要為pkgsrc bootstrap做準(zhǔn)備了。讓我們先下載Q2-2019穩(wěn)定快照。
# cd /usr # ftp ftp.netbsd.org (login as anonymous or ftp) ftp> pass ftp> cd pub/pkgsrc/pkgsrc-2019Q2 ftp> get pgsrc.tar.gz ftp> quit # gunzip pkgsrc.tar.gz # tar -xvf pkgsrc.tar # rm pkgsrc.tar
一旦提取了tarball,我們就可以相應(yīng)地設(shè)置bootstrap環(huán)境了
https://wiki.netbsd.org/pkgsrc/how_to_use_pkgsrc_on_solaris/
不要在Solaris中使用附帶的bash shell運(yùn)行bootstrap,請使用默認(rèn)的sh!
# cd /usr/pkgrc/bootstrap # env CFLAGS=-O2 CC=/usr/sfw/bin/gcc ./bootstrap
如果一切順利,我們應(yīng)該會(huì)看到一個(gè)成功狀態(tài)的提示(在Core i5 Panasonic CF-53上花了大約5分鐘的時(shí)間)。
在構(gòu)建任何內(nèi)容之前,我們需要在/usr/pkg/etc/mk.conf中設(shè)置一些選項(xiàng)
CC= /usr/sfw/bin/gcc !! (this is needed to get newer GCC compiled, we will change it later) X11_TYPE= modular PKG_DEVELOPER=yes PKG_DEFAULT_OPTONS+=freetype truetype mmx subpixel official-mozilla-branding FETCH_USING=fetch
另外,在開始編譯GCC6之前,我們還需要準(zhǔn)備一些其他的東西…
現(xiàn)在我們可以使用本地bash
# bash
讓我們?yōu)閟hell設(shè)置額外的二進(jìn)制文件路徑(稍后你可以將其添加到你的配置文件中)
# export PATH=/usr/sbin:/usr/bin:/usr/dt/bin:/usr/ucb:/usr/ccs/bin:/usr/sfw/bin
清除摘要工作目錄并安裝它
# cd /usr/pkgsrc/pkgtools/digest # rm -rf .work # /usr/pkg/bin/bmake install clean clean-depends
如果在mk.conf中使用PKG_DEVELOPER = yes進(jìn)行編譯,那么首先構(gòu)建perl,因?yàn)樵诎鼊?chuàng)建過程中會(huì)出現(xiàn)錯(cuò)誤“perl interpreter for Trace.pm not existing”,因此對于perl,我們將在/usr/pkg/etc/mk.conf中將其更改為no as -> PKG_DEVELOPER=no。
# cd /usr/pkgsrc/lang/perl5 # /usr/pkg/bin/bmake install clean clean-depends
perl構(gòu)建完成后,我們就可以在mk.conf中將其設(shè)置回PKG_DEVELOPER = yes并繼續(xù)構(gòu)建。
現(xiàn)在我們終于轉(zhuǎn)到了GCC 6!
# cd /usr/pkgsrc/lang/gcc6 # /usr/pkg/bin/bmake install clean clean-depends
一旦我們編譯了GCC6,就必須設(shè)置/usr/pkg/etc/mk.conf來使用新的CC和CXX變量,如下所示:
CC= /usr/pkg/gcc6/bin/gcc CXX= /usr/pkg/gcc6/bin/g++
p.s 我將保持這部分開放,并在Solaris10上構(gòu)建pkgsrc軟件包時(shí)添加其他注釋,你可以在此處查看更多詳細(xì)信息。
現(xiàn)在我們將/usr/pkg/bin:/usr/pkg/sbin/usr/pkg/gcc6/bin/添加到我們的path中,因?yàn)槲覀冇辛艘粋€(gè)新的工作編譯器。
# export PATH=/usr/sbin:/usr/bin:/usr/dt/bin:/usr/ccs/bin:/usr/pkg/bin:/usr/pkg/sbin:/usr/pkg/gcc6/bin # ln -s /usr/ccs/bin/ar /usr/bin/ar # ln -s /usr/ccs/bin/ranlib /usr/bin/ranlib
INFOSEC部分 - 在Solaris上測試一些0days!CVE-2019-2832
我們可以使用最新的GCC6或舊版本GCC3,它們都可以正常工作。在本例中我使用的是本機(jī)的gcc 3.4.3,對于那些想要跳過gcc6編譯步驟的人來說(需要花費(fèi)很多時(shí)間)
我們現(xiàn)在將創(chuàng)建標(biāo)準(zhǔn)用戶并設(shè)置密碼
# useradd -m -d /export/home/user user -s /usr/bin/bash # passwd user
并定義一些新的.profile變量,以便我們可以使用/usr/pkg,以user身份登錄(或 # su – user)
一旦我們以user身份登錄,就可以下載并構(gòu)建Raptor的https://twitter.com/0xdea dtprintinfo exploit。在Linux主機(jī)上你可以從這里下載exploit代碼:https://raw.githubusercontent.com/0xdea/exploits/master/solaris/raptor_dtprintname_intel.c,并通過FTP上傳到Solaris 10 VM
$ wget https://raw.githubusercontent.com/0xdea/exploits/master/solaris/raptor_dtprintname_intel.c $ ftp 10.0.2.12 user Name (10.0.2.12:user): user 331 Password required for user. Password: ftp> put raptor_dtprintname_intel.c
在Solaris 10 VM上,我們在DT會(huì)話中編譯用戶下的代碼并運(yùn)行。
$ /usr/sfw/bin/gcc raptor_dtprintname_intel.c -o raptor_dtprintname_intel -Wall $ ./raptor_dtprintinfo_intel 10.0.2.12:0
但是出現(xiàn)一個(gè)錯(cuò)誤,即Xlib連接到10.0.2.12:0.0被服務(wù)器拒絕(安裝后的默認(rèn)行為)所以讓我們允許所有與X的通信連接,以root用戶身份運(yùn)行以授權(quán)/禁用遠(yuǎn)程主機(jī)的X11連接
# xhost + (this is to allow all to connect to X11; not a good idea) # xhost - (forbid all who are not authorized) # xhost +10.0.2.12 (in our case this would be better, so only trusted hosts can connect to X11)
我們再次運(yùn)行exploit代碼,這次可以正常運(yùn)行:)
因此,現(xiàn)在我們可以從被利用的root shell修復(fù)上述的CDE提權(quán)問題,即使我們沒有來自O(shè)racle的官方補(bǔ)?。ㄈ绻愫苄疫\(yùn)并且可以訪問Oracle的擴(kuò)展用戶支持,那么你可以像我們之前一樣應(yīng)用July-2019-CPU補(bǔ)?。?/p>
所需要的只是從/usr/dt/bin/dtprintinfo二進(jìn)制文件中刪除(S)etuid位。
# chmod -s /usr/dt/bin/dtprintinfo
這一次顯然exploit已不起作用了,因?yàn)樗堰M(jìn)行了修補(bǔ)
關(guān)于如何在Virtualbox中練習(xí)10 x86漏洞的配置修補(bǔ)與利用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。