VulnHub-Raven: 2 靶场渗透测试

 

时间:2021.2.15

靶场信息:
地址:https://www.vulnhub.com/entry/raven-2,269/
发布日期:2018年11月9日
目标:Raven 2是中级boot2root VM, 有四个标志要捕获,在多次违反之后,Raven Security采取了额外的措施来加固其Web服务器,以防止黑客入侵。您是否仍然可以违反Raven?

一、信息收集

1、获取靶机IP地址

nmap -sP 192.168.137.0/24

VulnHub-Raven: 2 靶场渗透测试

由探测的结果可知,靶机的IP为192.168.137.130

2、扫描开放的端口和服务

nmap -sS -sV -T5 -A -p- 192.168.137.130

VulnHub-Raven: 2 靶场渗透测试

得到开放的端口信息:

22/tcp    open  ssh     OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
80/tcp   open http   Apache httpd 2.4.10 ((Debian))
111/tcp   open rpcbind 2-4 (RPC #100000)
35264/tcp open status  1 (RPC #100024)

3、网站信息收集

由于开放了80端口,运行了一个web应用,打开浏览器访问看看

VulnHub-Raven: 2 靶场渗透测试

先使用dirb进行目录扫描

dirb的简单使用

参数:

======================== OPTIONS ========================
-a <agent_string> : Specify your custom USER_AGENT.
-b : Use path as is.
-c <cookie_string> : Set a cookie for the HTTP request.
-E <certificate> : path to the client certificate.
-f : Fine tunning of NOT_FOUND (404) detection.
-H <header_string> : Add a custom header to the HTTP request.
-i : Use case-insensitive search.
-l : Print "Location" header when found.
-N <nf_code>: Ignore responses with this HTTP code.
-o <output_file> : Save output to disk.
-p <proxy[:port]> : Use this proxy. (Default port is 1080)
-P <proxy_username:proxy_password> : Proxy Authentication.
-r : Don't search recursively.
-R : Interactive recursion. (Asks for each directory)
-S : Silent Mode. Don't show tested words. (For dumb terminals)
-t : Don't force an ending '/' on URLs.
-u <username:password> : HTTP Authentication.
-v : Show also NOT_FOUND pages.
-w : Don't stop on WARNING messages.
-X <extensions> / -x <exts_file> : Append each word with this extensions.
-z <millisecs> : Add a milliseconds delay to not cause excessive Flood.

这里简单的爆破一下目录

VulnHub-Raven: 2 靶场渗透测试

这里重点看一下vendor目录,一个个点开看了看,然后在PATH文件里找到了第一个flag

VulnHub-Raven: 2 靶场渗透测试

接着在README.md里面看到了PHPMailer(一个功能齐全的PHP电子邮件创建和传输类)

VulnHub-Raven: 2 靶场渗透测试

并且在VERSION里看到了版本为5.2.16

VulnHub-Raven: 2 靶场渗透测试

二、漏洞探测

PHPMailer远程命令执行漏洞

PHPMailer是PHP电子邮件创建及传输类,用于多个开源项目:WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla!等。

PHPMailer < 5.2.18版本存在安全漏洞,可使未经身份验证的远程攻击者在Web服务器用户上下文中执行任意代码,远程控制目标web应用

参考链接:

[PHPMailer任意文件读取漏洞分析]   https://www.freebuf.com/vuls/124820.html [POC​]  https://www.exploit-db.com/exploits/43056 

三、漏洞利用

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

VulnHub-Raven: 2 靶场渗透测试

将对应的py文件拷贝出来

VulnHub-Raven: 2 靶场渗透测试

然后修改exp里面的参数

VulnHub-Raven: 2 靶场渗透测试

然后python 40974.py,如果报错的话,就需要安装requests_toolbelt模块

pip install requests-toolbelt

然后执行成功之后,结果如下:

VulnHub-Raven: 2 靶场渗透测试

接着访问http://192.168.137.130/contact.php,就会生成后门shell.php,然后本地用nc开启监听,再访问shell.php,就成功反弹了一个shell

VulnHub-Raven: 2 靶场渗透测试

这里反弹shell之后有几个小技巧:

  • 由于我们获取的shell并不是一个具有完整交互的shell,因此可能会在使用过程中被挂起,甚至还可能会因为我们的操作失误,例如不小心摁下了 “Ctrl-C”键,这将直接终止我们的整个shell进程让徒劳而归。除了没有正确处理SIGINT(信号)之外,这些“哑”shell还有其它诸多缺点:

  1. 一些命令如su和ssh,需要一个正确的终端才能运行

  1. 通常不显示STDERR

  1. 无法正常使用vim等文本编辑器

  1. 没有完成标签

  1. 没有向上箭头使用历史

  1. 没有jobcontrol等

我们可以使用python提供的pty模块,只需要一行脚本就可以创建一个原生的终端

python -c 'import pty; pty.spawn("/bin/bash")' 
  • 在反弹shell中,可能会出现比如方向键编码错误,如上图所示,这就很烦,怎么解决呢,我们可以更改编码格式为raw

ctrl + z      暂停进程
stty -echo raw   改编码格式
fg 切换回原来进程

ok,具体操作上图已经有了,我们继续找flag

VulnHub-Raven: 2 靶场渗透测试

好像找到了两个可能和flag有关的文件,我们打开看看

VulnHub-Raven: 2 靶场渗透测试

VulnHub-Raven: 2 靶场渗透测试

果然,两个文件都存在flag,我们现在获取的是一个低权限的用户,最后一个flag猜测应该是要获取到root权限才能找得到,很有可能和wordpress有关,我们进入wordpress文件夹里,发现其配置文件

VulnHub-Raven: 2 靶场渗透测试

查看wp-config.php的内容,发现了网站的数据库为mysql,以及mysql的root密码

VulnHub-Raven: 2 靶场渗透测试

四、提权

LinEnum

LinEnum是一款Linux文件枚举及权限提升检查工具,可以帮助渗透测试人员对linux系统漏洞或安全问题进行一键式体检

具体的可参考:

[LinEnum​]  https://github.com/rebootuser/LinEnum/blob/master/README.md 

在kali中下载好

VulnHub-Raven: 2 靶场渗透测试

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

python -m SimpleHTTPServer 8888

VulnHub-Raven: 2 靶场渗透测试

VulnHub-Raven: 2 靶场渗透测试

然后修改一下LinEnum.sh的权限,让它可以执行

VulnHub-Raven: 2 靶场渗透测试

执行之后发现Mysql是用root登录的

VulnHub-Raven: 2 靶场渗透测试

当然也可以使用如下命令:

ps -aux | grep root:查看当前以root用户身份运行的所有进程
ps -ef | grep mysql:查看所有关于mysql的进程
dpkg -l | grep mysql:查看mysql相关安装包的版本

根据之前获得的mysql的root用户的密码,我们可以登录mysql

VulnHub-Raven: 2 靶场渗透测试

mysql的版本果然为5.5.6,然后在exploit-db里找到了可以利用的漏洞信息:

[MySQL 4.x / 5.0(Linux)-用户定义函数(UDF)动态库(2)​]  https://www.exploit-db.com/exploits/1518 

相应的exp它也给出来了,这里就用kali里面现成的:

VulnHub-Raven: 2 靶场渗透测试

exp的具体使用方法也给出了

VulnHub-Raven: 2 靶场渗透测试

然后在kali上进行编译生成so文件

VulnHub-Raven: 2 靶场渗透测试

关于gcc的用法,可以参考:

[GCC 参数详解]  https://www.runoob.com/w3cnote/gcc-parameter-detail.html 

再将生成的so文件上传到靶机上

VulnHub-Raven: 2 靶场渗透测试

然后进入数据库创建数据表 foo,向表中插入二进制数据,然后利用dumpfile函数把文件导出, 再新建存储函数do_system 类型是integer,别名(soname)文件名字

VulnHub-Raven: 2 靶场渗透测试

然后通过do_system函数给find命令所有者的suid权限,使其可以执行root命令

VulnHub-Raven: 2 靶场渗透测试

然后使用find执行 shell,最后找到第四个flag

VulnHub-Raven: 2 靶场渗透测试

总结

第一次接触到了PHPMailer相关的漏洞,对于mysql的udf提权有了更加深刻的认识,当然在渗透的过程中也认识了一些新的、实用的命令和工具。

上一篇:tp5.1 使用 phpmailer 发送电子邮件


下一篇:PHPMailer Gmail服务器错误