运行环境:
靶机:网络连接方式设为桥接模式,ip地址:10.9.136.55
攻击机:同网段下的kali,ip地址10.9.136.123
开始渗透
- 获取靶机ip地址
nmap -sP 10.9.136.0/24 -sP 进行ping扫描(不进行端口扫描)
2.扫描端口
nmap-A 全面扫描 使用-A参数可以进行全面扫描,包括TCP SYN扫描,UDP扫描,操作系统识别和服务识别等 nmap-sV服务识别 Nmap可以通过分析目标主机的服务响应来识别其服务类型和版本号使用-sV参数可以进行服务识别 nmap-O操作系统识别 Nmap可以通过分析目标主机的TCP/IP栈来识别其操作系统类型使用-O参数可以进行操作系统识别
3.有四个开放的端口,其中80端口是apache服务的,说明可以进行访问。
4.使用浏览器插件wappalyzer查看发现是使用Drupal作为CMS
百度之后发现Drupal是有漏洞的,并且可以利用
5.使用msfconsole 进行漏洞利用
search 查找模块,Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。
这边选择1号漏洞
1号漏洞就是drupal cve-2018-7600
6.查看配置, show options 查看use使用模块可配置的参数,只需要设置靶机地址就可以运行了,然后使用run运行脚本
7.执行shell,再使用python反弹一个交互的shell
当我们拿到一个webshell的时候,我们能够执行一些命令,但是这些命令都是非交互的,也就是说不存在上下文的概念。当我们想使用vim、top等命令时,webshell就无能为力了。
那我们怎么获取一个可交互的webshell呢? python pty 一般我们都会使用nc来接收反弹来的shell,只需要在目标上(以linux为例)执行,本地接收一下就ok了,但是反弹回来的shell,或多或少都会存在问题,比如当我想使用top命令时就会提示没有 tty
。简单的来说就是没有上下文环境,这样的话,vim
,sudo
等操作都做不了,有时候还需要其他工具,很麻烦。但是如果发现对方机器上有 python 的话,我们可以:python -c 'import pty; pty.spawn("/bin/bash")'可以实现简单的tty
8.在当前目录下找到flag1.txt
9.查看flag1.txt,提示我们寻找配置文件
10.在当前目录下sites/default/settings.php找到了配置文件
在settings.php文件当中找到了flag2和数据库的密码和用户名
使用刚刚获取的数据库用户名和密码登录数据库
在drupaldb数据库里面找到一个users的表格
在users表中找到了用户名和密码
将admin的密码改为123456
使用Drupal自带的脚本生成密文
进入数据库将admin的密码改为刚刚生成的密文
11.查看已经成功更改,回到浏览器进行登录,密码使用刚刚更改的123456,登录成功,在Content目录下找到了flag3
点击查看,发现提示 passwd
查看所有用户的密码
12.看到一个flag4的用户是在home目录下,在flag4的家目录里面找到了flag4.txt,提示说可不可以使用相同的方法找到root目录下的flag
13.查看用户的usid看到一个find,我们可以通过find来提取到root
使用工具gtfo来查看find提权命令
14.执行命令之后成功提取到root
find-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。
15.切换到root目录下查看flag