实战打靶集锦-021-glasgowsmile
提示:本文記錄了博主的一次曲折的打靶經歷。
目錄
- 1. 主機發現
- 2. 端口掃描
- 3. 服務枚舉
- 4. 服務探查
- 4.1 手工訪問
- 4.2 目錄枚舉
- 4.3 手工探查
- 4.4 搜索EXP
- 4.5 joomlascan
- 4.6 用戶猜測與密碼爆破
- 4.7 構建反彈shell
- 5. 提權
- 5.1 優化shell
- 5.2 枚舉系統信息
- 5.3 探查/etc/passwd
- 5.4 枚舉定時任務
- 5.5 枚舉可執行文件
- 5.6 linpeas掃描
- 5.7 EXP提權
- 5.8 密碼爆破
- 5.9 探索home目錄
- 5.10 登錄mysql
- 5.11 通過rob提權
- 5.12 通過abner提權
- 5.13 通過penguin提權
- 6. 獲取flag
1. 主機發現
目前只知道目標靶機在172.16.71.xx網段,通過如下的命令,看看這個網段上在線的主機。
$ nmap -sP 172.16.71.0/24
鎖定目標靶機地址為172.16.71.135(kali逐漸是71.134,虛擬機網關是71.2)。
2. 端口掃描
用下面的命令掃描一下靶機上開放的端口。
$ sudo nmap –p- 172.16.71.135
靶機只開放了ssh端口和http端口。
3. 服務枚舉
接下來通過下面的命令,枚舉一下端口上運行著什么服務。
$ sudo nmap -p22,80 -A -sV -sT 172.16.71.135
又是OpenSSH和Apache,接下來探查一下Apache。
4. 服務探查
4.1 手工訪問
先手工用瀏覽器訪問一下看看。
額,是一個靜態頁面,沒有什么特別的。
4.2 目錄枚舉
通過dirsearch枚舉一下目錄。
$ dirsearch –u http://172.16.71.135
貌似有管理控制臺,先不急著下手,用dirb掛上big字典再掃一遍。
沒有掃描出太特別的內容,只是把joomla目錄更進一步枚舉了一下。
4.3 手工探查
既然掃出了這么多內容,接下來還是手工進去看看都包含些什么吧。
進入/joomla的時候,默認會進入如下所示的頁面,還附帶有登錄表單。
嘗試猜測用戶名密碼也沒有效果,接下來看看下面的administrator目錄。
嗯,這個基本上就是管理控制臺的入口了,先查查joomla是個什么鬼吧,這竟然是個零代碼建站的內容管理系統。不過到目前為止不知道joomla的具體版本,默認用戶等相關內容,先繼續往下看。通過/joomla/administrator/components/com_admin/admin.xml文件基本可以判斷joomla的版本應該是3.1.1或者3.0.0。
除此之外,在手工探查的時候,沒有找到任何有用的信息。
4.4 搜索EXP
感覺沒啥招了,搜索一下EXP試試看。
搜索出來了海量的EXP,絕大部分都是跟component和plugin有關系的,不過這對我來說如同大海撈針,現在連joomla的版本號都還沒有確定下來。不過有一個名為Admin Takeover的EXP引起了我的注意,直接弄下來試試,一直報如下的錯誤。
實際驗證了一下,當前版本的joomla上,確實沒有EXP中對應的URL(http://172.16.71.135/joomla/index.php/component/users/?view=registration)。
4.5 joomlascan
安裝并使用joomscan進行掃描。
$ sudo apt install joomscan $ joomscan --url http://172.16.71.135/joomla
其實這里面掃出來的內容,真正對我們有用的是版本號3.7.3。我們再掃描一下有沒有對應版本的可以利用的EXP。
確實有個跨站的EXP,不過這個對我們構建反彈shell沒啥幫助,暫時放棄。
4.6 用戶猜測與密碼爆破
到目前為止,沒有任何進展,連用戶名都沒有鎖定。初步的想法是分別對幾個最可能的用戶名進行爆破:admin、administrator、joker、joomla、glasgow。這里我們用到一個叫cewl的工具來構造密碼字典,它的原理是爬取頁面內容,進行密碼字典構建,好處是具有針對性,命中率比較高。
$ cewl http://172.16.71.135/joomla > my_dic.txt運行效果如下。
接下來,通過瀏覽器使用隨意的用戶名密碼登錄/joomla/administrator頁面,并使用burp抓取交互過程,這里不再贅述。這里先用admin用戶嘗試爆破,相關配置如下圖。
針對admin用戶,沒有爆破出來,status code一直是200,response消息都是Username and password do not match or you do not have an account yet.,如下圖。
用同樣的方法,爆破administrator、joker、joomla、glasgow。
最終,在爆破joomla的時候,有兩個請求的status code是303(重定向),response中也沒有報錯信息,大概率是爆破成功了,我們手動試試,最終鎖定用戶名密碼是joomla:Gotham。
登錄到administrator下面看看。
是個控制臺頁面。
4.7 構建反彈shell
接下來,主要的目標是尋找構建反彈shell的突破口,最好是有能夠編輯的.php文件這種,一般會在報錯文件、模板文件等地方出現。
經過仔細查看,我們在上述菜單下找到了對應的模板管理,進去看看。
確實有兩個模板,我們隨便選一個進去看看,這里選擇第二個吧。
也確實有一些php文件,我們進入index.php看看吧。
進來后,還可以編輯并保存,太好了。我們在開頭添加下圖所示的內容構建反彈shell,注意地址和端口號。
保存完成后,在kali建立針對8888端口的監聽。
然后在前面保存php更改后的頁面上點擊下圖所示的 Template Preview菜單。
這時候,成功構建了反彈shell,如下圖。
這樣,我們就完成了突破邊界。
5. 提權
5.1 優化shell
通過python優化一下shell。
$ which python $ /usr/bin/python -c "import pty;pty.spawn('/bin/bash')"5.2 枚舉系統信息
通過下面的命令枚舉一下系統信息。
$ uname –a $ cat /etc/*-release $ getconf LONG_BIT
這就得到了目標靶機的系統詳細信息,64為的debian 10,內核版本是4.19.118-2。
5.3 探查/etc/passwd
先手工看一下。
www-data@glasgowsmile:/var/www/html/joomla$ cat /etc/passwd | grep -v "nologin"
還是有幾個看上去正常的賬號的,實在不行的話回來爆破一下。這里先嘗試寫入一個用戶試試看。
嗯,權限不夠。
5.4 枚舉定時任務
沒有可以直接利用的內容。
5.5 枚舉可執行文件
$ sudo –l $ find / -type f -user root -perm -o=w 2>/dev/null | grep -v "/sys/" | grep -v "/proc/" $ find / -user root -perm -4000 2>/dev/null
貌似沒有看到可以直接利用的內容。
5.6 linpeas掃描
實在沒有別的招數了,還是用linpeas掃描一下吧。首先掃出來的是一個highly probable的CVE漏洞。
直接下載poc代碼,并在kali本地編譯。
上傳到目標靶機后,賦予權限并運行。
ww-data@glasgowsmile:/tmp$ chmod u+x ptrace_traceme_root www-data@glasgowsmile:/tmp$ ./ptrace_traceme_root
缺少庫,現在舊版本的系統上編譯一下,然后再上傳靶機執行。
EXP利用失敗,這個漏洞應該是補上了。接下來試試pkexec,直接下載EXP。
將pkexec-exploit文件夾下面的CVE-2021-4034.py文件上傳到靶機。然后在靶機上直接運行一下。
$ chmod 775 CVE-2021-4034.py $ python3 CVE-2021-4034.py
靶機上執行的時候,一直卡在這里不動,這個漏洞應該是確實堵上了。用另一個編譯版本的EXP驗證了一下,果真如此。
5.7 EXP提權
實在沒啥招了,搜索一下EXP把,看看能不能直接通過系統漏洞進行提權,先從內核開始。
$ searchsploit kernel 4.19.118
主要就是上圖中所示的兩個,第二個我們剛剛試過了,沒成功,接下來我們嘗試試一下第一個。同樣的辦法,直接在低版本的linux上編譯,然后拿到靶機上嘗試。
應該是這個漏洞也堵上了,繼續看debian 10的EXP。
上圖中所示的兩個,不過搜索了一下,這個兩個漏洞只會在debian 9或者之前的版本中。
5.8 密碼爆破
到目前為止,一直沒有提權成功,不過我們知道home下除了joomla之外,還有三個用戶:abner、rob、penguin。分別對這三個用戶爆破一下試試看。這里使用hydra工具,先掛載前面爆破joomla的時候生成的密碼字典。
$ hydra -l abner -P my_dic.txt -vV -e ns 172.16.71.135 ssh $ hydra -l rob -P my_dic.txt -vV -e ns 172.16.71.135 ssh $ hydra -l penguin -P my_dic.txt -vV -e ns 172.16.71.135 ssh $ hydra -l abner -P /usr/share/wordlists/rockyou.txt -vV -e ns 172.16.71.135 ssh $ hydra -l rob -P /usr/share/wordlists/rockyou.txt -vV -e ns 172.16.71.135 ssh $ hydra -l penguin -P /usr/share/wordlists/rockyou.txt -vV -e ns 172.16.71.135 ssh結果折騰了半天,始終沒有爆破出來。還是回來看看home目錄有沒有什么遺漏吧。
5.9 探索home目錄
/home目錄下只有上述爆破的三個用戶的目錄,竟然沒有joomla用戶的目錄,先找找joomla用戶的默認反彈目錄/var/www/html/joomla或者其上一級目錄。
在joomla目錄下沒有發現特別有意義的內容,跟之前瀏覽器上找到的內容大差不差。不過在joomla的上級目錄,有個how_to.txt文件指的讓人懷疑。
看看內容再說。
感覺像是給Rob的一個留言,不過留言內容本身沒啥稀奇的。再到更上層目錄看一下,沒有其它內容的話,就拿Rob開刀了。
有意思,再上層的目錄下有個joomla2,這可能是備份目錄啊,進去看看。
內容上感覺跟joomla目錄的內容差不多,還是仔細逐個看看,不能掉以輕心。
功夫不負有心人,在joomla2的configuration.php文件中發現了上圖所示的蛛絲馬跡,貌似是mysql的登錄登錄信息,數據庫信息。先不往下探查了,直接登錄mysql吧。
5.10 登錄mysql
www-data@glasgowsmile:/var/www/joomla2$ mysql -u joomla -p
本以為比較順利,遺憾的是卡在這里了,一直沒有反應,重新啟動靶機還是同樣的問題。
查看了一下進程和端口也是正常的,如上圖所示。后來通過python3重新執行pty后,生效了,日了狗了,前面使用python3執行pty一直報錯的啊(如下圖)。
不過后面再次執行,很絲滑。
進入joomla_db后,發現表挺多的,我們直接找跟用戶有關的。
先看users表。
只有joomla用戶的信息,這個我們已經不關心了。再看看其它的幾個表。
最終在batjoke數據庫的taskforce表中發現了我們感興趣的內容,如上圖,感覺像是經過base64編碼后的用戶密碼。分別嘗試解開看看吧。
妥妥的,如絲般順滑。既然前面joomla給rob留了消息,那就拿Rob開刀吧。
5.11 通過rob提權
先進入到rob用戶。
這里再次查看可執行程序,沒有發現特殊的內容。接下來還是看看剛才沒權限訪問的rob的home目錄下面的內容。
先看Abnerineedyourhelp里面有些啥。
未發現特殊的信息,不過有兩點值得可疑:內容好像是做了字母的rot輪換,另外最后一串信息貌似是base64編碼過的內容,先嘗試解碼最后的字符串看看。
是亂碼,再嘗試用rot還原一下上面的內容(工具地址:https://gchq.github.io/CyberChef)。
需要設置輪換數字試一下,幸運的是,輪換數字是1的時候,看上去輸出的內容比較正常,這是發給Abner的消息,并且提到了密碼,意思是用這個密碼可以解決問題。重新把輸出內容中最后的字符串進行base64解碼。
這個密碼有點長啊,既然有密碼了,我們嘗試且兌換到abner用戶數進行提權試試。
5.12 通過abner提權
切換到abner用戶,然后看看home目錄下有些啥。
貌似沒啥特別的,逐個看看。
.bash_history里面的信息有些意思,首先貌似這個用戶可以運行systemctl指令,另外貌似這個用戶跟penguin有些瓜葛。先搜索一下這里提到的.dear_penguins.zip文件。
還真是有這個文件,并且文件的屬主就是abner,連切換用戶都省了,直接拷到/tmp目錄下解開看看是啥。
嗯,文件被加密了,并且abner用戶的當前密碼解壓成功了,看一下具體的內容。
有意思,又是一個留言,感覺像是一段臺詞,沒啥實際意義,不過最后的一個串可能是個密碼。我們用這個密碼嘗試登錄一下penguin用戶試試。
真的登錄成功了。
5.13 通過penguin提權
通用先看看home目錄下有些啥。
也有些值得進一步查看的內容,逐個看看。最終在SomeoneWhoHidesBehindAMask目錄下的PeopleAreStartingToNotice.txt文件中發現了一些蛛絲馬跡,是Joker給Penguin的留言,貌似說正在編寫一個程序,只能用root運行,完成以后joker將會考本到當前目錄。
提到了root權限,感覺快要搞定了。繼續往下看,在user3.txt文件中的內容也挺有意思,個人猜測應該是joker用戶的密碼。
嘗試切換到joker用戶試試。
貌似沒有這個用戶,搜索了一下/etc/passwd文件,確實沒有類似的用戶。不過SomeoneWhoHidesBehindAMask目錄下還有個文件.trash_old,其內容類似于一個shell腳本,如下圖所示。
但是肯定沒啥實際意義,不管怎么樣,執行一下吧。
確實沒啥用,不過這個文件是屬于root組的,有沒有可能通過這個玩意兒提權呢?下你看看是哪個進程在用這個文件。
貌似查不到,換個工具試試看,這里使用pspy64($ wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64)。下載并上傳到目標靶機的/tmp目錄下。
這次抓到了,發現root權限每分鐘運行一次.trash_old程序。我們嘗試直接將反彈shell寫入到.trash_old文件中替換原來的“exit 0”,這個文件我們是有權限的,如下圖所示。
在kali上的9999端口建立監聽,可以建立反彈shell。
成功了,進一步驗證一下。
6. 獲取flag
總結
以上是生活随笔為你收集整理的实战打靶集锦-021-glasgowsmile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 莆田华侨职业学校有没有计算机,莆田华侨职
- 下一篇: maven聚合项目项目间依赖时,出现错误