实战打靶集锦-016-lampiao
提示:本文記錄了博主打靶過程中一次曲折的提權經歷
目錄
- 1. 主機發現
- 2. 端口掃描
- 3. 服務枚舉
- 4. 服務探查
- 4.1 80端口探查
- 4.2 1898端口探查
- 4.3 EXP搜索
- 4.3.1 exploit/unix/webapp/drupal_coder_exec
- 4.3.2 exploit/unix/webapp/drupal_drupalgeddon2
- 5. 提權
- 5.1 系統信息枚舉
- 5.2 探查/etc/passwd
- 5.3 枚舉定時任務
- 5.4 枚舉可執行程序
- 5.4.1 ping6
- 5.4.2 chfn
- 5.4.3 pkexec
- 5.4.4 mtr
- 5.4.5 pppd
- 5.5 EXP提權
- 5.5.1 CVE-2017-16995
- 5.5.2 CVE-2017-1000112
- 5.5.3 CVE-2016-8655
- 5.5.4 CVE-2016-5195 dirtycow
- 5.5.5 CVE-2016-5195 dirtycow2
- 6. 獲取flag
1. 主機發現
目前只知道目標靶機在65.xx網段,通過如下的命令,看看這個網段上在線的主機。
$ nmap -sP 192.168.65.0/24
鎖定靶機地址為192.168.65.148。
2. 端口掃描
通過下面的命令對目標靶機進行全端口掃描。
$ sudo nmap -p- 192.168.65.1483. 服務枚舉
通過下面的命令枚舉一下目標靶機的開放端口上運行著什么服務。
$ sudo nmap -p22,80,1898 -A -sV -sT 192.168.65.148
額,80端口上的服務沒有沒舉出來,估計得等會兒手工探查了。
4. 服務探查
4.1 80端口探查
直接用瀏覽器訪問一下看看。
額,靶機挺會玩兒的,目錄枚舉一下看看。
結果有點令人失望,啥都沒掃出來。
4.2 1898端口探查
既然1898端口上也是http的服務,通過瀏覽器訪問一下看看。
頁面中有登錄入口、創建賬號和密碼的入口,看來這里面可能有我們需要的內容,先看一下有沒有站點地圖。
內容還挺多的,再進行一下目錄枚舉。
都枚舉出來了,我們逐個看看。
從“/MAINTAINERS.txt”頁面,我們可以知道這里用的是一個名叫Drupal 7的框架。
上網搜索一下看看,這個drupal是個啥。
上圖是百度百科的內容,貌似是一個開源的優秀的內容管理框架,繼續往下看。從“INSTALL.txt”頁面可以看到,Drupal框架會用到Apache 2.0或者以上、PHP 5.2.4或者以上,以及數據庫(Mysql 5.0.15及以上、MariaDB 5.1.44及以上,Percona 5.1.70及以上、pgSQL 8.3及以上,SQLite 3.3.7及以上),如下圖。
繼續探查,從“CHANGELOG.txt”頁面,可以推斷當前的Drupal版本應該是7.54。
繼續往下看,scripts目錄下,有好多的shell腳本,說不定后面我們可以用得到,尤其是一個對密碼進行hash的腳本。
目前就搜羅到了這么多信息,接下來我們嘗試一下登錄入口和創建賬號密碼的入口。
隨便輸入用戶名密碼進行登錄,看看報什么錯。
用戶枚舉猜測是不太好辦,看看下面的創建賬號。
點擊上圖中的Create new account按鈕之后,會彈出下圖所示的提示。
不管了,發送郵件不成功是正常的,看看下面的request new password能不能有用。
嗯,這個也是不管用的。
4.3 EXP搜索
搜索一下看看有沒有關于Drupal的公共EXP。
內容還真是不少,并且還有很多都是關于Metasploit的,鑒于Metasploit的神奇之處,我們先用Metasploit搜索一下看看。
也不是很多,逐個試試吧。
4.3.1 exploit/unix/webapp/drupal_coder_exec
msf6 > use exploit/unix/webapp/drupal_coder_exec msf6 exploit(unix/webapp/drupal_coder_exec) > set RHOSTS 192.168.65.148 msf6 exploit(unix/webapp/drupal_coder_exec) > set RPORT 1898 msf6 exploit(unix/webapp/drupal_coder_exec) > run
運行失敗了。
4.3.2 exploit/unix/webapp/drupal_drupalgeddon2
msf6> use exploit/unix/webapp/drupal_drupalgeddon2 msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set RHOSTS 192.168.65.148 msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set RPORT 1898 msf6 exploit(unix/webapp/drupal_drupalgeddon2) > run
感覺這個是靠譜的,進一步驗證一下。
嗯,我們已經成功突破邊界。
5. 提權
先優化一下shell(形成習慣了,不管行不行,先執行一下優化再說)。
$ whereis python $ /usr/bin/python3.4 -c "import pty;pty.spawn('/bin/bash')"5.1 系統信息枚舉
$ uname -a $ cat /etc/*-release $ getconf LONG_BIT
目標靶機是32位的Ubuntu 14.04.5,kernel版本是4.4.0-32-generic。
5.2 探查/etc/passwd
$ cat /etc/passwd | grep -v "nologin"
除了root之外,真正具備shell權限的還有個tiago用戶。嘗試一下弱密碼提權。
嘗試往/etc/passwd中寫入用戶看看。
沒權限。
5.3 枚舉定時任務
$ cat /etc/crontab5.4 枚舉可執行程序
先枚舉一下root用戶下面其它用戶客戶可寫的文件。
$ find / -type f -user root -perm -o=w 2>/dev/null | grep -v "/sys/" | grep -v "/proc/"
就搜出來了一個隱藏文件.lock,看看這是個啥文件。
竟然是空的,沒有理想的結果,再看看具備SUID的可執行文件(下面命令三選一)。
上圖中的幾個程序都值得懷疑,試試看吧。
5.4.1 ping6
從搜索結果來看,ping6不太可能提權。
5.4.2 chfn
這個倒是有一定的可能性,我們看一下代碼。
貌似只在SuSE上可行,不管了,既然都到這里了,上傳到目標靶機上執行一下看看。
嗯,這個靶機做了特殊限制,沒法直接通過wget下載,我們通過nc傳輸一下。
靶機上啟動6666端口監聽,將收到的內容放到1299.sh文件。
kali上通過kali往靶機的6666端口發送1299.sh文件
$ nc -nv 192.168.65.148 6666 < 1299.sh然后在靶機上修改一下執行權限,并運行一下。
理論上,這個腳本應該是可以提權的,可惜的是在這里沒法使用,因為需要當前用戶的密碼,等我們拿到當前用戶密碼的時候,再回來試試看。
5.4.3 pkexec
這個pkexec是我們的老朋友了,先看一下靶機上的polkit版本。
www-data@lampiao:/tmp$ dpkg -l policykit-1
在通過searchsploit搜索一下看看。
后面兩個EXP是有可能的,一個得通過Metasploit,另一個是一個靜態條件的提權,我們先進入msfconsle搜索一下看看。
就這三個,都試一下吧。
是要配置SESSION的,但是Metasploit里面也沒有說清楚應該怎么配置,其它兩個也都需要配置SESSION,暫時放棄。通過下面的命令將我們前面searchsploit結果中的47543.rb放到指定的metasploit目錄下。
重新進入一下msfconsole。
msf6 > use exploit/unix/webapp47543 msf6 exploit(unix/webapp/47543) > show options
同樣需要設置SESSION啊,放棄。
5.4.4 mtr
沒有我們感興趣的。
5.4.5 pppd
這個也不合適。
5.5 EXP提權
搜索一下Ubuntu和Kernel的對應EXP。
還是有不少的,為了保證準確度,我們不急于利用,先用linpeas看一下。
linpeas也找到了這個CVE-2022-2588的漏洞,前面剛剛用過,這里直接試一下。
嗯,這個是不能直接運行的,直接嘗試在本地編譯一下。
仍然失敗,還是再看看其它的linpeas輸出吧。
有五個高度可行的CVE漏洞,我們逐個試一下。
5.5.1 CVE-2017-16995
直接將45010.c上傳到靶機進行編譯執行。
在靶機上無論如何編譯這個文件bpf.h都飽含不進去,放棄。
5.5.2 CVE-2017-1000112
直接吧https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2017-1000112/poc.c下載下來,上傳到靶機進行編譯。
會報大量的錯誤,放棄。
5.5.3 CVE-2016-8655
直接把40871.c上傳到目標靶機,然后編譯。
$ gcc -m32 40871.c -o 40871 -lpthread
產生了非常多的上述的warning,但是編譯出可執行文件了,執行一下試試看。
執行了好久也沒有成功,都是些類似上述的輸出,暫時放棄。
5.5.4 CVE-2016-5195 dirtycow
這個感覺還要sudo -s,輸入當前用戶的密碼,有些搞不定,暫時放棄。
5.5.5 CVE-2016-5195 dirtycow2
直接吧40839.c上傳到靶機,進行編譯。
$ gcc -pthread 40839.c -o 40839 -lcrypt
破天荒的沒報錯,直接運行一下看看。
按照exp代碼指示,進行下一步,輸入su firefart試試。
感覺像是掛了啊,再次嘗試進去。
估計是機器掛了,ping一下試試看。
果真掛了,重啟一下靶機,再次提權。
又掛了,必然掛掉,靶機上的最后輸出如下圖所示。
對于這個dirtycow2,還有個編號是40847的EXP,我們也用一下試試看,先通過nc吧40847.cpp上傳到目標靶機的/tmp目錄下。然后通過gcc進行編譯。
編譯成功。
說明:這里了說明一下各個參數的含義。
-Wall選項讓gcc提供所有有用的告警;
-pedantic選項允許發出標準C列出的所有告警;
-O2選項是編譯器優化選項的4個級別中的一個(-O0表示無優化,-O1為缺省值,-O3優化級別最高);
-std=c++11選項表示按照2011版C++的標準執行編譯;
-pthread選項表示當用到多線程時調用pthread庫。
然后運行一下編譯的可執行文件。
直接搞出了root的密碼,太牛逼了,試一下切換到root用戶。
貌似搞定了,驗證一下。
6. 獲取flag
搞定。
總結
以上是生活随笔為你收集整理的实战打靶集锦-016-lampiao的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为Jpanel设置背景图片
- 下一篇: Python量化交易09——使用证券宝获