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

PortSwigger靶场之SSRF with whitelist-based input filter通关秘籍

解决这个基于白名单输入过滤器的靶场,核心在于利用 URL 解析特性绕过白名单验证,最终访问内部管理界面删除目标用户。

漏洞原理

靶场的库存检查功能通过stockApi参数接收 URL 并发起请求,但开发者部署了基于主机名的白名单过滤(仅允许stock.weliketoshop.net等可信域名)。SSRF 漏洞的关键在于:不同系统对 URL 的解析规则可能存在差异,可通过构造特殊 URL,让前端过滤器认为是合法域名,而后端实际请求的是内部地址(如localhost)。

具体解决步骤

  1. 触发库存检查请求访问任意产品页面,点击 “查看库存”,使用 Burp Suite 拦截该请求(包含stockApi参数

  2. 验证白名单机制修改stockApihttp://127.0.0.1/,观察到请求被拒绝(白名单拦截内部 IP),说明过滤器会提取并验证 URL 中的主机名。

  3. 利用 URL 嵌入式凭据绕过URL 格式支持http://[用户名]@[主机名]的语法。测试发现该格式被白名单接受(因主机名是stock.weliketoshop.net),但后端可能优先解析用户名部分作为实际请求的主机。

  4. 通过双重编码#符号截断主机名

    • #在 URL 中是锚点符号,会截断其后的内容,但直接使用#会被过滤器识别为非法字符。
    • #进行双重 URL 编码# → 第一次编码%23 → 第二次编码%2523
    • 此时 URL 中的%2523在后端解码后会变为#,截断后续的@stock.weliketoshop.net,使实际请求的主机变为localhost
  5. 构造最终攻击 URLstockApi参数修改为:

    http://localhost:80%2523@stock.weliketoshop.net/admin/delete?username=carlos
    • 前端过滤器提取主机名是stock.weliketoshop.net(符合白名单),允许请求通过。
    • 后端解析时,%2523解码为#,截断@stock.weliketoshop.net,实际请求的是http://localhost:80/admin/delete?username=carlos,从而删除用户carlos

总结

通过利用 URL 的用户名@主机名语法和双重编码#符号,成功绕过白名单对主机名的验证,将请求重定向到内部localhost的管理界面,实现 SSRF 攻击。核心是利用前后端 URL 解析规则的差异,构造 “前端合法、后端实际攻击” 的特殊 URL。

http://www.dtcms.com/a/593360.html

相关文章:

  • 太原网站快速排名提升手机商城网站制作公司
  • Redis 核心命令速查表
  • 中药饮片批发市场如何提升产品质量以迎合客户需求?
  • k8s中应用容器随redis集群自动重启
  • C语言结构体入门与实践:打造你的“数据百宝箱”
  • Docker核心概念与实战指南
  • 视频网站开发问题整人网站建设
  • 【Java】面向对象编程
  • 作业11.9
  • 西安网站开发公司网站服务器租用价格
  • 北京市城乡结合部建设领导小组办公室网站聊城做网站的公司效果
  • 百家号网站开发属于什么领域广东省住房和城乡建设局官网
  • MATLAB的加权K-means(Warp-KMeans)聚类算法
  • Python 图像处理库 scikit-image:从原理到实战
  • 帆软8.0报表,导出pdf无法显示图片。
  • Vue Router (命名视图)
  • CTFshow-web208
  • 美化网站代码合伙合同网站建设协议
  • 网站域名购买方法域名地址查询网
  • 【剑斩OFFER】算法的暴力美学——搜索插入位置
  • 滨州市住房和城乡建设局网站自己做网站地址
  • ctfshow-web213
  • 【Rust】C和Rust交叉编译
  • 企业网站建设长沙找工作临时工
  • 六安网站建设报价方案陕西住房和建设厅网站
  • Elasticsearch:如何为 Elastic Stack 部署 E5 模型 - 下载及隔离环境
  • 第3章,[标签 Win32] :创建窗口01,CreateWindow 函数初识
  • FreeRTOS操作系统
  • 成都 在线 网站建设wordpress怎么改标题和meta
  • 正确理解类中的公共方法、内部方法和私有方法