dc-2靶机下载地址:http://www.five86.com/downloads/DC-2.zip
本次使用到的环境:
- VMware15.5
- finalshell
- kali-linux-2022.4
- dc-2.ova
- kaliIP:192.168.0.139
信息搜集
首先确认自己kali的ip
本次实验靶场和kali是在同一内网下
nmap扫描
使用nmap扫描来发现靶场主机
nmap -T4 -sS 192.168.0.0/24
#"*"也可以
发现DC-2的靶场主机IP为192.168.0.141
使用更多参数进行针对性的扫描,获取详细信息
nmap -T4 -sN -p- -A 192.168.0.141
这里发现两个端口http:80,ssh:7744看来ssh端口被更改过
其他信息暂时没有太大价值
DNS配置
使用浏览器访问发现会强制域名解析,无法直接访问
需要手动配置本地的DNS配置文件
liunx本地DNS配置文件在 etc/hosts
windows本地DNS配置文件在C:\Windows\System32\drivers\etc\hosts
在本地文件添加DNS信息
IP dc-2
如图
配置并保存后再次访问即可
web目录扫描
可以正常访问后先扫描web目录
dirb http://dc-2/
发现存在管理员登陆页面
根据路径文件名特征可以判断该web站点CMS为wordpress
同时wappalyzer插件也确认这一点
flag-1
进入首页后发现flag1
提示我们可以爆破,但需要搞特殊字典
制作字典
使用wpscan枚举出用户名
wpscan --url http://dc-2 -e u
发现三个用户,将用户名保存在一个文本中作为用户名字典
admin
jerry
tom
下面制作密码字典
首先创建一个文本来保存生成的密码字典
使用cewl工具爬取网站特征,生成特征字典
cewl http://dc-2 -w /home/dc_2_wppassword.txt
web渗透阶段
登录爆破
在完成账户名和密码的字典后使用wpscan自带的功能进行爆破
wpscan --url http://dc-2 -U 用户名字典 -P 密码字典
爆破得到了tom,jerry的账户名和密码
jerry/adipiscing
tom/parturient
下面访问登陆页面登陆账户
这里登录发现jerry的账户中存在flag-2
flag-2
根据flag2的提示,我们需要换个方向搞
主机渗透阶段
远程登录
之前查到两个端口80&7744
7744为被修改后ssh端口
使用九头蛇对7744端口爆破得到了tom用户的连接密码,与前端登录密码一致
尝试使用前端账户进行连接一下
成功连接并发现flag-3
但是tom的shell是受限的rbash,权限极低很多命令无法执行
查询目前可以使用的命令,发现vi可以查看flag-3的内容
compgen -c
flag-3
vi flag3.txt
这里提示我们找jerry
rbash逃逸
前提是我们要绕过当前的rbash限制
使用vi 设置shell解释器来实现rbash逃逸
在vi打开的flag3.txt运行下行命令
:set shell=/bin/bash
#回车,接着写
:shell
可以发现当前提示从rbash变为bash
rbash逃逸完成后即可访问jerry目录发现flag4
cat在bash中是可以使用的
在这里需要配置一下环境变量即可使用
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
flag-4
flag4内容是对jerry角色说的,暗示咱们要切换jerry用户完成后续操作
使用之前爆出来的密码直接切换即可
su jerry
adipiscing
提权
flag4文中提到git,暗示使用git提权
对root用户进行提权
先查看当前jerry账户有哪些工具可以用来提权
sudo -l
发现jerry用户在sudoers文件中被授权执行的命令。
其中git命令可以免验证的情况下借用root权限执行,满足git越权的条件。
sudoers文件定义了哪些用户可以以root权限或其他特定用户权限执行命令
sudo git help config
!/bin/bash
- 在Linux中,sudo git help config命令用于获取Git的配置相关帮助信息。
- 通过在git命令之前添加sudo,可以以root权限运行Git命令。
- help是Git的内置命令,用于获取指定命令的帮助文档。
- config是Git的一个重要命令,用于配置Git的各种设置,例如用户名、邮箱、编辑器等。
- sudo git help config命令将以root权限显示有关Git配置命令(config)的帮助文档
在这里指定bash为解释器来达到通过执行git工具将shell由jerry切换为root
从而达到提权的效果
在拿到root权限后在root文件夹内即可得到final-flag
final-flag
考察点
cewl使用
wpscan使用
liunx环境变量配置
rbash逃逸
git提权
- cewl
爬取网站特征生成字典
cewl URL -w 文本字典
- wpscan
针对wordpress框架进行渗透的工具
wpscan --url URL -e -u
#-e表示枚举类型,u表示用户名。这两个配合使用是枚举用户名
wpscan --url URL -U 用户名字典 -P 密码字典
#爆破账户
- liunx环境变量配置
liunx解释器功能支持配置,管理基础的shell权限分配
export PATH=$PATH:路径
#常用基础命令路径:/bin/,/usr/bin/
- rbash逃逸
rbash是在bash基础上被设置限制的shell,一般权限极低
遇到rbash首先需要判断shell可执行命令数量来判断有效的逃逸方法
本次使用vi来set shell从而绕过rbash
- git提权
git提权的前置条件为:
- git工具具有sudo权限
- 当前shell为sh或bash