下载地址: Raven: 1 ~ VulnHub
1.配置环境
因为这个吧唧下下来就是NET不需要再配置环境,后面遇到了再说
2.主机发现
我们先查看kali的ip
然后使用命令nmap 目标网段/子网掩码可以看到跟kali一个网段的ip还有192.168.139.129,他开启了一些服务,我们接着扫描,我们先用su命令切换成root用户,使用nmap更多的参数进行扫描
可以看到我们的吧唧是开启了web服务的,我们可以访问一下他的服务
3.访问服务
我们访问他的80服务,同时进行目录扫描,在网站中进行翻看,看看源码等等之类有没有可以利用的地方
在service模块找到了第一个flag,这时我们的目录也已经扫完了
我们逐个去翻看这些目录,当我们在访问wordpress目录时,我们发现URL栏已经变了,跳转的url里面出现域名,而且我们无法进行访问
这时候我们可以判断出来有域名,我们就需要进行本地解析,就是修改主机的hosts文件(他的路径为"C:\Windows\System32\drivers\etc\hosts"),我们先用管理员权限打开一个记事本,再打开hosts文件,添加"ip 域名"这样的格式到结尾
保存后退出就可以进行正常访问,因为他会把192.168.139.129解析成raven.local这个域名,然后根据我们扫描出来的目录,我们在大大的网站里面挖呀挖呀挖
4.反弹shell
然后我们利用weber敏锐的嗅觉嗅到了PHPMailerAutoload有问题,我们去google一下
小黑子漏出鸡脚了,那个version版本里面写的应该就是这个phpmailer的版本,即5.2.16
我们利用searchsploit工具(他是一个开源的漏洞利用数据库工具,用于搜索和浏览各种漏洞利用代码)搜索到了phpmailer的一些可以进行漏洞利用的程序,我们择优选择一个进行利用
然后我们审计他的利用脚本,分为注释和代码两部分
根据注释修改代码,让他能针对我们的吧唧进行攻击,我们知道phpmailer是利用的邮件攻击方式,其/contact.php正是跟邮件有关的页面,所以我们进行攻击他
执行脚本
监听我们指定的3716端口
然后我们根据步骤先触发shell再反弹shell
可以看到我们反弹shell成功
查看本机python版本
我们以看到刚刚的执行命令的方式跟我们平时的不太一样,我们这时候利用python命令执行python解释器的一些命令,修改当前执行程序的方式为交互式执行程序的方式,但是这种方式跟我们平时使用的命令行操作方式不一样,他并不能补全文件名按上下浏览历史命令,非常的不方便(参考:https://www.cnblogs.com/sainet/p/15783539.html)
一顿操作后我们已经成功提升shell为我们平时使用的那种了
5.udf提权
我们使用netstat看一下tcp和udp开启的服务,可以发现他开启了3306端口,也就是这台主机里面存在MySQL。我们现在的用户是www-data,权限非常的低,这时候我们就需要提权,而刚刚好有个MySQL,众所周知,我们网站要连接数据库的话肯定会设置他账号密码,我们在大大的网站里面挖呀挖呀挖
成功翻到我们的账号密码,拿到账号密码后就进行登录
成功登入我们的MySQL,又众所周知,数据库数据库,里面肯定有很多重要的数据,我们继续在小小的数据库里挖呀挖呀挖
我们凭借着一个weber敏锐的嗅觉,锁定了嫌疑表(当然多翻翻也是没有问题的)
我们成功的拿到了用户名和密码,然而这个密码长得不像密码,我们猜测长得这么丑的应该是md5,我们直接打开一个md5的在线网站
我们发现Michael的密码并不能破解,但Steven的密码破解出来是pink84,我们现在拿到了一个账号和他对应的密码,但是他是哪儿的账号和密码呢?回到最开始的扫描端口那一步,我们看到他开启了22端口,对应的tcp的ssh服务(ssh服务主要用于登录到远程主机执行命令)
这里我们使用ssh服务成功登录上了steven账户
我们可以进行MySQL提权,这里我们先做一些准备工作,知道了我们需要把dll文件上传到plugin目录下,知道了我们可以导入导出到任何目录下,知道了plugin的目录,知道了系统是64位的
找到对应的利用文件,因为是sqlmap自带的所以他进行了加密,我们需要利用他自带的程序进行解密
这里我们已经拿到了可以利用的so文件(windows的利用文件为dll,linux的利用文件为so)
利用MySQL生成一个hex编码后的txt文件,然后直接利用dumpfile进行上传
这里我们直接利用MySQL生成的文件,我们还可以利用其他方式上传文件
(1)本地http上传
我们在本地开启http服务
在吧唧里面下载,这里需要注意的是,我们的服务是在桌面开的,那么我们访问的也是桌面这个目录,如果需要加端口,那么也是url:端口号的格式,这里我们使用http服务成功下载我们需要的文件
(2)scp命令
利用scp命令先写入到tmp目录下,然后再用MySQL的dumpfile写入到目标目录下,tmp目录一般都可写,这里我们知道MySQL的dumpfile可以随便写,所以这里我们曲线救国
言归正传,开始我们的利用
这仅仅是能在MySQL中进行root命令
我们利用MySQL的udf提权后修改find的权限为root,然后在find目录下启动一个新的shell,此时就具有root权限,在MySQL中仅仅是一个单向的shell,并不能进行交互,所以我们需要进一步提升shell,此时我们在find的shell下可以更改root的密码然后登录他的ssh,至此,这台吧唧我们已经拿到了最高的权限——root
6.python提权
这里我们使用ssh服务成功登录上了steven账户,除了用MySQL的udf进行提权,还可以用别的
这里我们得到一个重要的信息就是python可以执行sudo命令,就像刚刚提升shell一样
这条命令的意思,以root权限运行python命令,即生成一个具有root权限的交互式shell
总结:合理运用各种各样的工具,总结一下大概的思路就是主机发现,扫描端口确定开启哪些服务,然后审计代码,找到漏洞点,合理运用工具进行漏洞利用,想办法提权……当然,在自己开发网站的过程中,一定要重视对数据库的保护和对目录权限的保护。还有一个很重要的点,不要忘记找flag!!!提到root后回头一看,只有最初的源码的flag
新手上路,请多指教