攻击机kali:192.168.56.108
靶机dc-8:192.168.56.110
扫描同一网段下存活主机
arp-scan -l
扫描靶机开放端口
nmap -sV 192.168.56.110
发现开放80端口(http服务)和22端口(ssh服务),打开浏览器进行访问,又是drupal的页面,通过wappalyzer插件得知此次的cms为drupal 7,dc-7靶机的是drupal 8,页面也有一些不同。
这里有三个页面供我们点击,随便点一个
发现url中发生了变化,出现了页面参数,且点击另外一个参数值发生改变,此时猜测存在sql注入漏洞,在url中的参数中加个引号进行判断是否存在注入点
发现报错了,说明存在sql注入漏洞。那我们就可以使用sqlmap跑一下
爆数据库
sqlmap -u http://192.168.56.110/?nid=2 --dbs
爆d7db库下的表
sqlmap -u http://192.168.56.110/?nid=2 --tables -D"d7db"
看到一共有88个表,其中有个users表,接着爆users表下的字段
sqlmap -u http://192.168.56.110/?nid=2 --columns -T"users" -D"d7db"
接着获取uid name pass 的数据
sqlmap -u http://192.168.56.110/?nid=2 -C"uid,name,pass" -T"users" -D"d7db" --dump
发现两个用户名和其对应的密码,复制并保存到一个文件中,尝试用john进行解密,发现admin对应的加密密文无法解密出来,john对应的密文解密出来得到turtle
因为我们知道它是开启了ssh服务的,所以我们尝试利用ssh进行远程登录
发现无法登录成功,那应该还是在网站的登录页面进行登录。用dirb进行扫描
dirb http://192.168.56.110
用刚刚得到的用户名和密码进行登录。登录成功后,随便点击看了看,发现在contact us >webform >form settings中发现可以上传php代码
尝试上传一个反弹shell的代码
编辑好之后点击保存,kali终端中开启监听
开启监听之后,在contact us中提交一个留言来反弹shell
可以看到,提交之后在kali成功监听到靶机的活动,拿到shell,用python代码优化终端显示
python -c 'import pty;pty.spawn("/bin/bash")'
此步骤是为了方便观看,清晰的知道处在哪个目录。接着用find命令查找具有suid权限的命令
find / -user root -perm -4000 -print 2>/dev/null
发现exim有suid权限,查看它的版本信息
接着利用msf根据刚刚得到的4.89版本查找可以利用本地提权的方法
发现了一个符合条件的,这个46996.sh脚本就是我们所需要的,我们先把这个脚本文件内容复制到kali机里,这里我通过在exploit-db.com这个漏洞利用数据库里复制里面的内容到kali文件系统中的/var/www/html目录下并重命名为exim.sh
之前我们通知指纹信息收集得目标网站的web服务器为apache,所以我们想要从kali上传脚本文件到dc-8中,我们得先在kali中开启apache服务
service apache2 start
开启了之后在靶机shell上用wget命令下载脚本文件到dc-8服务器上
此时我们发现提示说permission denied,操作被拒绝了,这应该是权限不够造成的,所以我们可以尝试在一个低权限的目录下进行下载(tmp临时文件夹)
此时我们发现下载成功了,成功将脚本文件上传到dc-8上,接着就是要执行这个脚本文件来进行提权操作,想要执行这个脚本文件就必赋予它执行的权限,通过
chmod 4777 exim.sh
这个命令来赋予权限,4777是所有权限都赋予给它。
接着我们来运行这个脚本文件
./exim.sh
执行之后发现还是普通用户,并没有提取到root权限,返回到脚本文件中仔细观察一下它的使用规则
这里有两条规则,既然单独运行脚本文件行不通,那就按照使用说明加几个参数,猜测第一个应该也是行不通的,因为它后面备注着default,所以我们直接试着加上第二天规则的参数
./exim.sh -m netcat
成功拿到root权限,接着进入到root目录,拿到flag
dc-8靶机结束~~