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

渗透测试之SSRF漏洞原理危害、产生的原因、探测手法、防御手法、绕过手法、限制的手段

文章目录

    • SSRF说明:
      • SSRF攻击流程
      • 原理:
      • 危害:
      • SSRF产生的原因
    • ssrf漏洞利用{危害}
      • 探测手法是否存在SSRF漏洞
    • 如何找ssrf漏洞位置
      • 分享连接地址
      • google hack url关键字
    • PHP语言中可能出现的ssrf漏洞函数
      • file\_get\_contents
      • sockopen()
      • curl\_exec()
    • SSRF防御
      • 1、过滤返回信息
      • 2、统一错误信息
      • 3、限制请求的端口为http常用的端口
      • 4、防火墙策略
      • 5、禁用不需要的协议
      • 6、url网址写死
    • SSRF绕过手法
      • 1、限制为http://www.xxx.com 域名时(利用@)
      • 2.采用短网址绕过,也叫做url短链接
      • 3.采用进制转换
      • 4.利用特殊域名
      • 5.利用\[::\]
      • 6.利用句号
      • 7、CRLF 编码绕过
      • 8.利用封闭的字母数字
    • 常见限制
      • 1.限制为http://www.xxx.com 域名
      • 2.限制请求IP不为内网地址
        • 3.限制请求只为http协议

SSRF说明:

  • CSRF:跨站请求伪造,客户端请求伪造

  • SSRF(Server-Side Request Forgery:服务器端请求伪造)

    • 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
  • 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统

  • 正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统

SSRF攻击流程

  • 外网是服务攻击到

  • 内网ip是不联网的(服务器)

  • 如果含有ssrf漏洞

  • Pyload

  • 内网服务器

原理:

  • SSRF 形成的原因:

    • 大都是由于服务端提供了
    • 从其他服务器应用获取数据的功能__且没有对目标地址做过滤与限制
  • 黑客操作服务端从指定URL地址获取网页文本内容

    • 加载指定地址的图片,下载等等

    • 利用的是服务端的请求伪造【SSRF】

    • ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。

外网 -> 如果含有ssrf漏洞{中间外网服务器} –> pyload -> 内网服务器

  • 本机 公网 【攻击主机】
  • Win2003 php 公网 lan地址 【外网服务器 商城】
  • Win lan地址 【和外网服务器商城相连接】

危害:

  • 主要是用来进行内网进行探测

    • 也可以说是内网信息收集

    • 存货主机和开发端口。

    • 基于这一步开展下一步的后渗透行为

  • 访问网址是没意义的 我们需要探测内网主机端口开放情况以及存活情况。


SSRF产生的原因

  • 就是用户提交过来的数据没有做过滤

  • 我们就可以改成内网ip地址手动去探测一下

    • 这个的前提是我们做好信息收集拿到了真实的IP

ssrf漏洞利用{危害}

  1. 可以对外网服务器所在的内网进行__端口扫描_,获取一些服务__的banner信息__mysql5.5.53_

  2. 有时候还可以攻击运行在内网或本地的应用程序; 内网中其它的主机 比如通过ssrf给内网的redis写定时任务,实现反弹shell;

  3. 对内网web应用进行指纹识别;

  4. 攻击内外网的web应用,比如struts2,sql注入等;

  5. 利用file协议读取本地文件等;

  6. 各种伪协议进行探测:http,file,dict,ftp,gopher等 伪协议;


探测手法是否存在SSRF漏洞

  • BP攻击器 如果对方开启了ip白名单或者是请求频率限制如何处理?

    • 手工探测是非常麻烦勒

    • 这个时候我们就可以借助自动化工具去探测比如说BP

如何找ssrf漏洞位置

  • 各大电商分享地址 这样就是请求地址转发的形式

    • 其实这样就是一个服务端的ssrf漏洞

    • 探测分享网址的服务端地址 探测服务端服务器。

分享连接地址

  • 图片、文章收藏功能:此处的图片、文章收藏中的文章收藏
  • _就类似于分享功能中获取URL地址_中title以及文本的内容作为显示,目的还是为了更好的用户体验。

    • 例如title参数是文章的标题地址,代表了一个文章的地址链接,请求后返回文章是否保存,收藏的返回信息。

    • 如果保存,收藏功能采用了此种形式保存文章,则在没有限制参数的形式下可能存在SSRF。

    • http://title.xxx.com/title?title=http://title.xxx.com/as52ps63de

google hack url关键字

  • 从URL关键字中寻找

    • 利用google 语法加上这些关键字去寻找SSRF漏洞。

    • Inurl: .php?url=

share

wap

url

link

src

source

target

u

display

sourceURl

imageURL

domain


PHP语言中可能出现的ssrf漏洞函数

  • 代码审计会发现的漏洞 需要看对请求参数是否过滤。

file_get_contents

  • 下面的代码使用file_get_contents函数从用户指定的url获取图片

    • 然后把它用一个随机文件名保存在硬盘上,并展示给用户
<?php if (isset($_POST['url'])) { $content = file_get_contents($_POST['url']); $filename ='./images/'.rand().';img1.jpg'; file_put_contents($filename, $content); echo $_POST['url']; $img = "<img src=\"".$filename."\"/>"; } echo $img; ?>

sockopen()

  • 以下代码使用fsockopen函数实现获取用户制定url的数据(文件或者html)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据
<?php function GetFile($host,$port,$link) { $$fp = fsockopen($$host, intval($port), $errno, $errstr, 30); if (!$fp) { echo "$errstr (error number $errno) \n"; } else { $$out = "GET $$link HTTP/1.1\r\n"; $$out .= "Host: $$host\r\n"; $out .= "Connection: Close\r\n\r\n"; $out .= "\r\n"; fwrite($fp, $out); $contents=''; while (!feof($fp)) { $$contents.= fgets($$fp, 1024); } fclose($fp); return $contents; } } ?>

curl_exec()

  • cURL这是另一个非常常见的实现,它通过 PHP获取数据。文件/数据被下载并存储在“curled”文件夹下的磁盘中,并附加了一个随机数和“.txt”文件扩展名
<?php if (isset($_POST['url'])) { $link = $_POST['url']; $curlobj = curl_init(); curl_setopt($curlobj, CURLOPT_POST, 0); curl_setopt($curlobj,CURLOPT_URL,$link); curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1); $result=curl_exec($curlobj); curl_close($curlobj); $filename = './curled/'.rand().'.txt'; file_put_contents($filename, $result); echo $result; } ?>

SSRF防御

  • 1、过滤返回信息

    • 验证远程服务器对请求的响应是比较容易的方法。

    • 如果web应用是去获取某一种类型的文件

    • 那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

  • 2、统一错误信息

    • 避免用户可以根据错误信息来判断远端服务器的端口状态
  • 3、限制请求的端口为http常用的端口

    • 比如,80,443,8080,8090。
  • 4、防火墙策略

    • 内网ip设置黑名单

    • 避免应用被用来获取获取内网数据

    • 攻击内网。

  • 5、禁用不需要的协议

    • 仅仅允许http和https请求

    • 可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

  • 6、url网址写死

    • 固定几个网址

    • 其他网址一律不允许访问


SSRF绕过手法

1、限制为http://www.xxx.com 域名时(利用@)

  • 可以尝试采用http基本身份认证的方式绕过

  • 如:http://www.aaa.com@www.bbb.com@www.ccc.com,在对@解析域名中,不同的处理函数存在处理 差异 在PHP的parse_url中会识别www.ccc.com,而libcurl则识别为www.bbb.com。这个要分语言

2.采用短网址绕过,也叫做url短链接

  • 比如百度短地址https://dwz.cn/ 有很多在线网站就能帮我们的网址转换为url短链接形式。
  • 原理就是:
    • 当请求这个短链接的时候,url短链接提供商的服务器先解析一下对应的真实url
    • 然后拿到实url之后再发起访问
    • 这样提交的数据看不到真实url
    • 用来绕过后端代码对网址的过滤,所以url短链接经常用于攻击行为和钓鱼行为等。
  • 黑客更多用这种方法来进行绕过

3.采用进制转换

  • 127.0.0.1 八进制:0177.0.0.1。
  • 十六进制:0x7f.0.0.1。
  • 十进制:2130706433.

4.利用特殊域名

  • 原理是DNS解析。
    • xip.io可以指向任意域名,即 127.0.0.1.xip.io,可解析为127.0.0.1

5.利用[::]

  • 可以利用[::]来绕过localhost
    • http://169.254.169.254>>http://[::169.254.169.254] # 这种写法是ipv6的地址写法,
    • 只要对方支持ipv6的ip地址访问就行,需要配置才行
    • 比如nginx就可以配 置ipv6来访问

6.利用句号

  • 127。0。0。1 >>> 127.0.0.1
  • 比如:
    • ping 127。0。0。1,
  • 注意,linux系统才能识别,windows系统不能识别

7、CRLF 编码绕过

  • %0d->0x0d->\r回车 %0a->0x0a->\n换行 进行HTTP头部注入 example.com/?
  • url=http://eval.com%0d%0aHOST:fuzz.com%0d%0a

8.利用封闭的字母数字

利用Enclosed alphanumerics,有些输入法直接就可以输入这样的封闭字符

ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ >>> example.com http://169.254.169.254>>>http://[::①⑥⑨。②⑤④。⑯⑨。②⑤④] List:

① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳

⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇

⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛

⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴

⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿

比如ping ①②⑦.⓪.⓪.① 注意,也是linux系统支持


常见限制

1.限制为http://www.xxx.com 域名

采用http基本身份认证的方式绕过,

即@ http://www.xxx.com@www.xxc.com

2.限制请求IP不为内网地址

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

(1)采取短网址绕过

(2)采取特殊域名

(3)采取进制转换

3.限制请求只为http协议

(1)采取302跳转 https–>http

(2)采取短地址

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取


http://www.jsqmd.com/news/115076/

相关文章:

  • 从夯到拉!大模型热门岗位揭秘!传统程序员如何破局,逆袭成为 AI 时代佼佼者
  • 2025/12/20 今天学的day8的lecode的242
  • 进口热门维生素D3十大榜单:2025高口碑维生素D3品牌推荐 - 博客万
  • Open-AutoGLM定位修正黑科技(仅限内部使用的3个参数调整技巧)
  • Open-AutoGLM操作序列优化进阶:如何用动态规划实现生成路径最优解?
  • 这可能是全网最详细的黑客网络钓鱼攻击教程,一文教会你网络钓鱼的各种骚操作!
  • 位运算表
  • 渗透测试之文件上传漏洞目录穿越漏洞教程,网络安全零基础入门到精通教程!
  • Wireshark流量分析例题详解,网络安全零基础入门到精通实战教程!
  • MySQL中通过关联update将一张表的一个字段更新到另外一张表中
  • 成长路线-互联网职级体系(以阿里为例)
  • Web渗透测试之信息收集—高阶手法CDN绕过方法大全,找到你想要的真实IP地址!
  • 在PHP中实现接口多继承有哪些优缺点?
  • 2025年啤酒生产设备生产厂家权威推荐榜单:精酿啤酒设备厂家/啤酒厂设备/大型啤酒厂设备源头厂家精选 - 品牌推荐官
  • 如何做接口测试?
  • 世界上最流行的黑客漏洞扫描工具Nessus保姆级安装教程,网络安全零基础入门到精通实战!
  • ​2025胶原蛋白肽测评榜单:6大品牌真实效果报告,仙次元紧致提亮逆转肌龄 - 博客万
  • 科普一下:黑客盗QQ究竟是怎么回事?真的是用技术手段做到的吗?
  • 如何在PHP中实现接口的多继承?
  • android13避免开机进入安全模式
  • 网络安全新手入门—简单用MSF黑客工具渗透安卓手机(小白的第一次黑客渗透)
  • Spring Boot 机制一: 自动配置原理源码级深度讲解 - 教程
  • 收藏!一文读懂RAG技术核心(附大模型从入门到实战全套学习礼包)
  • 渗透测试之kali自带的SQLmap详解—重点sqlmap--tamper 使用方式详解,搞完你就很nice了
  • 【每天了解一个AI证书】CAIE认证大纲设计解析(2026年)
  • 2025年标准氩气生产商权威推荐榜单:标准高纯氩气/高纯氩气/氩气纯度标准源头厂家精选 - 品牌推荐官
  • 【收藏向】大模型系列:从原理到代码,零基础吃透LLM训练与推理
  • 7D互动影院革新娱乐体验,探秘5D影院设备生产厂家
  • 重磅消息!ESXi 8.0 系列推出ESXi 8.0 Update 3h 更新重要版本啦
  • 2025年12月防冻液,45度橙色防冻液,超流体散热快防冻液厂家权威推荐,散热防冻双效实力盘点 - 品牌鉴赏师