改变的确很难,但结果值得冒险
本文如有错误之处,还请各位师傅指正
目录
一.gopherus概述
二.gopherus安装使用
三.gopherus覆盖的服务
四.使用案例
web359:
web360:
一.gopherus概述
Gopherus是一个专为生成Gopher协议Payload的工具,通过构造特定的Gopher协议数据包,攻击者能够利用SSRF漏洞对内网资源进行访问,甚至可能进一步执行远程代码(Remote Code Execution,RCE)。
二.gopherus安装使用
linux中,git下载
git clone https://github.com/tarunkant/Gopherus.git
切换到gopherus目录下
cd Gopherus
三.gopherus覆盖的服务
- MySQL(端口3306)
- PostgreSQL(端口5432)
- FastCGI(端口9000)
- Memcached(端口11211)
- Redis(端口6379)
- Zabbix(端口10050)
- SMTP(端口25)
四.使用案例
MySQL
查看源码
这个隐藏的表单提交,name属性值是一个重定向链接
我们尝试抓下数据包:
这里都没有password参数,是无密码的mysql登录
所以在returl参数这我们用gopherus进行ssrf伪造
select '<?php eval($_POST['cmd']);?> into outfile '/var/www/html/shell.php'
这是sql注入写文件操作,将一句话木马写入到目标shell.php文件
into outfile和into dumpfile 作用一样
修改returl参数提交(参数要进行url特殊字符编码,因为%xx的内容会被urldecode)
执行ls /命令,得到flag.txt文件
Rides
先介绍一下什么是redis
redis全称:Remote Dictionary Server(远程字典服务器)。是完全开源免费的,用C语言编写的, 遵守BSD协议。是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。
虽然题目已经给了打redis,但我们可以用dict协议测出来端口(假设我们不知道的情况下)
采用爆破即可,这里使用burpsuit的intruder模块;
只有80端口(http协议)和6379端口(redis)返回值不一样
使用http协议得不到flag,所以排除;
于是乎我们便可以用gopher协议来利用redis服务器得到webshell
在/var/www/html/目录下生成了shell.php木马文件
得到flag